mirror of https://git.musl-libc.org/git/musl
Browse Source
for conformance, two functions should not have the same address. a conforming program could use the addresses of getc and fgetc in ways that assume they are distinct. normally i would just use a wrapper, but these functions are so small and performance-critical that an extra layer of function call could make the one that's a wrapper nearly twice as slow, so I'm just duplicating the code instead.rs-1.0
4 changed files with 25 additions and 6 deletions
@ -0,0 +1,13 @@ |
|||||
|
#include "stdio_impl.h" |
||||
|
|
||||
|
int getc(FILE *f) |
||||
|
{ |
||||
|
int c; |
||||
|
if (f->lock < 0 || !__lockfile(f)) |
||||
|
return getc_unlocked(f); |
||||
|
c = getc_unlocked(f); |
||||
|
__unlockfile(f); |
||||
|
return c; |
||||
|
} |
||||
|
|
||||
|
weak_alias(getc, _IO_getc); |
||||
@ -0,0 +1,12 @@ |
|||||
|
#include "stdio_impl.h" |
||||
|
|
||||
|
int putc(int c, FILE *f) |
||||
|
{ |
||||
|
if (f->lock < 0 || !__lockfile(f)) |
||||
|
return putc_unlocked(c, f); |
||||
|
c = putc_unlocked(c, f); |
||||
|
__unlockfile(f); |
||||
|
return c; |
||||
|
} |
||||
|
|
||||
|
weak_alias(putc, _IO_putc); |
||||
Loading…
Reference in new issue