diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index b15ec3692655707d1174503b7c962d4457755979..d368d036dee7944d77abb74edc1657937335da15 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -4443,12 +4443,11 @@ char *Fl_Darwin_System_Driver::preference_rootnode(Fl_Preferences *prefs, Fl_Pre
       // If we ever port this to iOS: NSHomeDirectory returns tha location of the app!
       const char *e = ::getenv("HOME");
       // if $HOME does not exist, try NSHomeDirectory, the Mac way.
+      NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
       if ( (e==0L) || (e[0]==0) || (::access(e, F_OK)==-1) ) {
-        NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
         NSString *nsHome = NSHomeDirectory();
         if (nsHome)
           e = [nsHome UTF8String];
-        [localPool release];
       }
       // if NSHomeDirectory does not work, try getpwuid(), the Unix way.
       if ( (e==0L) || (e[0]==0) || (::access(e, F_OK)==-1) ) {
@@ -4456,6 +4455,7 @@ char *Fl_Darwin_System_Driver::preference_rootnode(Fl_Preferences *prefs, Fl_Pre
         e = pw->pw_dir;
       }
       snprintf(filename, FL_PATH_MAX, "%s/Library/Preferences", e);
+      [localPool release];
       break; }
   }