mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-01-20 20:00:42 +00:00
10458f2cacbcd3a1c1fbf2746a89f39ebe071905
The current implementation uses the returned address of the `dlsym` function directly to load the `environ` symbol. But this function doesn't return the address to the symbol itself, instead it returns the address to the location where the actual address is stored, i.e. it's an additional indirection. Consequently, the implementation fails to load and process the environment variables successfully. One example where this error shows up is in the `Dialog API`: in an `X11` environment, the `zenity` driver requires access to the user's `DISPLAY` and `XAUTHORITY` environment variables. Because these variables aren't transfered to the `zenity` process, no dialogs are shown. This can be exercised in the `test/testdialog.c` testprogram. The fix changes the indirection level of the `dlsym` call from `char **` to `char ***`, does a `NULL`-check in case the call failed, and returns the dereferenced actual adress to the `environ` symbol.
Simple DirectMedia Layer (SDL for short) is a cross-platform library designed to make it easy to write multi-media software, such as games and emulators.
You can find the latest release and additional information at: https://www.libsdl.org/
Installation instructions and a quick introduction is available in INSTALL.md
This library is distributed under the terms of the zlib license, available in LICENSE.txt.
Enjoy!
Sam Lantinga (slouken@libsdl.org)
Languages
C
86.4%
C++
5.8%
Objective-C
3.4%
CMake
1.6%
Perl
0.8%
Other
1.7%