static bool wxDoSetEnv(const wxString& variable, const char *value)
 {
 #if defined(HAVE_SETENV)
+    if ( !value ) 
+    { 
+#ifdef HAVE_UNSETENV 
+        return unsetenv(variable.mb_str()) == 0; 
+#else 
+        value = _T(""); // mustn't pass NULL to setenv() 
+#endif 
+    } 
     return setenv(variable.mb_str(), value, 1 /* overwrite */) == 0;
 #elif defined(HAVE_PUTENV)
     wxString s = variable;