[Swfdec-commits] Branch '0.6' - 3 commits - swfdec/swfdec_as_context.c swfdec/swfdec_as_interpret.c
Pekka Lampila
medar at kemper.freedesktop.org
Wed May 28 04:48:28 PDT 2008
swfdec/swfdec_as_context.c | 4 ++++
swfdec/swfdec_as_interpret.c | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
New commits:
commit 43edd10454bfd1fe5fc7a31f67400d78904821a0
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed May 28 14:07:35 2008 +0300
Fix exception fired when ending a block not handled immediately
This allowed one more action to be ran after throwing and catching, could lead
to assert
diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index f2b4d09..24b25c6 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -907,7 +907,11 @@ start:
pc = frame->pc;
if (frame != context->frame)
goto start;
+ if (context->exception)
+ break;
}
+ if (context->exception)
+ continue;
/* decode next action */
action = *pc;
commit 395097ce4092b142f545b3e1bf9785899135fb0b
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed May 28 14:43:15 2008 +0300
Fix try actions that have only a catch statement
Conflicts:
swfdec/swfdec_as_interpret.c
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 98859be..eedd896 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -2606,7 +2606,7 @@ swfdec_action_try_end_catch (SwfdecAsFrame *frame, gpointer data)
cx = SWFDEC_AS_OBJECT (frame)->context;
- if (swfdec_as_context_catch (cx, &val))
+ if (try_data->finally_start && swfdec_as_context_catch (cx, &val))
{
// we got an exception while in catch block:
// create new block for finally to pass on the exception
commit d84dd3d3a23745cee2c23642bbc1c81a5483e7d4
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed May 28 14:42:20 2008 +0300
Fix handling of try actions with only finally statement
Conflicts:
swfdec/swfdec_as_interpret.c
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index ff0a66c..98859be 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -2726,7 +2726,7 @@ swfdec_action_try (SwfdecAsContext *cx, guint action, const guint8 *data, guint
if (use_catch)
try_data->catch_start = data + len + try_size;
if (use_finally)
- try_data->finally_start = try_data->catch_start + try_data->catch_size;
+ try_data->finally_start = data + len + try_size + try_data->catch_size;
if (try_data->use_register) {
try_data->register_number = swfdec_bits_get_u8 (&bits);
More information about the Swfdec-commits
mailing list