Commit 9370bb5f authored by Ryan C. Gordon's avatar Ryan C. Gordon

Correct fix for Bugzilla #602.

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%403218
parent e88dc235
...@@ -214,12 +214,6 @@ SDL_NAME(XF86VidModeGetGamma)(Display *dpy, int screen, SDL_NAME(XF86VidModeGamm ...@@ -214,12 +214,6 @@ SDL_NAME(XF86VidModeGetGamma)(Display *dpy, int screen, SDL_NAME(XF86VidModeGamm
return True; return True;
} }
/* this is to prevent an unaligned memory write on CPUs that need that. */
static void zap_ptr(char *ptr, size_t size)
{
memset(ptr, '\0', size);
}
Bool Bool
SDL_NAME(XF86VidModeGetModeLine)(dpy, screen, dotclock, modeline) SDL_NAME(XF86VidModeGetModeLine)(dpy, screen, dotclock, modeline)
Display* dpy; Display* dpy;
...@@ -290,7 +284,7 @@ SDL_NAME(XF86VidModeGetModeLine)(dpy, screen, dotclock, modeline) ...@@ -290,7 +284,7 @@ SDL_NAME(XF86VidModeGetModeLine)(dpy, screen, dotclock, modeline)
} }
_XRead(dpy, (char*)modeline->private, modeline->privsize * sizeof(INT32)); _XRead(dpy, (char*)modeline->private, modeline->privsize * sizeof(INT32));
} else { } else {
zap_ptr((char *)&modeline->private, sizeof(modeline->private)); modeline->private = NULL;
} }
UnlockDisplay(dpy); UnlockDisplay(dpy);
SyncHandle(); SyncHandle();
......
...@@ -52,8 +52,25 @@ static int cmpmodelist(const void *va, const void *vb) ...@@ -52,8 +52,25 @@ static int cmpmodelist(const void *va, const void *vb)
#if SDL_VIDEO_DRIVER_X11_VIDMODE #if SDL_VIDEO_DRIVER_X11_VIDMODE
Bool SDL_NAME(XF86VidModeGetModeInfo)(Display *dpy, int scr, SDL_NAME(XF86VidModeModeInfo) *info) Bool SDL_NAME(XF86VidModeGetModeInfo)(Display *dpy, int scr, SDL_NAME(XF86VidModeModeInfo) *info)
{ {
SDL_NAME(XF86VidModeModeLine) *l = (SDL_NAME(XF86VidModeModeLine)*)((char*)info + sizeof info->dotclock); Bool retval;
return SDL_NAME(XF86VidModeGetModeLine)(dpy, scr, (int*)&info->dotclock, l); int dotclock;
SDL_NAME(XF86VidModeModeLine) l;
SDL_memset(&l, 0, sizeof(l));
retval = SDL_NAME(XF86VidModeGetModeLine)(dpy, scr, &dotclock, &l);
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 retval;
} }
#endif /* SDL_VIDEO_DRIVER_X11_VIDMODE */ #endif /* SDL_VIDEO_DRIVER_X11_VIDMODE */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment