diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c index b4a1922465..54fb6a7b46 100644 --- a/src/stdlib/SDL_getenv.c +++ b/src/stdlib/SDL_getenv.c @@ -41,7 +41,12 @@ #define environ (*_NSGetEnviron()) #elif defined(SDL_PLATFORM_FREEBSD) #include -#define environ ((char **)dlsym(RTLD_DEFAULT, "environ")) +static char **get_environ_rtld(void) +{ + char ***environ_rtld = (char ***)dlsym(RTLD_DEFAULT, "environ"); + return environ_rtld ? *environ_rtld : NULL; +} +#define environ (get_environ_rtld()) #else extern char **environ; #endif