[glib] Guarantee that g_get_tmp_dir () doesn't return an empty string
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Guarantee that g_get_tmp_dir () doesn't return an empty string
- Date: Thu, 26 Aug 2010 00:06:40 +0000 (UTC)
commit 8803182f4a1d0d3aa51407bad633dfa1c3f71890
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Aug 25 20:04:45 2010 -0400
Guarantee that g_get_tmp_dir () doesn't return an empty string
If it does, g_file_open_tmp() would be in trouble. Pointed
out by Morten Welinder in bug 627969.
glib/gutils.c | 12 ++++++------
glib/tests/utils.c | 14 ++++++++++++++
2 files changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/glib/gutils.c b/glib/gutils.c
index 406b4b1..7dc889d 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -1525,17 +1525,17 @@ g_get_any_init_do (void)
gchar hostname[100];
g_tmp_dir = g_strdup (g_getenv ("TMPDIR"));
- if (!g_tmp_dir)
+ if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
g_tmp_dir = g_strdup (g_getenv ("TMP"));
- if (!g_tmp_dir)
+ if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
g_tmp_dir = g_strdup (g_getenv ("TEMP"));
#ifdef G_OS_WIN32
- if (!g_tmp_dir)
+ if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
g_tmp_dir = get_windows_directory_root ();
#else
#ifdef P_tmpdir
- if (!g_tmp_dir)
+ if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
{
gsize k;
g_tmp_dir = g_strdup (P_tmpdir);
@@ -1545,7 +1545,7 @@ g_get_any_init_do (void)
}
#endif
- if (!g_tmp_dir)
+ if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
{
g_tmp_dir = g_strdup ("/tmp");
}
@@ -1868,7 +1868,7 @@ g_get_home_dir (void)
* <envar>TMP</envar>, and <envar>TEMP</envar> in that order. If none
* of those are defined "/tmp" is returned on UNIX and "C:\" on Windows.
* The encoding of the returned string is system-defined. On Windows,
- * it is always UTF-8. The return value is never %NULL.
+ * it is always UTF-8. The return value is never %NULL or the empty string.
*
* Returns: the directory to use for temporary files.
*/
diff --git a/glib/tests/utils.c b/glib/tests/utils.c
index 104a51b..6b8da90 100644
--- a/glib/tests/utils.c
+++ b/glib/tests/utils.c
@@ -123,17 +123,31 @@ test_appname (void)
g_assert_cmpstr (appname, ==, "appname");
}
+static void
+test_tmpdir (void)
+{
+ g_test_bug ("627969");
+ g_assert_cmpstr (g_get_tmp_dir (), !=, "");
+}
+
int
main (int argc,
char *argv[])
{
argv0 = argv[0];
+ /* for tmpdir test, need to do this early before g_get_any_init */
+ g_setenv ("TMPDIR", "", TRUE);
+ g_unsetenv ("TMP");
+ g_unsetenv ("TEMP");
+
g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("http://bugzilla.gnome.org/");
g_test_add_func ("/utils/language-names", test_language_names);
g_test_add_func ("/utils/version", test_version);
g_test_add_func ("/utils/appname", test_appname);
+ g_test_add_func ("/utils/tmpdir", test_tmpdir);
return g_test_run();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]