mirror of
https://github.com/FAUSheppy/colorredstderr-mirror
synced 2025-12-09 16:38:32 +01:00
hookmacros.h: Be more careful to restore the errno.
check_handle_fd() or handle_fd_pre() might also modify it.
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
|
||||
#define _HOOK_PRE(type, name) \
|
||||
int handle; \
|
||||
int saved_errno = errno; \
|
||||
DLSYM_FUNCTION(real_ ## name, #name);
|
||||
#define _HOOK_PRE_FD(type, name, fd) \
|
||||
type result; \
|
||||
@@ -35,19 +36,21 @@
|
||||
handle = check_handle_fd(fd); \
|
||||
if (handle) { \
|
||||
handle_fd_pre(fd, handle); \
|
||||
}
|
||||
} \
|
||||
errno = saved_errno;
|
||||
#define _HOOK_PRE_FILE(type, name, file) \
|
||||
type result; \
|
||||
_HOOK_PRE(type, name) \
|
||||
handle = check_handle_fd(fileno(file)); \
|
||||
if (handle) { \
|
||||
handle_file_pre(file, handle); \
|
||||
}
|
||||
} \
|
||||
errno = saved_errno;
|
||||
/* Save and restore the errno to make sure we return the errno of the original
|
||||
* function call. */
|
||||
#define _HOOK_POST_FD_(fd) \
|
||||
if (handle) { \
|
||||
int saved_errno = errno; \
|
||||
saved_errno = errno; \
|
||||
handle_fd_post(fd, handle); \
|
||||
errno = saved_errno; \
|
||||
}
|
||||
@@ -56,7 +59,7 @@
|
||||
return result;
|
||||
#define _HOOK_POST_FILE(file) \
|
||||
if (handle) { \
|
||||
int saved_errno = errno; \
|
||||
saved_errno = errno; \
|
||||
handle_file_post(file, handle); \
|
||||
errno = saved_errno; \
|
||||
} \
|
||||
|
||||
Reference in New Issue
Block a user