The following program (errno.c) reports errno=2 when run using "tcc -run errno.c" #include <errno.h> #include <stdio.h> int main(void) { printf("errno=%d\n", errno); return 0; }
Unified · Split
| @@ -127,6 +127,7 @@ LIBTCCAPI int tcc_run(TCCState *s1, int argc, char **argv) · 126 unmodified lines | ||
| 127 | 127 | for (i=0; i<argc; ++i) |
| 128 | 128 | bound_new_region(argv[i], strlen(argv[i])); |
| 129 | 129 | |
| 130 | + errno = 0; /* clean errno value */ | |
| 130 | 131 | ret = (*prog_main)(argc, argv); |
| 131 | 132 | |
| 132 | 133 | /* unmark argv area */ |
| @@ -137,7 +138,10 @@ LIBTCCAPI int tcc_run(TCCState *s1, int argc, char **argv) · 4 unmodified lines | ||
| 137 | 138 | bound_exit(); |
| 138 | 139 | } else |
| 139 | 140 | #endif |
| 141 | + { | |
| 142 | + errno = 0; /* clean errno value */ | |
| 140 | 143 | ret = (*prog_main)(argc, argv); |
| 144 | + } | |
| 141 | 145 | return ret; |
| 142 | 146 | } |
| 143 | 147 | |