From 99570633985d0e1d081737e7643cd6b478e02628 Mon Sep 17 00:00:00 2001
From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
Date: Sun, 31 May 2020 11:47:09 +0200
Subject: [PATCH] Protect NSHomeDirectory() call by an NSAutoreleasePool.

That may be necessary if preferences are accessed before fl_open_display() was called.
---
 src/Fl_cocoa.mm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index 2c69c6165..b15ec3692 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -4441,12 +4441,14 @@ char *Fl_Darwin_System_Driver::preference_rootnode(Fl_Preferences *prefs, Fl_Pre
     case Fl_Preferences::USER:
     { // Find the home directory, but return NULL if components were not found.
       // If we ever port this to iOS: NSHomeDirectory returns tha location of the app!
-      const char *e = getenv("HOME");
+      const char *e = ::getenv("HOME");
       // if $HOME does not exist, try NSHomeDirectory, the Mac way.
       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) ) {
-- 
GitLab