* Vineet Gupta:

> Here's a simple test case which shows the problem:
>
>       #define _GNU_SOURCE
>       #include <stdio.h>
>       #include <stdlib.h>
>       #include <errno.h>
>
>       void main(void)
>       {
>               const char *this_func = "finite";
>               char *test_name;
>
>               errno = 0;
>               if (asprintf (&test_name, "%s (%s)", this_func, "my-str") == -1)
>                       abort ();
>
>               printf("%d\n", errno);  // <-- prints 11
>       }
>
> The errno unconditionally being set to EAGAIN seems to have been
> introduced in commit 568ceebf6adfc58c64a95133311268db6 ("Fix
> infinite loop when fopencookie custom write returns 0 on error")
> bakc in 2016.

For functions specified by standards, successful calls can alter errno
unless specified otherwise.  asprintf is not a standardized function,
but it is reasonable to expect that a similar rule applies.
_______________________________________________
devel mailing list
[email protected]
https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel

Reply via email to