From 11eb4c00144d33e202ca0eaf6daff5d4f0346270 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 1 Mar 2006 09:43:47 +0000 Subject: [PATCH] Fixed a bunch of 64-bit compatibility problems --- VisualC.zip | Bin 42437 -> 42516 bytes configure.in | 2 +- include/SDL_stdinc.h | 12 +++++ src/audio/windib/SDL_dibaudio.c | 8 ++-- src/cdrom/win32/SDL_syscdrom.c | 2 +- src/file/SDL_rwops.c | 4 +- src/stdlib/SDL_getenv.c | 6 +-- src/stdlib/SDL_malloc.c | 2 +- src/stdlib/SDL_qsort.c | 4 +- src/stdlib/SDL_string.c | 69 ++++++++++++++++++++++++++-- src/video/SDL_RLEaccel.c | 14 +++--- src/video/SDL_blit_A.c | 6 +-- src/video/SDL_surface.c | 4 +- src/video/wincommon/SDL_sysevents.c | 4 +- src/video/wincommon/SDL_sysmouse.c | 2 +- src/video/wincommon/SDL_syswm.c | 2 +- src/video/windib/SDL_dibevents.c | 11 ++--- src/video/windx5/SDL_dx5events.c | 13 +++--- 18 files changed, 117 insertions(+), 48 deletions(-) diff --git a/VisualC.zip b/VisualC.zip index a9db1f643144d1936b6256e4baf96fd1e28afa7c..9e5f6e2551f297302ff6050bfa123d62395f8e23 100644 GIT binary patch delta 6477 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¾Wj;^29 delta 6375 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 + size_t d=(((last-first)/size)>>3)*size; char *m1,*m2,*m3; { char *a=first, *b=first+d, *c=first+2*d; #ifdef DEBUG_QSORT @@ -414,7 +414,7 @@ void qsort(void *base, size_t nmemb, size_t size, int (*compare)(const void *, const void *)) { if (nmemb<=1) return; - if (((int)base|size)&(WORD_BYTES-1)) + if (((uintptr_t)base|size)&(WORD_BYTES-1)) qsort_nonaligned(base,nmemb,size,compare); else if (size!=WORD_BYTES) qsort_aligned(base,nmemb,size,compare); diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index 54ca1d6ee..9c533fe02 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -69,7 +69,7 @@ static size_t SDL_ScanLong(const char *text, int radix, long *valuep) } #endif -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOD) +#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD) static size_t SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep) { const char *textstart = text; @@ -100,6 +100,37 @@ static size_t SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *v } #endif +#ifndef HAVE_SSCANF +static size_t SDL_ScanUintPtrT(const char *text, int radix, uintptr_t *valuep) +{ + const char *textstart = text; + uintptr_t value = 0; + + if ( radix == 16 && SDL_strncmp(text, "0x", 2) == 0 ) { + text += 2; + } + for ( ; ; ) { + int v; + if ( SDL_isdigit(*text) ) { + v = *text - '0'; + } else if ( radix == 16 && SDL_isupperhex(*text) ) { + v = 10 + (*text - 'A'); + } else if ( radix == 16 && SDL_islowerhex(*text) ) { + v = 10 + (*text - 'a'); + } else { + break; + } + value *= radix; + value += v; + ++text; + } + if ( valuep ) { + *valuep = value; + } + return (text - textstart); +} +#endif + #ifdef SDL_HAS_64BIT_TYPE #if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOLL) static size_t SDL_ScanLongLong(const char *text, int radix, Sint64 *valuep) @@ -141,7 +172,7 @@ static size_t SDL_ScanLongLong(const char *text, int radix, Sint64 *valuep) } #endif -#ifndef HAVE_SSCANF +#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOULL) static size_t SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 *valuep) { const char *textstart = text; @@ -488,6 +519,20 @@ long SDL_strtol(const char *string, char **endp, int base) } #endif +#ifndef HAVE_STRTOUL +unsigned long SDL_strtoul(const char *string, char **endp, int base) +{ + size_t len; + unsigned long value; + + len = SDL_ScanUnsignedLong(string, base ? base : 10, &value); + if ( endp ) { + *endp = (char *)string + len; + } + return value; +} +#endif + #ifdef SDL_HAS_64BIT_TYPE #ifndef HAVE__I64TOA @@ -556,6 +601,20 @@ Sint64 SDL_strtoll(const char *string, char **endp, int base) } #endif +#ifndef HAVE_STRTOULL +Uint64 SDL_strtoull(const char *string, char **endp, int base) +{ + size_t len; + Uint64 value; + + len = SDL_ScanUnsignedLongLong(string, base ? base : 10, &value); + if ( endp ) { + *endp = (char *)string + len; + } + return value; +} +#endif + #endif /* SDL_HAS_64BIT_TYPE */ #ifndef HAVE_STRTOD @@ -817,8 +876,8 @@ int SDL_sscanf(const char *text, const char *fmt, ...) break; case 'p': { - unsigned long value; - text += SDL_ScanUnsignedLong(text, 16, &value); + uintptr_t value; + text += SDL_ScanUintPtrT(text, 16, &value); if ( ! suppress ) { void** valuep = va_arg(ap, void**); *valuep = (void*)value; @@ -1003,7 +1062,7 @@ static size_t SDL_PrintString(char *text, const char *string, size_t maxlen) } return (text - textstart); } -int SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap) +int SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap) { char *textstart = text; if ( maxlen <= 0 ) { diff --git a/src/video/SDL_RLEaccel.c b/src/video/SDL_RLEaccel.c index cba9ace76..cf33352ba 100644 --- a/src/video/SDL_RLEaccel.c +++ b/src/video/SDL_RLEaccel.c @@ -587,12 +587,12 @@ do { \ unsigned n = (length); \ Uint16 *src = (Uint16 *)(from); \ Uint16 *dst = (Uint16 *)(to); \ - if(((unsigned long)src ^ (unsigned long)dst) & 3) { \ + if(((uintptr_t)src ^ (uintptr_t)dst) & 3) { \ /* source and destination not in phase, blit one by one */ \ while(n--) \ BLEND16_50(dst, src, mask); \ } else { \ - if((unsigned long)src & 3) { \ + if((uintptr_t)src & 3) { \ /* first odd pixel */ \ BLEND16_50(dst, src, mask); \ n--; \ @@ -1055,7 +1055,7 @@ static void RLEAlphaClipBlit(int w, Uint8 *srcbuf, SDL_Surface *dst, } while(ofs < w); \ /* skip padding if necessary */ \ if(sizeof(Ptype) == 2) \ - srcbuf += (unsigned long)srcbuf & 2; \ + srcbuf += (uintptr_t)srcbuf & 2; \ /* blit translucent pixels on the same line */ \ ofs = 0; \ do { \ @@ -1147,7 +1147,7 @@ int SDL_RLEAlphaBlit(SDL_Surface *src, SDL_Rect *srcrect, } while(ofs < w); /* skip padding */ - srcbuf += (unsigned long)srcbuf & 2; + srcbuf += (uintptr_t)srcbuf & 2; /* skip translucent line */ ofs = 0; @@ -1211,7 +1211,7 @@ int SDL_RLEAlphaBlit(SDL_Surface *src, SDL_Rect *srcrect, } while(ofs < w); \ /* skip padding if necessary */ \ if(sizeof(Ptype) == 2) \ - srcbuf += (unsigned long)srcbuf & 2; \ + srcbuf += (uintptr_t)srcbuf & 2; \ /* blit translucent pixels on the same line */ \ ofs = 0; \ do { \ @@ -1547,7 +1547,7 @@ static int RLEAlphaSurface(SDL_Surface *surface) } while(x < w); /* Make sure the next output address is 32-bit aligned */ - dst += (unsigned long)dst & 2; + dst += (uintptr_t)dst & 2; /* Next, encode all translucent pixels of the same scan line */ x = 0; @@ -1874,7 +1874,7 @@ static SDL_bool UnRLEAlpha(SDL_Surface *surface) /* skip padding if needed */ if(bpp == 2) - srcbuf += (unsigned long)srcbuf & 2; + srcbuf += (uintptr_t)srcbuf & 2; /* copy translucent pixels */ ofs = 0; diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index e94fdf66e..e66836bbc 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -1442,7 +1442,7 @@ static void Blit16to16SurfaceAlpha128(SDL_BlitInfo *info, Uint16 mask) int dstskip = info->d_skip >> 1; while(height--) { - if(((unsigned long)srcp ^ (unsigned long)dstp) & 2) { + if(((uintptr_t)srcp ^ (uintptr_t)dstp) & 2) { /* * Source and destination not aligned, pipeline it. * This is mostly a win for big blits but no loss for @@ -1452,7 +1452,7 @@ static void Blit16to16SurfaceAlpha128(SDL_BlitInfo *info, Uint16 mask) int w = width; /* handle odd destination */ - if((unsigned long)dstp & 2) { + if((uintptr_t)dstp & 2) { Uint16 d = *dstp, s = *srcp; *dstp = BLEND16_50(d, s, mask); dstp++; @@ -1499,7 +1499,7 @@ static void Blit16to16SurfaceAlpha128(SDL_BlitInfo *info, Uint16 mask) int w = width; /* first odd pixel? */ - if((unsigned long)srcp & 2) { + if((uintptr_t)srcp & 2) { Uint16 d = *dstp, s = *srcp; *dstp = BLEND16_50(d, s, mask); srcp++; diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index 578401ac7..7ef8565cb 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -604,7 +604,7 @@ int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) dstrect->x*dst->format->BytesPerPixel; if ( dst->format->palette || (color == 0) ) { x = dstrect->w*dst->format->BytesPerPixel; - if ( !color && !((long)row&3) && !(x&3) && !(dst->pitch&3) ) { + if ( !color && !((uintptr_t)row&3) && !(x&3) && !(dst->pitch&3) ) { int n = x >> 2; for ( y=dstrect->h; y; --y ) { SDL_memset4(row, 0, n); @@ -690,7 +690,7 @@ int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) Uint16 c = (Uint16)color; Uint32 cc = (Uint32)c << 16 | c; int n = dstrect->w; - if((unsigned long)pixels & 3) { + if((uintptr_t)pixels & 3) { *pixels++ = c; n--; } diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c index 1f7b32995..b26e48867 100644 --- a/src/video/wincommon/SDL_sysevents.c +++ b/src/video/wincommon/SDL_sysevents.c @@ -191,7 +191,7 @@ static BOOL WINAPI WIN_TrackMouseEvent(TRACKMOUSEEVENT *ptme) { if ( ptme->dwFlags == TME_LEAVE ) { return SetTimer(ptme->hwndTrack, ptme->dwFlags, 100, - (TIMERPROC)TrackMouseTimerProc); + (TIMERPROC)TrackMouseTimerProc) != 0; } return FALSE; } @@ -247,7 +247,7 @@ static void WIN_GetKeyboardState(void) /* The main Win32 event handler DJM: This is no longer static as (DX5/DIB)_CreateWindow needs it */ -LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { SDL_VideoDevice *this = current_video; static int mouse_pressed = 0; diff --git a/src/video/wincommon/SDL_sysmouse.c b/src/video/wincommon/SDL_sysmouse.c index f7138eda0..0f7c8f395 100644 --- a/src/video/wincommon/SDL_sysmouse.c +++ b/src/video/wincommon/SDL_sysmouse.c @@ -172,7 +172,7 @@ WMcursor *WIN_CreateWMCursor(_THIS, /* Create the cursor */ cursor->curs = CreateCursor( - (HINSTANCE)GetWindowLong(SDL_Window, GWL_HINSTANCE), + (HINSTANCE)GetWindowLongPtr(SDL_Window, GWL_HINSTANCE), hot_x, hot_y, allowed_x, allowed_y, cursor->ands, cursor->xors); if ( cursor->curs == NULL ) { diff --git a/src/video/wincommon/SDL_syswm.c b/src/video/wincommon/SDL_syswm.c index 85046b12a..73b27bc0b 100644 --- a/src/video/wincommon/SDL_syswm.c +++ b/src/video/wincommon/SDL_syswm.c @@ -220,7 +220,7 @@ void WIN_SetWMIcon(_THIS, SDL_Surface *icon, Uint8 *mask) if ( screen_icn == NULL ) { SDL_SetError("Couldn't create Win32 icon handle"); } else { - SetClassLong(SDL_Window, GCL_HICON, (LONG)screen_icn); + SetClassLongPtr(SDL_Window, GCL_HICON, (LONG_PTR)screen_icn); } SDL_stack_free(icon_win32); #endif /* DISABLE_ICON_SUPPORT */ diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c index 25986495c..177d4993c 100644 --- a/src/video/windib/SDL_dibevents.c +++ b/src/video/windib/SDL_dibevents.c @@ -84,8 +84,7 @@ WPARAM rotateKey(WPARAM key,SDL_ScreenOrientation direction) /* The main Win32 event handler */ -LONG - DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { extern int posted; @@ -417,7 +416,7 @@ int DIB_CreateWindow(_THIS) SDL_Window = (HWND)wcstol(windowid_t, NULL, 0); SDL_free(windowid_t); #else - SDL_Window = (HWND)SDL_strtol(windowid, NULL, 0); + SDL_Window = (HWND)SDL_strtoull(windowid, NULL, 0); #endif if ( SDL_Window == NULL ) { SDL_SetError("Couldn't get user specified window"); @@ -427,8 +426,8 @@ int DIB_CreateWindow(_THIS) /* DJM: we want all event's for the user specified window to be handled by SDL. */ - userWindowProc = (WNDPROCTYPE)GetWindowLong(SDL_Window, GWL_WNDPROC); - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage); + userWindowProc = (WNDPROCTYPE)GetWindowLongPtr(SDL_Window, GWL_WNDPROC); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)WinMessage); } else { SDL_Window = CreateWindow(SDL_Appname, SDL_Appname, (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX), @@ -445,7 +444,7 @@ int DIB_CreateWindow(_THIS) void DIB_DestroyWindow(_THIS) { if ( SDL_windowid ) { - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)userWindowProc); } else { DestroyWindow(SDL_Window); } diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c index 659577014..bebc45147 100644 --- a/src/video/windx5/SDL_dx5events.c +++ b/src/video/windx5/SDL_dx5events.c @@ -476,8 +476,7 @@ static void handle_mouse(const int numevents, DIDEVICEOBJECTDATA *ptrbuf) } /* The main Win32 event handler */ -LONG - DX5_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT DX5_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { #ifdef WM_ACTIVATEAPP @@ -503,7 +502,7 @@ LONG #ifdef WM_DISPLAYCHANGE case WM_DISPLAYCHANGE: { - WORD BitsPerPixel; + WPARAM BitsPerPixel; WORD SizeX, SizeY; /* Ack! The display changed size and/or depth! */ @@ -866,7 +865,7 @@ int DX5_CreateWindow(_THIS) SDL_windowid = (windowid != NULL); if ( SDL_windowid ) { - SDL_Window = (HWND)SDL_strtol(windowid, NULL, 0); + SDL_Window = (HWND)SDL_strtoull(windowid, NULL, 0); if ( SDL_Window == NULL ) { SDL_SetError("Couldn't get user specified window"); return(-1); @@ -875,8 +874,8 @@ int DX5_CreateWindow(_THIS) /* DJM: we want all event's for the user specified window to be handled by SDL. */ - userWindowProc = (WNDPROCTYPE)GetWindowLong(SDL_Window, GWL_WNDPROC); - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage); + userWindowProc = (WNDPROCTYPE)GetWindowLongPtr(SDL_Window, GWL_WNDPROC); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)WinMessage); } else { SDL_Window = CreateWindow(SDL_Appname, SDL_Appname, (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX), @@ -904,7 +903,7 @@ void DX5_DestroyWindow(_THIS) /* Destroy our window */ if ( SDL_windowid ) { - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)userWindowProc); } else { DestroyWindow(SDL_Window); }