Index: NSPathUtilities.m
===================================================================
--- NSPathUtilities.m	(revision 24942)
+++ NSPathUtilities.m	(working copy)
@@ -257,7 +257,7 @@
   })
 
 #define ASSIGN_DEFAULT_PATH(var, default) ({\
-  if (var == nil)\
+  if (var == nil && [default isEqualToString: @""] == NO)\
     {\
       var = default; \
       var = RETAIN(getPath(var)); \
@@ -996,9 +996,8 @@
 	    {
 	      /*
 	       * On a newline ...so the last key had no value set.
-	       * Put an empty value in the dictionary.
 	       */
-	      [dict setObject: @"" forKey: key];
+	      [dict removeObjectForKey: key];
 	      DESTROY(key);
 	      wantVal = NO;
 	    }
@@ -1047,7 +1046,14 @@
 	      val = [val initWithCharacters: dst length: dpos - dst];
 	      if (val != nil)
 		{
-		  [dict setObject: val forKey: key];
+		  if ([val isEqualToString: @""])
+		    {
+		      [dict removeObjectForKey: key];
+		    }
+		  else
+		    {
+		      [dict setObject: val forKey: key];
+		    }
 		  DESTROY(key);
 		  DESTROY(val);
 		  wantVal = NO;
@@ -1099,7 +1105,14 @@
 	      val = [val initWithCharacters: dst length: dpos - dst];
 	      if (val != nil)
 		{
-		  [dict setObject: val forKey: key];
+		  if ([val isEqualToString: @""])
+		    {
+		      [dict removeObjectForKey: key];
+		    }
+		  else
+		    {
+		      [dict setObject: val forKey: key];
+		    }
 		  DESTROY(key);
 		  DESTROY(val);
 		  wantVal = NO;
@@ -1156,7 +1169,14 @@
 	      val = [val initWithCharacters: dst length: dpos - dst];
 	      if (val != nil)
 		{
-		  [dict setObject: val forKey: key];
+		  if ([val isEqualToString: @""])
+		    {
+		      [dict removeObjectForKey: key];
+		    }
+		  else
+		    {
+		      [dict setObject: val forKey: key];
+		    }
 		  DESTROY(key);
 		  DESTROY(val);
 		  wantVal = NO;
@@ -1167,7 +1187,7 @@
     }
   if (wantVal == YES)
     {
-      [dict setObject: @"" forKey: key];
+      [dict removeObjectForKey: key];
       DESTROY(key);
     }
   NSZoneFree(NSDefaultMallocZone(), src);
