Commit 5332650f authored by Ryan C. Gordon's avatar Ryan C. Gordon

Prevent crash from unaligned memory access on sparc64, etc.

Fixes Bugzilla #602. I suspect this will crash elsewhere if the system
 actually had modelines to report, though.

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%403204
parent 068b9fce
...@@ -214,6 +214,12 @@ SDL_NAME(XF86VidModeGetGamma)(Display *dpy, int screen, SDL_NAME(XF86VidModeGamm ...@@ -214,6 +214,12 @@ 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;
...@@ -284,7 +290,7 @@ SDL_NAME(XF86VidModeGetModeLine)(dpy, screen, dotclock, modeline) ...@@ -284,7 +290,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 {
modeline->private = NULL; zap_ptr((char *)&modeline->private, sizeof(modeline->private))
} }
UnlockDisplay(dpy); UnlockDisplay(dpy);
SyncHandle(); SyncHandle();
......
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