[Swfdec] libswfdec/swfdec_as_frame.c

Benjamin Otte company at kemper.freedesktop.org
Thu Nov 1 11:47:51 PDT 2007


 libswfdec/swfdec_as_frame.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

New commits:
commit 212db734e1f16df3e4aa2adbe1b7129b930789a2
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Nov 1 19:47:03 2007 +0100

    pop the frame again if it the context aborts during/before swfdec_as_frame_preload()

diff --git a/libswfdec/swfdec_as_frame.c b/libswfdec/swfdec_as_frame.c
index c101b9c..f4d13f0 100644
--- a/libswfdec/swfdec_as_frame.c
+++ b/libswfdec/swfdec_as_frame.c
@@ -690,7 +690,7 @@ swfdec_as_frame_preload (SwfdecAsFrame *frame)
   if ((script->flags & (SWFDEC_SCRIPT_PRELOAD_ARGS | SWFDEC_SCRIPT_SUPPRESS_ARGS)) != SWFDEC_SCRIPT_SUPPRESS_ARGS) {
     args = swfdec_as_array_new (context);
     if (!args)
-      return;
+      goto out;
     for (cur = swfdec_as_stack_iterator_init_arguments (&iter, frame); cur != NULL;
 	cur = swfdec_as_stack_iterator_next (&iter)) {
       swfdec_as_array_push (SWFDEC_AS_ARRAY (args), cur);
@@ -786,6 +786,10 @@ swfdec_as_frame_preload (SwfdecAsFrame *frame)
   frame->block_end = frame->script->buffer->data + frame->script->buffer->length;
 
 out:
+  if (context->state == SWFDEC_AS_CONTEXT_ABORTED) {
+    swfdec_as_frame_return (frame, NULL);
+    return;
+  }
   if (context->debugger) {
     SwfdecAsDebuggerClass *klass = SWFDEC_AS_DEBUGGER_GET_CLASS (context->debugger);
 


More information about the Swfdec mailing list