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);