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