On Thu, Jul 10, 2008 at 7:18 AM, Julien Laumonier <[EMAIL PROTECTED]> wrote:

> Not sure if it is the same bug but i get a close related bug with
> worldtest with DEBUG_COLLISION on gcc 4.3. After moving the character,
> it cannot be stopped and seems to walk in a random direction, but not
> each time!

Yes, that's exactly the same.

> However, I
> checked why this behavior appears and it seems that when DEBUG_COLLISION
> is set, a new member (Image in the moving class) is used and seems to be
> not correctly handled.

Yes. It happens when libadonthell_world is compiled without
DEBUG_COLLISION. The extra member means that the heap gets corrupted
and direction information is read from the wrong memory address.

> In summary, I suggest many ways of dealing with this strange behavior :
> 1) Do not use DEBUG_COLLISION_ : not very useful but quick
> 2) Move the current_dir() method in the character.cc file : correct the
> behavior but not the reasons
> 3) Check the moving class or the resize method or any related thing.

A fourth possibility might be to use #if DEBUG_COLLISION instead of
#ifdef, because then a #define DEBUG_COLLISION 0 in worldtest.cc would
no longer trigger the issue.


> Another aspect on the map_view class is the initialization of the
> members. Args and Schedule should be initialized to NULL. Otherwise it
> could result in a segfault during the set_schedule() method.

Yeah. I tend to forget that. I'll fix that with the rest of my changes
to the world module. Thanks for letting me know :-).

Kai


_______________________________________________
Adonthell-devel mailing list
Adonthell-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/adonthell-devel

Reply via email to