MacOS: Fix environ not being found

This commit is contained in:
SmallJoker 2020-05-22 14:19:07 +02:00
parent 1357ea1da2
commit 7ab0c0662a

@ -49,6 +49,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#if defined(__ANDROID__) #if defined(__ANDROID__)
#include "porting_android.h" #include "porting_android.h"
#endif #endif
#if defined(__APPLE__)
// For _NSGetEnviron()
// Related: https://gitlab.haskell.org/ghc/ghc/issues/2458
#include <crt_externs.h>
#endif
#include "config.h" #include "config.h"
#include "debug.h" #include "debug.h"
@ -718,7 +723,8 @@ bool openURL(const std::string &url)
return true; return true;
#elif defined(__APPLE__) #elif defined(__APPLE__)
const char *argv[] = {"open", url.c_str(), NULL}; const char *argv[] = {"open", url.c_str(), NULL};
return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv, environ) == 0; return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv,
(*_NSGetEnviron())) == 0;
#else #else
const char *argv[] = {"xdg-open", url.c_str(), NULL}; const char *argv[] = {"xdg-open", url.c_str(), NULL};
return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0; return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0;