From: Simon Ruderich Date: Thu, 20 Jun 2013 21:17:03 +0000 (+0200) Subject: Remove invalid assert() in tracked_fds_find(). X-Git-Tag: 0.1~26 X-Git-Url: https://ruderich.org/simon/gitweb/?a=commitdiff_plain;h=ba2283bd3780a13f26521c5c47deedfc7184ed7d;p=coloredstderr%2Fcoloredstderr.git Remove invalid assert() in tracked_fds_find(). --- diff --git a/src/trackfds.h b/src/trackfds.h index acf7ce3..f0ba879 100644 --- a/src/trackfds.h +++ b/src/trackfds.h @@ -329,7 +329,11 @@ static int tracked_fds_find_slow(int fd) noinline; */ inline static int tracked_fds_find(int fd) always_inline; inline static int tracked_fds_find(int fd) { - assert(fd >= 0); + /* Invalid file descriptor. No assert() as we're called from the hooked + * macro. */ + if (unlikely(fd < 0)) { + return 0; + } if (fd < TRACKFDS_STATIC_COUNT) { return tracked_fds[fd]; @@ -339,6 +343,7 @@ inline static int tracked_fds_find(int fd) { } static int tracked_fds_find_slow(int fd) { assert(initialized); + assert(fd >= 0); if (tracked_fds_list_count == 0) { return 0; diff --git a/tests/example.c b/tests/example.c index fc5c01e..3d165e5 100644 --- a/tests/example.c +++ b/tests/example.c @@ -57,6 +57,7 @@ int main(int argc, char **argv unused) { putc_unlocked('\n', stdout); /* Test invalid stuff. */ + write(-3, "foo", 3); close(-42); close(-4711); /* Can't test this, results in a segfault with the "normal" fclose(). */