tests/: Avoid closing invalid fd's
authorChun-wei Fan <fanchunwei@src.gnome.org>
Tue, 5 Nov 2013 04:58:40 +0000 (12:58 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Mon, 11 Nov 2013 14:36:32 +0000 (22:36 +0800)
...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
tests/testglib.c

index ba667b0..6c8d207 100644 (file)
@@ -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);
index b674fa9..a004b65 100644 (file)
@@ -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);