[Scummvm-devel] ScummVM 0.13.1. Ports are ready? PalmOS, PS2, NDS

Max Horn max at quendi.de
Wed Mar 25 11:11:45 CET 2009


Hi Max, all,


Am 24.03.2009 um 15:56 schrieb sunmax at libero.it:

> Hi there Sev,
>
> PS2 port was ready immediately after 0.13.0 was out.

Good.

>
> Now, the stack corruption (which luckily only shows with COMI
> and I tested quite a few games!) is unluckily still there.
>
> It could be misgenerated binary code out of the new hashmap,
> cause the PS2 dev vintage cross-compiler ICEs when trying to
> compile some of that. Not sure. Just a hunch.

Seems rather unlikely, but sure, can't hurt.

The change where the constructor of _defaultVal is not called BTW is  
in theory not without risk, too, but the only thing it should affect  
is this: Whenever one uses a HashMap with a plain data type (int,  
char, a pointer, ...) as type for the *VALUES*, and one then tries to  
read the value associated to a key which is NOT in the hashmap, *then*  
getVal() and operator[] may return a random value (namely, that of the  
uninited _defaultVal), instead of the "default" value for that type  
(e.g. 0).

This is a very specific and rare situation, however. Unlikely to be  
triggered anywhere. But you can test that easily: Just look for the  
code in HashMap::getVal (line 487) where it returns _defaultVal; set a  
breakpoint there (if you have gdb -- you could run this test on a  
desktop machine, too, of course, or insert an error() / assert call.  
This way, you'll easily find out if this happens prior to your stack  
smashing.



> Is there any chance Max (the good one: Horn) could hack a
> quick patch so that we can try the older hashmap in 0.13.x ?

Just copy the hashmap.h/.cpp from 0.12.x. The only change you have to  
make: MemoryPool::malloc was renamed to allocChunk, and free to  
freeChunk.



Bye,
Max




More information about the Scummvm-devel mailing list