[glib] tests/: Avoid closing invalid fd's



commit ccba409d349211d0705a8ae1fcf0f88fbb370175
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Tue Nov 5 12:58:40 2013 +0800

    tests/: Avoid closing invalid fd's
    
    ...and only include unistd.h when we are on *NIX.
    
    Newer Visual C++ runtimes (8.0/2005 and later) will cause the program to
    crash with an internal abort() call when they detect instances of close()
    being called on an invalid fd, such as when the fd is -1, and these should
    be purged anyways.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=711047

 tests/file-test.c |   16 +++++++++-------
 tests/testglib.c  |   17 +++++++++--------
 2 files changed, 18 insertions(+), 15 deletions(-)
---
diff --git a/tests/file-test.c b/tests/file-test.c
index ba667b0..6c8d207 100644
--- a/tests/file-test.c
+++ b/tests/file-test.c
@@ -24,8 +24,6 @@
  * GLib at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
-#include "config.h"
-
 #undef G_DISABLE_ASSERT
 #undef G_LOG_DOMAIN
 
@@ -39,7 +37,7 @@
 
 #include <gstdio.h>
 
-#ifdef HAVE_UNISTD_H
+#ifdef G_OS_UNIX
 #include <unistd.h>
 #endif
 
@@ -62,14 +60,18 @@ test_mkstemp (void)
   strcpy (template, "foobar");
   fd = g_mkstemp (template);
   if (fd != -1)
-    g_warning ("g_mkstemp works even if template doesn't contain XXXXXX");
-  close (fd);
+    {
+      g_warning ("g_mkstemp works even if template doesn't contain XXXXXX");
+      close (fd);
+    }
 
   strcpy (template, "foobarXXX");
   fd = g_mkstemp (template);
   if (fd != -1)
-    g_warning ("g_mkstemp works even if template contains less than six X");
-  close (fd);
+    {
+      g_warning ("g_mkstemp works even if template contains less than six X");
+      close (fd);
+    }
 
   strcpy (template, "fooXXXXXX");
   fd = g_mkstemp (template);
diff --git a/tests/testglib.c b/tests/testglib.c
index b674fa9..a004b65 100644
--- a/tests/testglib.c
+++ b/tests/testglib.c
@@ -24,8 +24,6 @@
  * GLib at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
-#include "config.h"
-
 #undef GLIB_COMPILATION
 
 #include <stdio.h>
@@ -37,7 +35,7 @@
 
 #include <stdlib.h>
 
-#ifdef HAVE_UNISTD_H
+#ifdef G_OS_UNIX
 #include <unistd.h>
 #endif
 
@@ -938,8 +936,8 @@ test_file_functions (void)
   chars[n] = 0;
   if (strcmp (chars, hello) != 0)
     g_error ("wrote '%s', but got '%s'\n", hello, chars);
-
-  close (fd);
+  if (fd != -1)
+    close (fd);
   remove (template);
 
   error = NULL;
@@ -969,7 +967,8 @@ test_file_functions (void)
       else
         g_print ("g_file_open_tmp correctly returns error: %s\n", error->message);
     }
-  close (fd);
+  if (fd != -1)
+    close (fd);
   g_clear_error (&error);
   g_free (name_used);
 #endif
@@ -981,7 +980,8 @@ test_file_functions (void)
     g_error ("g_file_open_tmp didn't work for template '%s': %s\n", template, error->message);
   else if (g_test_verbose())
     g_print ("g_file_open_tmp for template '%s' used name '%s'\n", template, name_used);
-  close (fd);
+  if (fd != -1)
+    close (fd);
   g_clear_error (&error);
   remove (name_used);
   g_free (name_used);
@@ -990,7 +990,8 @@ test_file_functions (void)
   fd = g_file_open_tmp (NULL, &name_used, &error);
   if (fd == -1)
     g_error ("g_file_open_tmp didn't work for a NULL template: %s\n", error->message);
-  close (fd);
+  else
+    close (fd);
   g_clear_error (&error);
   remove (name_used);
   g_free (name_used);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]