<div><font style="BACKGROUND-COLOR: #ece9ed">Hello,</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">I got a question about the script function class(SwfdecAsScriptFunction) design in swfdec.</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">Why doesn&#39;t a script function mark its target(SwfdecAsScriptFunction::target) in the marking phase?  What if the function&#39;s target has been destroyed while the function itself is still kept alive? (Answer myself: then there would be  a segfault when executing that function)</font></div>

<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">Let me give a more specific case:</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">(1)swf(movie) &#39;A&#39; defines a script function  &#39;movie_a_func()&#39; inside its body.</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed">(2)swf(movie) &#39;B&#39; loads  movie &#39;A&#39; at runtime by using loadMovieNum(&#39;A.swf&#39;, 2);</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed">(3)movie &#39;B&#39; then create a reference to function &#39;movie_a_func()&#39; , eg.  movie_b_func = _level2.movie_a_func;</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed">(4)unload movie &#39;A&#39; by using _level2.unloadMovie(); </font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed">(5)next frame;  //Note target of  &#39;&#39;movie_a_func&#39;, which is &#39;A&#39; is destroyed and collected here.</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed">(6)call function  &#39;movie_b_func&#39;;  // bomb, trying to reference its target(movie A) that is already freed.</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">The above case could happen more easily when set GC threshold to zero(alway gc). </font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">The obvious fix to me is always marking the target of a script function, but I am not 100% sure if it&#39;s the right way.  It would be helpful if anyone could confirm with me. (BTW, I&#39;v made the real tests described as above.)</font></div>

<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">Yes, I&#39;ll file a bug if get confirmed or at least there is someone concerning this mail.</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed">--zou</font></div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>
<div><font style="BACKGROUND-COLOR: #ece9ed"></font> </div>