]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/commitdiff
Remove invalid assert() in tracked_fds_find().
authorSimon Ruderich <simon@ruderich.org>
Thu, 20 Jun 2013 21:17:03 +0000 (23:17 +0200)
committerSimon Ruderich <simon@ruderich.org>
Thu, 20 Jun 2013 21:17:03 +0000 (23:17 +0200)
src/trackfds.h
tests/example.c

index acf7ce336d18dd30d29a661d62fe9bdfbeba917c..f0ba8791d8485fd5441ae7bcd45109bdda482560 100644 (file)
@@ -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) {
  */
 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];
 
     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);
 }
 static int tracked_fds_find_slow(int fd) {
     assert(initialized);
+    assert(fd >= 0);
 
     if (tracked_fds_list_count == 0) {
         return 0;
 
     if (tracked_fds_list_count == 0) {
         return 0;
index fc5c01ecd73c4bf07a60305c4c4622b65892998a..3d165e56c89b6955d4531b28f1b4f7e12bd4106f 100644 (file)
@@ -57,6 +57,7 @@ int main(int argc, char **argv unused) {
     putc_unlocked('\n', stdout);
 
     /* Test invalid stuff. */
     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(). */
     close(-42);
     close(-4711);
     /* Can't test this, results in a segfault with the "normal" fclose(). */