[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