win32: g_getenv() should return "" if variable exists and empty
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Mon, 9 Jul 2012 02:12:02 +0000 (04:12 +0200)
committerMarc-André Lureau <marcandre.lureau@gmail.com>
Mon, 16 Jul 2012 10:49:25 +0000 (12:49 +0200)
On Windows, GetEnvironmentVariable() returns 0 for empty variables.
Checking GetLastError() == ERROR_ENVVAR_NOT_FOUND helps make a
difference between a variable that does not exist or an empty one
which should return "".

https://bugzilla.gnome.org/show_bug.cgi?id=679617

glib/genviron.c

index 4abf776..aed4b63 100644 (file)
@@ -466,7 +466,11 @@ g_getenv (const gchar *variable)
   if (len == 0)
     {
       g_free (wname);
-      return NULL;
+      if (GetLastError () == ERROR_ENVVAR_NOT_FOUND)
+        return NULL;
+
+      quark = g_quark_from_static_string ("");
+      return g_quark_to_string (quark);
     }
   else if (len == 1)
     len = 2;