Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sdl12_compat for openSUSE:Factory checked in at 2025-12-05 16:50:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sdl12_compat (Old) and /work/SRC/openSUSE:Factory/.sdl12_compat.new.1939 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sdl12_compat" Fri Dec 5 16:50:48 2025 rev:10 rq:1321067 version:1.2.72 Changes: -------- --- /work/SRC/openSUSE:Factory/sdl12_compat/sdl12_compat.changes 2025-11-01 23:34:45.370823100 +0100 +++ /work/SRC/openSUSE:Factory/.sdl12_compat.new.1939/sdl12_compat.changes 2025-12-05 16:51:26.899374223 +0100 @@ -1,0 +2,9 @@ +Thu Dec 4 06:41:05 UTC 2025 - Jan Engelhardt <[email protected]> + +- Update to release 1.2.72 + * Allow building without glu.h by defining NO_SDL_GLU + * Fixed centering the splash screen in UT2004 +- glu is thus no longer a build requirement and downstream + packages need to explicitly list it in their BulidRequires + +------------------------------------------------------------------- Old: ---- sdl12-compat-1.2.70.tar.gz sdl12-compat-1.2.70.tar.gz.sig New: ---- sdl12-compat-1.2.72.tar.gz sdl12-compat-1.2.72.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sdl12_compat.spec ++++++ --- /var/tmp/diff_new_pack.4CKCRz/_old 2025-12-05 16:51:28.019421218 +0100 +++ /var/tmp/diff_new_pack.4CKCRz/_new 2025-12-05 16:51:28.019421218 +0100 @@ -19,7 +19,7 @@ Name: sdl12_compat %define lname libSDL-1_2-0 %global _lto_cflags %_lto_cflags -ffat-lto-objects -Version: 1.2.70 +Version: 1.2.72 Release: 0 Summary: SDL-1.2 Compatibility Layer for Simple DirectMedia Layer 2.0 License: MIT @@ -59,7 +59,6 @@ Group: Development/Libraries/X11 Requires: %lname = %version Requires: pkgconfig(gl) -Requires: pkgconfig(glu) Requires: pkgconfig(x11) Requires: pkgconfig(xproto) Conflicts: SDL-devel ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.4CKCRz/_old 2025-12-05 16:51:28.051422560 +0100 +++ /var/tmp/diff_new_pack.4CKCRz/_new 2025-12-05 16:51:28.059422896 +0100 @@ -1,5 +1,5 @@ -mtime: 1761904520 -commit: 9ab26bfada69e284ee4f3dac39aa975a2427ea1ad167594e2b14dc18d1d23cb2 +mtime: 1764830597 +commit: 980b52c0214e66eb51aeae93e05d053c0f525633a04681ee24b3eff52b01033f url: https://src.opensuse.org/jengelh/sdl12_compat revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2025-12-04 07:43:27.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ sdl12-compat-1.2.70.tar.gz -> sdl12-compat-1.2.72.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/.git-hash new/sdl12-compat-1.2.72/.git-hash --- old/sdl12-compat-1.2.70/.git-hash 2025-10-30 15:11:45.000000000 +0100 +++ new/sdl12-compat-1.2.72/.git-hash 2025-12-02 20:41:25.000000000 +0100 @@ -1 +1 @@ -9fb466ec58119d12bd2bce47e8810cb282104bd8 +fc2ec0c128197f1f5050e48359bc41e618f3abfb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/CMakeLists.txt new/sdl12-compat-1.2.72/CMakeLists.txt --- old/sdl12-compat-1.2.70/CMakeLists.txt 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/CMakeLists.txt 2025-12-02 20:41:25.000000000 +0100 @@ -3,7 +3,7 @@ # cmake -DSDL2_INCLUDE_DIR=/opt/SDL2/include/SDL2 [other stuff] cmake_minimum_required(VERSION 3.0.0...4.1) -project(sdl12_compat VERSION 1.2.70 LANGUAGES C) +project(sdl12_compat VERSION 1.2.72 LANGUAGES C) option(SDL12TESTS "Enable to build SDL-1.2 test programs" ON) option(SDL12DEVEL "Enable installing SDL-1.2 development headers" ON) @@ -33,7 +33,7 @@ # Xcode project file uses 1.0.0, but it's more compatible to use the # higher version. set(DYLIB_COMPAT_VERSION 12.0.0 CACHE STRING "library compatibility version") - set(DYLIB_CURRENT_VERSION 12.70.0 CACHE STRING "library current version") + set(DYLIB_CURRENT_VERSION 12.72.0 CACHE STRING "library current version") include_directories("/opt/X11/include") # hack. if(CMAKE_VERSION VERSION_LESS 3.9) else() @@ -243,7 +243,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libSDL${SOPOSTFIX}${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/sdl.m4" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/aclocal") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/sdl.m4" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/aclocal") endif() if(STATICDEVEL AND SDL12DEVEL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/REVISION.txt new/sdl12-compat-1.2.72/REVISION.txt --- old/sdl12-compat-1.2.70/REVISION.txt 2025-10-30 15:11:45.000000000 +0100 +++ new/sdl12-compat-1.2.72/REVISION.txt 2025-12-02 20:41:25.000000000 +0100 @@ -1 +1 @@ -release-1.2.70-0-g9fb466e +release-1.2.72-0-gfc2ec0c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/include/SDL/SDL_opengl.h new/sdl12-compat-1.2.72/include/SDL/SDL_opengl.h --- old/sdl12-compat-1.2.70/include/SDL/SDL_opengl.h 2025-10-27 17:10:11.000000000 +0100 +++ new/sdl12-compat-1.2.72/include/SDL/SDL_opengl.h 2025-11-07 20:04:27.000000000 +0100 @@ -45,12 +45,12 @@ #endif #if defined(__MACOSX__) #include <OpenGL/gl.h> /* Header File For The OpenGL Library */ -#ifdef SDL_INCLUDE_GLU_H +#ifndef NO_SDL_GLU #include <OpenGL/glu.h> /* Header File For The GLU Library */ #endif #else #include <GL/gl.h> /* Header File For The OpenGL Library */ -#ifdef SDL_INCLUDE_GLU_H +#ifndef NO_SDL_GLU #include <GL/glu.h> /* Header File For The GLU Library */ #endif #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/include/SDL/SDL_version.h new/sdl12-compat-1.2.72/include/SDL/SDL_version.h --- old/sdl12-compat-1.2.70/include/SDL/SDL_version.h 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/include/SDL/SDL_version.h 2025-12-02 20:41:25.000000000 +0100 @@ -33,7 +33,7 @@ /* We bumped the patchlevel to 50 for sdl12-compat */ #define SDL_MAJOR_VERSION 1 #define SDL_MINOR_VERSION 2 -#define SDL_PATCHLEVEL 70 +#define SDL_PATCHLEVEL 72 typedef struct SDL_version { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/Makefile.darwin new/sdl12-compat-1.2.72/src/Makefile.darwin --- old/sdl12-compat-1.2.70/src/Makefile.darwin 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/Makefile.darwin 2025-12-02 20:41:25.000000000 +0100 @@ -18,7 +18,7 @@ LDFLAGS = -mmacosx-version-min=10.6 -dynamiclib -Wl,-undefined,error -Wl,-single_module #LDFLAGS+= -Wl,-headerpad_max_install_names LDFLAGS+= -Wl,-install_name,"/usr/local/lib/$(DYLIB)" -LDFLAGS+= -Wl,-compatibility_version,1.0 -Wl,-current_version,12.70 +LDFLAGS+= -Wl,-compatibility_version,1.0 -Wl,-current_version,12.72 LDLIBS = -Wl,-framework,AppKit # this is needed for x86_64 - cross-gcc might not add it. #LDLIBS += -Wl,-lbundle1.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/Makefile.linux new/sdl12-compat-1.2.72/src/Makefile.linux --- old/sdl12-compat-1.2.70/src/Makefile.linux 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/Makefile.linux 2025-12-02 20:41:25.000000000 +0100 @@ -16,7 +16,7 @@ LDFLAGS+= -Wl,--no-undefined LDLIBS = -ldl -SHLIB = libSDL-1.2.so.1.2.70 +SHLIB = libSDL-1.2.so.1.2.72 OBJ = SDL12_compat.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/Makefile.os2 new/sdl12-compat-1.2.72/src/Makefile.os2 --- old/sdl12-compat-1.2.70/src/Makefile.os2 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/Makefile.os2 2025-12-02 20:41:25.000000000 +0100 @@ -5,7 +5,7 @@ !endif DLLNAME = SDL12 -VERSION = 1.2.70 +VERSION = 1.2.72 # change SDL2INC to point to the SDL2 headers SDL2INC = include diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/Makefile.w32 new/sdl12-compat-1.2.72/src/Makefile.w32 --- old/sdl12-compat-1.2.70/src/Makefile.w32 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/Makefile.w32 2025-12-02 20:41:25.000000000 +0100 @@ -5,7 +5,7 @@ !endif DLLNAME = SDL -VERSION = 1.2.70 +VERSION = 1.2.72 # change SDL2INC to point to the SDL2 headers SDL2INC = include diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/SDL12_compat.c new/sdl12-compat-1.2.72/src/SDL12_compat.c --- old/sdl12-compat-1.2.70/src/SDL12_compat.c 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/SDL12_compat.c 2025-12-02 20:41:25.000000000 +0100 @@ -28,7 +28,7 @@ * should be way ahead of what SDL-1.2 Classic would report, so apps can * decide if they're running under the compat layer, if they really care. */ -#define SDL12_COMPAT_VERSION 70 +#define SDL12_COMPAT_VERSION 72 #include <stdarg.h> #include <limits.h> @@ -1181,22 +1181,20 @@ return SDL_TRUE; } -/* log a string using platform-specific code for before SDL2 is fully available. */ -static void SDL12COMPAT_LogAtStartup(const char *str) +/* SDL3 (and thus sdl2-compat) will build an SDL_Environment, which isn't useful if the SDL-1.2 app is calling getenv()/setenv() directly, so use system APIs instead. */ +/* despite the "unsafe" name (they are NOT thread-safe), these are actually _safe_ to call at startup, since it won't call into SDL2 before everything is properly initialized! */ +static char *SDL12COMPAT_getenv_unsafe(const char *name) { #ifdef _WIN32 - OutputDebugStringA(str); - #elif defined(__APPLE__) - extern void SDL12COMPAT_NSLog(const char *prefix, const char *text); - SDL12COMPAT_NSLog(NULL, str); - #else - fputs(str, stderr); - fputs("\n", stderr); + static char buf[256]; /* overflows will just report as environment variable being unset. But most of our environment vars don't come through here. */ + const DWORD rc = GetEnvironmentVariableA(name, buf, (DWORD) sizeof (buf)); + return ((rc != 0) && (rc < sizeof (buf))) ? buf : NULL; + #else /* we might need other platforms, or a simple `return NULL;` for platforms without an environment table. */ + return getenv(name); #endif } -/* this talks right to the OS environment table. Don't use SDL20_setenv at startup. */ -static void SDL12COMPAT_SetEnvAtStartup(const char *name, const char *value) +static void SDL12COMPAT_setenv_unsafe(const char *name, const char *value) { #ifdef _WIN32 SetEnvironmentVariableA(name, value); @@ -1211,15 +1209,27 @@ #endif } -/* this talks right to the OS environment table. Don't use SDL20_getenv at startup. */ static const char *SDL12COMPAT_GetEnvAtStartup(const char *name) { + return SDL12COMPAT_getenv_unsafe(name); /* don't talk to SDL2 yet, we aren't set up. Go right to the OS interfaces. */ +} + +static void SDL12COMPAT_SetEnvAtStartup(const char *name, const char *value) +{ + SDL12COMPAT_setenv_unsafe(name, value); /* don't talk to SDL2 yet, we aren't set up. Go right to the OS interfaces. */ +} + +/* log a string using platform-specific code for before SDL2 is fully available. */ +static void SDL12COMPAT_LogAtStartup(const char *str) +{ #ifdef _WIN32 - static char buf[256]; /* overflows will just report as environment variable being unset. But most of our environment vars don't come through here. */ - const DWORD rc = GetEnvironmentVariableA(name, buf, (DWORD) sizeof (buf)); - return ((rc != 0) && (rc < sizeof (buf))) ? buf : NULL; - #else /* we might need other platforms, or a simple `return NULL;` for platforms without an environment table. */ - return getenv(name); + OutputDebugStringA(str); + #elif defined(__APPLE__) + extern void SDL12COMPAT_NSLog(const char *prefix, const char *text); + SDL12COMPAT_NSLog(NULL, str); + #else + fputs(str, stderr); + fputs("\n", stderr); #endif } @@ -1310,7 +1320,7 @@ homedir = pwent->pw_dir; } if (!homedir) { - homedir = getenv("HOME"); + homedir = SDL12COMPAT_getenv_unsafe("HOME"); } if (homedir) { char framework[512]; @@ -1531,7 +1541,7 @@ static const char * SDL12Compat_GetHint(const char *name) { - return SDL20_getenv(name); + return SDL12COMPAT_getenv_unsafe(name); } static SDL_bool @@ -2395,9 +2405,9 @@ GetVideoDisplay(void) { const char *variable; - variable = SDL20_getenv("SDL_VIDEO_FULLSCREEN_DISPLAY"); + variable = SDL12COMPAT_getenv_unsafe("SDL_VIDEO_FULLSCREEN_DISPLAY"); if (!variable) { - variable = SDL20_getenv("SDL_VIDEO_FULLSCREEN_HEAD"); + variable = SDL12COMPAT_getenv_unsafe("SDL_VIDEO_FULLSCREEN_HEAD"); } if (variable) { int preferred_display = SDL20_atoi(variable); @@ -2780,23 +2790,16 @@ DECLSPEC12 int SDLCALL SDL_InitSubSystem(Uint32 sdl12flags) { + const char *videodriver = SDL12COMPAT_getenv_unsafe("SDL_VIDEODRIVER"); + const char *audiodriver = SDL12COMPAT_getenv_unsafe("SDL_AUDIODRIVER"); Uint32 sdl20flags = 0; int rc; #ifdef __WINDOWS__ /* DOSBox (and probably other things), try to force the "windib" video backend, but it doesn't exist in SDL2. Force to "windows" instead. */ - const char *origvidenv = NULL; - const char *env = SDL20_getenv("SDL_VIDEODRIVER"); - if (env) { - if (SDL20_strcmp(env, "windib") == 0) { - origvidenv = "windib"; - SDL20_setenv("SDL_VIDEODRIVER", "windows", 1); - } else - if (SDL20_strcmp(env, "directx") == 0) { - origvidenv = "directx"; - SDL20_setenv("SDL_VIDEODRIVER", "windows", 1); - } + if (videodriver && (SDL20_strcmp(videodriver, "windib") == 0) || (SDL20_strcmp(videodriver, "directx") == 0)) { + videodriver = "windows"; } #endif @@ -2835,6 +2838,17 @@ InitializeCDSubsystem(); } + /* In SDL3 (via sdl2-compat), these will ignore changes to environment variables after startup, but SDL-1.2 apps might + change envvars on the fly, so we need to manually force these into SDL2 hints. */ + + if (videodriver) { + SDL20_SetHintWithPriority(SDL_HINT_VIDEODRIVER, videodriver, SDL_HINT_OVERRIDE); + } + + if (audiodriver) { + SDL20_SetHintWithPriority(SDL_HINT_AUDIODRIVER, audiodriver, SDL_HINT_OVERRIDE); + } + rc = SDL20_Init(sdl20flags); if ((rc == 0) && (sdl20flags & SDL_INIT_VIDEO)) { if (Init12Video() < 0) { @@ -2845,12 +2859,6 @@ EventThreadEnabled = (sdl12flags & SDL12_INIT_EVENTTHREAD) ? SDL_TRUE : SDL_FALSE; } -#ifdef __WINDOWS__ - if (origvidenv) { /* set this back to minimize surprise state changes. */ - SDL20_setenv("SDL_VIDEODRIVER", origvidenv, 1); - } -#endif - if ((rc == 0) && (sdl20flags & SDL_INIT_AUDIO)) { Init12Audio(); } @@ -3086,7 +3094,7 @@ SDL_VideoDriverName(char *namebuf, int maxlen) { #ifdef __WINDOWS__ - const char *val = SDL20_getenv("SDL_VIDEODRIVER"); + const char *val = SDL12COMPAT_getenv_unsafe("SDL_VIDEODRIVER"); if (val) { /* give them back what they requested: */ if (SDL20_strcmp(val, "windib") == 0 || @@ -5949,8 +5957,8 @@ GetEnvironmentWindowPosition(int *x, int *y) { int display = VideoDisplayIndex; - const char *window = SDL20_getenv("SDL_VIDEO_WINDOW_POS"); - const char *center = SDL20_getenv("SDL_VIDEO_CENTERED"); + const char *window = SDL12COMPAT_getenv_unsafe("SDL_VIDEO_WINDOW_POS"); + const char *center = SDL12COMPAT_getenv_unsafe("SDL_VIDEO_CENTERED"); if (window) { if (SDL20_strcmp(window, "center") == 0) { center = window; @@ -6576,7 +6584,7 @@ fullscreen_flags20 |= SDL_WINDOW_FULLSCREEN_DESKTOP; } - fromwin_env = SDL20_getenv("SDL_WINDOWID"); + fromwin_env = SDL12COMPAT_getenv_unsafe("SDL_WINDOWID"); if (fromwin_env) { window_size_scaling = 1.0f; /* don't scale for external windows */ @@ -6629,6 +6637,11 @@ } VideoWindow20 = SDL20_CreateWindow(WindowTitle, x, y, scaled_width, scaled_height, flags20); + if (!VideoWindow20 && (flags20 & SDL_WINDOW_OPENGL) && !(flags12 & SDL12_OPENGL)) { + /* OpenGL might not be installed, try again without that flag */ + flags20 &= ~SDL_WINDOW_OPENGL; + VideoWindow20 = SDL20_CreateWindow(WindowTitle, x, y, scaled_width, scaled_height, flags20); + } if (!VideoWindow20) { return EndVidModeCreate(); } @@ -8594,6 +8607,11 @@ SDL20_Delay(ticks); } +DECLSPEC12 char * SDLCALL +SDL_getenv(const char *name) +{ + return SDL12COMPAT_getenv_unsafe(name); +} DECLSPEC12 int SDLCALL SDL_putenv(const char *_var) @@ -8611,7 +8629,7 @@ } *ptr = '\0'; /* split the string into name and value. */ - SDL20_setenv(var, ptr + 1, 1); + SDL12COMPAT_setenv_unsafe(var, ptr + 1); SDL20_free(var); return 0; } @@ -9994,7 +10012,7 @@ } if (!want->format) { - const char *env = SDL20_getenv("SDL_AUDIO_FORMAT"); /* SDL 1.2 checks this. */ + const char *env = SDL12COMPAT_getenv_unsafe("SDL_AUDIO_FORMAT"); /* SDL 1.2 checks this. */ if (env != NULL) { if (SDL20_strcmp(env, "U8") == 0) { want->format = AUDIO_U8; } else if (SDL20_strcmp(env, "S8") == 0) { want->format = AUDIO_S8; } @@ -10013,7 +10031,7 @@ } if (!want->freq) { - const char *env = SDL20_getenv("SDL_AUDIO_FREQUENCY"); /* SDL 1.2 checks this. */ + const char *env = SDL12COMPAT_getenv_unsafe("SDL_AUDIO_FREQUENCY"); /* SDL 1.2 checks this. */ if (env != NULL) { want->freq = SDL20_atoi(env); } @@ -10024,7 +10042,7 @@ } if (!want->channels) { - const char *env = SDL20_getenv("SDL_AUDIO_CHANNELS"); /* SDL 1.2 checks this. */ + const char *env = SDL12COMPAT_getenv_unsafe("SDL_AUDIO_CHANNELS"); /* SDL 1.2 checks this. */ if (env != NULL) { want->channels = SDL20_atoi(env); } @@ -10034,7 +10052,7 @@ } if (!want->samples) { - const char *env = SDL20_getenv("SDL_AUDIO_SAMPLES"); /* SDL 1.2 checks this. */ + const char *env = SDL12COMPAT_getenv_unsafe("SDL_AUDIO_SAMPLES"); /* SDL 1.2 checks this. */ if (env != NULL) { want->samples = SDL20_atoi(env); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/SDL20_syms.h new/sdl12-compat-1.2.72/src/SDL20_syms.h --- old/sdl12-compat-1.2.70/src/SDL20_syms.h 2025-10-28 15:43:13.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/SDL20_syms.h 2025-11-05 19:30:07.000000000 +0100 @@ -273,7 +273,6 @@ SDL20_SYM_PASSTHROUGH(void *,calloc,(size_t a, size_t b),(a,b),return) SDL20_SYM_PASSTHROUGH(void *,realloc,(void *a, size_t b),(a,b),return) SDL20_SYM_PASSTHROUGH(void,free,(void *a),(a),) -SDL20_SYM_PASSTHROUGH(char *,getenv,(const char *a),(a),return) SDL20_SYM_PASSTHROUGH(void,qsort,(void *a, size_t b, size_t c, int (SDLCALL *d)(const void *, const void *)),(a,b,c,d),) SDL20_SYM_PASSTHROUGH(void *,memset,(void *a, int b, size_t c),(a,b,c),return) SDL20_SYM_PASSTHROUGH(void *,memcpy,(void *a, const void *b, size_t c),(a,b,c),return) @@ -337,6 +336,8 @@ SDL20_SYM(void,DestroyRenderer,(SDL_Renderer *a),(a),) SDL20_SYM(void,RenderPresent,(SDL_Renderer *a),(a),) +SDL20_SYM(SDL_bool,SetHintWithPriority,(const char *a, const char *b, SDL_HintPriority c),(a,b,c),return) + #ifdef _WIN32 SDL20_SYM_PASSTHROUGH(int,RegisterApp,(const char *a, Uint32 b, void *c),(a,b,c),return) SDL20_SYM_PASSTHROUGH(void,UnregisterApp,(void),(),) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/dr_mp3.h new/sdl12-compat-1.2.72/src/dr_mp3.h --- old/sdl12-compat-1.2.70/src/dr_mp3.h 2025-10-23 02:11:56.000000000 +0200 +++ new/sdl12-compat-1.2.72/src/dr_mp3.h 2025-11-29 22:05:24.000000000 +0100 @@ -3036,23 +3036,27 @@ ((drmp3_uint32)ape[26] << 16) | ((drmp3_uint32)ape[27] << 24); - streamEndOffset -= 32 + tagSize; - streamLen -= 32 + tagSize; - - /* Fire a metadata callback for the APE data. Must include both the main content and footer. */ - if (onMeta != NULL) { - /* We first need to seek to the start of the APE tag. */ - if (onSeek(pUserData, streamEndOffset, DRMP3_SEEK_END)) { - size_t apeTagSize = (size_t)tagSize + 32; - drmp3_uint8* pTagData = (drmp3_uint8*)drmp3_malloc(apeTagSize, pAllocationCallbacks); - if (pTagData != NULL) { - if (onRead(pUserData, pTagData, apeTagSize) == apeTagSize) { - drmp3__on_meta(pMP3, DRMP3_METADATA_TYPE_APE, pTagData, apeTagSize); - } + if (32 + tagSize < streamLen) { + streamEndOffset -= 32 + tagSize; + streamLen -= 32 + tagSize; + + /* Fire a metadata callback for the APE data. Must include both the main content and footer. */ + if (onMeta != NULL) { + /* We first need to seek to the start of the APE tag. */ + if (onSeek(pUserData, streamEndOffset, DRMP3_SEEK_END)) { + size_t apeTagSize = (size_t)tagSize + 32; + drmp3_uint8* pTagData = (drmp3_uint8*)drmp3_malloc(apeTagSize, pAllocationCallbacks); + if (pTagData != NULL) { + if (onRead(pUserData, pTagData, apeTagSize) == apeTagSize) { + drmp3__on_meta(pMP3, DRMP3_METADATA_TYPE_APE, pTagData, apeTagSize); + } - drmp3_free(pTagData, pAllocationCallbacks); + drmp3_free(pTagData, pAllocationCallbacks); + } } } + } else { + /* The tag size is larger than the stream. Invalid APE tag. */ } } } @@ -5031,6 +5035,7 @@ v0.7.2 - TBD - Reduce stack space to improve robustness on embedded systems. - Fix a compilation error with MSVC Clang toolset relating to cpuid. + - Fix an error with APE tag parsing. v0.7.1 - 2025-09-10 - Silence a warning with GCC. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl12-compat-1.2.70/src/version.rc new/sdl12-compat-1.2.72/src/version.rc --- old/sdl12-compat-1.2.70/src/version.rc 2025-10-29 20:26:24.000000000 +0100 +++ new/sdl12-compat-1.2.72/src/version.rc 2025-12-02 20:41:25.000000000 +0100 @@ -3,8 +3,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,2,70,0 - PRODUCTVERSION 1,2,70,0 + FILEVERSION 1,2,72,0 + PRODUCTVERSION 1,2,72,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x40004L @@ -17,12 +17,12 @@ BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "SDL\0" - VALUE "FileVersion", "1, 2, 70, 0\0" + VALUE "FileVersion", "1, 2, 72, 0\0" VALUE "InternalName", "SDL\0" VALUE "LegalCopyright", "Copyright (C) 2025 Sam Lantinga\0" VALUE "OriginalFilename", "SDL.dll\0" VALUE "ProductName", "Simple DirectMedia Layer 1.2 wrapper\0" - VALUE "ProductVersion", "1, 2, 70, 0\0" + VALUE "ProductVersion", "1, 2, 72, 0\0" END END BLOCK "VarFileInfo"
