BUGS
author Sam Lantinga <slouken@libsdl.org>
Thu, 16 May 2013 00:43:22 -0700
changeset 7180 3733e68edbc3
parent 2091 b8bee470f737
permissions -rw-r--r--
Fixed bug 1846 - _allmul implementation in SDL_stdlib.c doesn't clean up the stack

Colin Barrett

I see this manifest itself (VS2012 x86) as:

"Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention."

in the first call to SDL_GetTicks in my application. The disassembly at the problem line is:

hires_now.QuadPart *= 1000;
00AD0792 push 0
00AD0794 push 3E8h
00AD0799 mov eax,dword ptr [ebp-10h]
00AD079C push eax
00AD079D mov ecx,dword ptr [hires_now]
00AD07A0 push ecx
00AD07A1 call _allmul (0AE7D40h)
00AD07A6 mov dword ptr [hires_now],eax
00AD07A9 mov dword ptr [ebp-10h],edx

Apparently _allmul should be popping the stack but isn't (other similar functions in SDL_stdlib.c - _alldiv and whatnot - DO pop the stack).

A 'ret 10h' at the end of _allmul appears to do the trick
slouken@0
     1
icculus@2091
     2
Bugs are now managed in the SDL bug tracker, here:
slouken@0
     3
icculus@2091
     4
    http://bugzilla.libsdl.org/
slouken@0
     5
icculus@2091
     6
You may report bugs there, and search to see if a given issue has already
icculus@2091
     7
 been reported, discussed, and maybe even fixed.
slouken@0
     8
slouken@0
     9
slouken@27
    10
icculus@2091
    11
You may also find help at the SDL mailing list. Subscription information:
slouken@0
    12
icculus@2091
    13
    http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
slouken@250
    14
icculus@2091
    15
Bug reports are welcome here, but we really appreciate if you use Bugzilla, as
icculus@2091
    16
 bugs discussed on the mailing list may be forgotten or missed.
slouken@0
    17
slouken@27
    18