On Mon, Dec 17, 2007 at 07:41:43AM +0000, Zou Lunkai wrote: > CVSROOT: /sources/gnash > Module name: gnash > Changes by: Zou Lunkai <zoulunkai> 07/12/17 07:41:43 > > Modified files: > . : ChangeLog > server : character.cpp > > Log message: > * server/character.cpp: remove the assertion in charcter::destroy(), > it's not > correct as tests confirmed.
Zou, the assertion is there to sustain assumptions we make in the code. For example, void movie_root::cleanupUnloadedListeners(CharacterList& ll) uses isUnloaded() to decide wheter or not to drop references to characters, as movie_root::cleanupDisplayList() does with _liveChars. If we allow a character to return true from isDestroyed() w/out returning true from isUnloaded() we'll keep alive a lot of stuff. Planarity big might be one such case (https://savannah.gnu.org/bugs/?21782) or others... In any case, the state of a character can not go to destroyed w/out being first unloaded. call both unload() and then destroy() if needs be, or make destroy() set _unloaded. --strk; _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit