Sadly I don't understand the template known as iterator in
C++, so I really can't say what is happening in this code.
That said, it would seem the ++i is iterating incorrectly
and picking some other address rather than the next surface
- because if it was working correctly I'm sure it would end
fail the i !=
m_surfaces.end() before it ever got to any invalid addresses
like NULL.
So perhaps the iterator is configured wrongly in some way
when it is created, or when surfaces are added to it.
Vincent Morénas wrote:
> Hi everyone,
>
> I am trying to make GtkRadiant1.5 (latest svn) succeeds
in loading
> md3 models without crashing at runtime and here is the
situation I
> found (the crash happens on both architectures ppc and
intel).
> I am using the Quake3 "museum.map" file to
trigger the crash.
> Using gdb/ddd, I noticed this : when Gtkradiant loads
femhead.md3
> (the first model used by the map), there is a call to
> model.updateAABB() in md3.cpp.
> In the updateAABB() procedure of the Model class in
model.h, there is
> a loop and the problem comes from that loop.
> At the beginnig, the loop variable i is correctly
defined and the
> first iteration runs ok. But things change for the
second : here are
> typical values I got :
> first iteration : i: _M_current = 0x73da700 *i:
(Surface *&)
> 0x73da700: 0x357b
> second iteration: i: _M_current = 0x73da704 *i:
(Surface *&)
> 0x73da704: 0x0 <-------- NULL pointer !!!
> and the program crashes at the call
(*i)->localAABB()
>
> I also noticed something which looks wrong to me,
related to the
> m_surfaces variables at this same point ; here are
some of the
> values I got from gdb :
> this->m_surfaces : _M_start 0x73da700
> _M_finish 0x73da718
> _M_end_of_storage 0x0 <----- NULL again
!!
>
> Any ideas or suggestions ?
> Thanks.
>
> V.
>
> _______________________________________________
> Gtkradiant mailing list
> Gtkradiant zerowing.idsoftware.com
> http://zerowing.idsoftware.com/cgi-bin/mailman
/listinfo/gtkradiant
>
--
LordHavoc
Author of DarkPlaces Quake1 engine and mod
http://icculu
s.org/twilight/darkplaces/
"War does not prove who is right, it proves who is
left." - Unknown
"Any sufficiently advanced technology is
indistinguishable from a rigged demo." - James Klass
_______________________________________________
Gtkradiant mailing list
Gtkradiant zerowing.idsoftware.com
http://zerowing.idsoftware.com/cgi-bin/mailman
/listinfo/gtkradiant
|