Parcourir la source

dynapi: use DosScanEnv() for os/2.

(cherry picked from commit ee49025f80e8d7bf7b2af5478bab3b0d9d739541)
Ozkan Sezer il y a 1 mois
Parent
commit
63bb1a8583
1 fichiers modifiés avec 8 ajouts et 3 suppressions
  1. 8 3
      src/dynapi/SDL_dynapi.c

+ 8 - 3
src/dynapi/SDL_dynapi.c

@@ -440,19 +440,24 @@ extern SDL_NORETURN void SDL_ExitProcess(int exitcode);
 
 static void SDL_InitDynamicAPILocked(void)
 {
+    SDL_DYNAPI_ENTRYFN entry = NULL; /* funcs from here by default. */
+    SDL_bool use_internal = SDL_TRUE;
+
     /* this can't use SDL_getenv_REAL, because it might allocate memory before the app can set their allocator */
 #if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__)
     /* We've always used LoadLibraryA for this, so this has never worked with Unicode paths on Windows. Sorry. */
     char envbuf[512];  /* overflows will just report as environment variable being unset, but LoadLibraryA has a MAX_PATH of 260 anyhow, apparently. */
     const DWORD rc = GetEnvironmentVariableA(SDL_DYNAMIC_API_ENVVAR, envbuf, (DWORD) sizeof (envbuf));
     char *libname = ((rc != 0) && (rc < sizeof (envbuf))) ? envbuf : NULL;
+#elif defined(__OS2__)
+    char * libname;
+    if (DosScanEnv(SDL_DYNAMIC_API_ENVVAR, &libname) != NO_ERROR) {
+        libname = NULL;
+    }
 #else
     char *libname = getenv(SDL_DYNAMIC_API_ENVVAR);
 #endif
 
-    SDL_DYNAPI_ENTRYFN entry = NULL; /* funcs from here by default. */
-    SDL_bool use_internal = SDL_TRUE;
-
     if (libname) {
         while (*libname && !entry) {
             char *ptr = libname;