Merge pull request #109283 from Nintorch/master
Fix C# environment variables access on Linux (SDL-related bug)
This commit is contained in:
@ -87,9 +87,11 @@
|
|||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#define HAVE_INOTIFY 1
|
#define HAVE_INOTIFY 1
|
||||||
#define HAVE_INOTIFY_INIT1 1
|
#define HAVE_INOTIFY_INIT1 1
|
||||||
#define HAVE_GETENV 1
|
// Don't add these defines, for some reason they mess with C#'s ability
|
||||||
#define HAVE_SETENV 1
|
// to use environment variables (see GH-109024)
|
||||||
#define HAVE_UNSETENV 1
|
//#define HAVE_GETENV 1
|
||||||
|
//#define HAVE_SETENV 1
|
||||||
|
//#define HAVE_UNSETENV 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DBUS_ENABLED
|
#ifdef DBUS_ENABLED
|
||||||
|
|||||||
1
thirdparty/README.md
vendored
1
thirdparty/README.md
vendored
@ -972,6 +972,7 @@ Patches:
|
|||||||
- `0003-std-include.patch` (GH-108144)
|
- `0003-std-include.patch` (GH-108144)
|
||||||
- `0004-errno-include.patch` (GH-108354)
|
- `0004-errno-include.patch` (GH-108354)
|
||||||
- `0005-fix-libudev-dbus.patch` (GH-108373)
|
- `0005-fix-libudev-dbus.patch` (GH-108373)
|
||||||
|
- `0006-fix-cs-environ.patch` (GH-109283)
|
||||||
|
|
||||||
The SDL source code folder includes `hidapi` library inside of folder `thirdparty/sdl/hidapi/`.
|
The SDL source code folder includes `hidapi` library inside of folder `thirdparty/sdl/hidapi/`.
|
||||||
Its version and license is described in this file under `hidapi`.
|
Its version and license is described in this file under `hidapi`.
|
||||||
|
|||||||
65
thirdparty/sdl/patches/0006-fix-cs-environ.patch
vendored
Normal file
65
thirdparty/sdl/patches/0006-fix-cs-environ.patch
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
diff --git a/thirdparty/sdl/stdlib/SDL_getenv.c b/thirdparty/sdl/stdlib/SDL_getenv.c
|
||||||
|
index b4a19224655..e23f8a0ea0d 100644
|
||||||
|
--- a/thirdparty/sdl/stdlib/SDL_getenv.c
|
||||||
|
+++ b/thirdparty/sdl/stdlib/SDL_getenv.c
|
||||||
|
@@ -50,6 +50,9 @@ extern char **environ;
|
||||||
|
static char **environ;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
struct SDL_Environment
|
||||||
|
{
|
||||||
|
@@ -149,6 +152,9 @@ SDL_Environment *SDL_CreateEnvironment(bool populated)
|
||||||
|
|
||||||
|
const char *SDL_GetEnvironmentVariable(SDL_Environment *env, const char *name)
|
||||||
|
{
|
||||||
|
+#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
+ return getenv(name);
|
||||||
|
+#else
|
||||||
|
const char *result = NULL;
|
||||||
|
|
||||||
|
if (!env) {
|
||||||
|
@@ -168,6 +174,7 @@ const char *SDL_GetEnvironmentVariable(SDL_Environment *env, const char *name)
|
||||||
|
SDL_UnlockMutex(env->lock);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct CountEnvStringsData
|
||||||
|
@@ -246,6 +253,9 @@ char **SDL_GetEnvironmentVariables(SDL_Environment *env)
|
||||||
|
|
||||||
|
bool SDL_SetEnvironmentVariable(SDL_Environment *env, const char *name, const char *value, bool overwrite)
|
||||||
|
{
|
||||||
|
+#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
+ return setenv(name, value, overwrite);
|
||||||
|
+#else
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
if (!env) {
|
||||||
|
@@ -281,10 +291,14 @@ bool SDL_SetEnvironmentVariable(SDL_Environment *env, const char *name, const ch
|
||||||
|
SDL_UnlockMutex(env->lock);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SDL_UnsetEnvironmentVariable(SDL_Environment *env, const char *name)
|
||||||
|
{
|
||||||
|
+#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
+ return unsetenv(name);
|
||||||
|
+#else
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
if (!env) {
|
||||||
|
@@ -305,6 +319,7 @@ bool SDL_UnsetEnvironmentVariable(SDL_Environment *env, const char *name)
|
||||||
|
SDL_UnlockMutex(env->lock);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDL_DestroyEnvironment(SDL_Environment *env)
|
||||||
15
thirdparty/sdl/stdlib/SDL_getenv.c
vendored
15
thirdparty/sdl/stdlib/SDL_getenv.c
vendored
@ -50,6 +50,9 @@ extern char **environ;
|
|||||||
static char **environ;
|
static char **environ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
struct SDL_Environment
|
struct SDL_Environment
|
||||||
{
|
{
|
||||||
@ -149,6 +152,9 @@ SDL_Environment *SDL_CreateEnvironment(bool populated)
|
|||||||
|
|
||||||
const char *SDL_GetEnvironmentVariable(SDL_Environment *env, const char *name)
|
const char *SDL_GetEnvironmentVariable(SDL_Environment *env, const char *name)
|
||||||
{
|
{
|
||||||
|
#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
return getenv(name);
|
||||||
|
#else
|
||||||
const char *result = NULL;
|
const char *result = NULL;
|
||||||
|
|
||||||
if (!env) {
|
if (!env) {
|
||||||
@ -168,6 +174,7 @@ const char *SDL_GetEnvironmentVariable(SDL_Environment *env, const char *name)
|
|||||||
SDL_UnlockMutex(env->lock);
|
SDL_UnlockMutex(env->lock);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct CountEnvStringsData
|
typedef struct CountEnvStringsData
|
||||||
@ -246,6 +253,9 @@ char **SDL_GetEnvironmentVariables(SDL_Environment *env)
|
|||||||
|
|
||||||
bool SDL_SetEnvironmentVariable(SDL_Environment *env, const char *name, const char *value, bool overwrite)
|
bool SDL_SetEnvironmentVariable(SDL_Environment *env, const char *name, const char *value, bool overwrite)
|
||||||
{
|
{
|
||||||
|
#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
return setenv(name, value, overwrite);
|
||||||
|
#else
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
if (!env) {
|
if (!env) {
|
||||||
@ -281,10 +291,14 @@ bool SDL_SetEnvironmentVariable(SDL_Environment *env, const char *name, const ch
|
|||||||
SDL_UnlockMutex(env->lock);
|
SDL_UnlockMutex(env->lock);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_UnsetEnvironmentVariable(SDL_Environment *env, const char *name)
|
bool SDL_UnsetEnvironmentVariable(SDL_Environment *env, const char *name)
|
||||||
{
|
{
|
||||||
|
#if defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_FREEBSD)
|
||||||
|
return unsetenv(name);
|
||||||
|
#else
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
if (!env) {
|
if (!env) {
|
||||||
@ -305,6 +319,7 @@ bool SDL_UnsetEnvironmentVariable(SDL_Environment *env, const char *name)
|
|||||||
SDL_UnlockMutex(env->lock);
|
SDL_UnlockMutex(env->lock);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_DestroyEnvironment(SDL_Environment *env)
|
void SDL_DestroyEnvironment(SDL_Environment *env)
|
||||||
|
|||||||
Reference in New Issue
Block a user