mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-26 14:00:55 +00:00
Fix bug #2846.
This commit is contained in:
parent
955899ef77
commit
276d0c7c64
2 changed files with 18 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
2003-03-24 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* remake.c (notice_finished_file):
|
||||
|
||||
* make.h (ENULLLOOP): Set errno = 0 before invoking the command;
|
||||
some calls (like readdir()) return NULL in valid situations
|
||||
without resetting errno. Fixes bug #2846.
|
||||
|
||||
2003-02-25 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
Port to OS/2 (__EMX__) by Andreas Buening <andreas.buening@nexgo.de>.
|
||||
|
|
11
make.h
11
make.h
|
@ -581,4 +581,13 @@ extern int handling_fatal_signal;
|
|||
|
||||
#define EINTRLOOP(_v,_c) while (((_v)=_c)==-1 && errno==EINTR)
|
||||
|
||||
#define ENULLLOOP(_v,_c) while (((_v)=_c)==0 && errno==EINTR)
|
||||
/* While system calls that return integers are pretty consistent about
|
||||
returning -1 on failure and setting errno in that case, functions that
|
||||
return pointers are not always so well behaved. Sometimes they return
|
||||
NULL for expected behavior: one good example is readdir() which returns
|
||||
NULL at the end of the directory--and _doesn't_ reset errno. So, we have
|
||||
to do it ourselves here. */
|
||||
|
||||
#define ENULLLOOP(_v,_c) do{ errno = 0; \
|
||||
while (((_v)=_c)==0 && errno==EINTR); }while(0)
|
||||
|
||||
|
|
Loading…
Reference in a new issue