From: Chun-wei Fan Date: Tue, 5 Nov 2013 04:58:40 +0000 (+0800) Subject: tests/: Avoid closing invalid fd's X-Git-Tag: 2.39.1~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ccba409d349211d0705a8ae1fcf0f88fbb370175;p=platform%2Fupstream%2Fglib.git 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 --- 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 -#ifdef HAVE_UNISTD_H +#ifdef G_OS_UNIX #include #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 @@ -37,7 +35,7 @@ #include -#ifdef HAVE_UNISTD_H +#ifdef G_OS_UNIX #include #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);