File SDL-1.2.13-aliasing.patch of Package SDL

--- src/joystick/linux/SDL_sysjoystick.c
+++ src/joystick/linux/SDL_sysjoystick.c
@@ -371,7 +371,7 @@ static void LogicalSuffix(int logicalno,
 
 #if SDL_INPUT_LINUXEV
 #define test_bit(nr, addr) \
-	(((1UL << ((nr) & 31)) & (((const unsigned int *) addr)[(nr) >> 5])) != 0)
+	(((1UL << ((nr) % (sizeof(long) * 8))) & ((addr)[(nr) / (sizeof(long) * 8)])) != 0)
 
 static int EV_IsJoystick(int fd)
 {
--- src/video/x11/SDL_x11modes.c
+++ src/video/x11/SDL_x11modes.c
@@ -52,8 +52,25 @@ static int cmpmodelist(const void *va, c
 #if SDL_VIDEO_DRIVER_X11_VIDMODE
 Bool SDL_NAME(XF86VidModeGetModeInfo)(Display *dpy, int scr, SDL_NAME(XF86VidModeModeInfo) *info)
 {
-    SDL_NAME(XF86VidModeModeLine) *l = (SDL_NAME(XF86VidModeModeLine)*)((char*)info + sizeof info->dotclock);
-    return SDL_NAME(XF86VidModeGetModeLine)(dpy, scr, (int*)&info->dotclock, l);
+    SDL_NAME(XF86VidModeModeLine) l;
+    int dotclock;
+    Bool ret = SDL_NAME(XF86VidModeGetModeLine)(dpy, scr, &dotclock, &l);
+    if (ret) {
+	info->dotclock   = dotclock;
+	info->hdisplay   = l.hdisplay;
+	info->hsyncstart = l.hsyncstart;
+	info->hsyncend   = l.hsyncend;
+	info->htotal     = l.htotal;
+	info->hskew      = l.hskew;
+	info->vdisplay   = l.vdisplay;
+	info->vsyncstart = l.vsyncstart;
+	info->vsyncend   = l.vsyncend;
+	info->vtotal     = l.vtotal;
+	info->flags      = l.flags;
+	info->privsize   = l.privsize;
+	info->private    = l.private;
+    }
+    return ret;
 }
 #endif /* SDL_VIDEO_DRIVER_X11_VIDMODE */
 
openSUSE Build Service is sponsored by