[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gnash-commit] gnash ChangeLog server/character.cpp
From: |
strk |
Subject: |
Re: [Gnash-commit] gnash ChangeLog server/character.cpp |
Date: |
Mon, 17 Dec 2007 18:52:29 +0100 |
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;