Benjamin Otte
2007-Jun-17 12:20 UTC
[Swfdec] Branch 'as' - libswfdec/swfdec_as_interpret.c
libswfdec/swfdec_as_interpret.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) New commits: diff-tree 38fbc1389267e593b44041018cbb1750bdcce0fb (from aaca94203d8a0ccb8feb32c0d57df3401fca0350) Author: Benjamin Otte <otte at gnome.org> Date: Sun Jun 17 14:19:45 2007 +0200 actually convert the values to a string when comparing strings diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c index 99ceb2b..9c98b45 100644 --- a/libswfdec/swfdec_as_interpret.c +++ b/libswfdec/swfdec_as_interpret.c @@ -780,7 +780,8 @@ swfdec_action_new_comparison_7 (SwfdecAs swfdec_as_stack_pop (cx->frame->stack); SWFDEC_AS_VALUE_SET_UNDEFINED (swfdec_as_stack_peek (cx->frame->stack, 1)); } else if (SWFDEC_AS_VALUE_IS_STRING (rval) || SWFDEC_AS_VALUE_IS_STRING (lval)) { - int comp = strcmp (SWFDEC_AS_VALUE_GET_STRING (rval), SWFDEC_AS_VALUE_GET_STRING (lval)); + int comp = strcmp (swfdec_as_value_to_string (cx, rval), + swfdec_as_value_to_string (cx, lval)); swfdec_as_stack_pop (cx->frame->stack); SWFDEC_AS_VALUE_SET_BOOLEAN (swfdec_as_stack_peek (cx->frame->stack, 1), action == 0x48 ? comp < 0 : comp > 0); } else {
Benjamin Otte
2007-Jun-20 14:39 UTC
[Swfdec] Branch 'as' - libswfdec/swfdec_as_interpret.c
libswfdec/swfdec_as_interpret.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) New commits: diff-tree d2871b604f89627469d6d4e314fad0c77b42fcff (from 28343be13ba26ae3f40c35433a188498ee84d98a) Author: Andreas Henriksson <andreas at fatal.se> Date: Wed Jun 20 16:38:18 2007 +0200 do StringEquals in a nicer way diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c index 306db72..e7a260a 100644 --- a/libswfdec/swfdec_as_interpret.c +++ b/libswfdec/swfdec_as_interpret.c @@ -1002,13 +1002,12 @@ swfdec_action_string_compare (SwfdecAsCo r = swfdec_as_value_to_string (cx, swfdec_as_stack_pop (cx->frame->stack)); l = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx->frame->stack, 1)); - comp = strcmp (l, r); switch (action) { case SWFDEC_AS_ACTION_STRING_EQUALS: - cond = comp == 0; + cond = l == r; break; case SWFDEC_AS_ACTION_STRING_LESS: - cond = comp < 0; + cond = strcmp (l, r) < 0; break; default: g_assert_not_reached ();
Benjamin Otte
2007-Jul-11 09:32 UTC
[Swfdec] Branch 'as' - libswfdec/swfdec_as_interpret.c
libswfdec/swfdec_as_interpret.c | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletion(-) New commits: diff-tree c066d38e799dcb3f96bf029a675f2166941c82c7 (from ecb27801942ecfe539553b4a5cfa7b632ac65da3) Author: Nguy???n Th??i Ng???c Duy <pclouds at gmail.com> Date: Wed Jul 11 11:27:40 2007 +0200 implement CloneSprite action It works in blocky.swf, but the rest is pretty much untested. diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c index 96a65a0..e0777e4 100644 --- a/libswfdec/swfdec_as_interpret.c +++ b/libswfdec/swfdec_as_interpret.c @@ -2083,6 +2083,36 @@ fail: swfdec_as_stack_pop (cx); } +static void +swfdec_action_clone_sprite (SwfdecAsContext *cx, guint action, const guint8 *data, guint len) +{ + SwfdecMovie *movie, *new_movie; + SwfdecAsObject *obj; + const char *new_name; + int depth; + + depth = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 1)) - 16384; + new_name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2)); + if (SWFDEC_AS_VALUE_IS_STRING (swfdec_as_stack_peek (cx, 3))) { + const char *name; + name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 3)); + swfdec_as_context_eval (cx, NULL, name, swfdec_as_stack_peek (cx, 3)); + } + obj = swfdec_as_value_to_object (cx, swfdec_as_stack_peek (cx, 3)); + if (!SWFDEC_IS_MOVIE(obj)) { + SWFDEC_ERROR ("Object is not an SwfdecMovie object"); + swfdec_as_stack_pop_n (cx, 3); + return; + } + movie = SWFDEC_MOVIE(obj); + new_movie = swfdec_movie_duplicate (movie, new_name, depth); + if (new_movie) { + SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->name, new_movie->name, new_movie->depth); + swfdec_movie_initialize (new_movie); + } + swfdec_as_stack_pop_n (cx, 3); +} + /*** PRINT FUNCTIONS ***/ static char * @@ -2420,7 +2450,7 @@ const SwfdecActionSpec swfdec_as_actions [0x21] = { "StringAdd", NULL, 2, 1, { NULL, swfdec_action_string_add, swfdec_action_string_add, swfdec_action_string_add, swfdec_action_string_add } }, [SWFDEC_AS_ACTION_GET_PROPERTY] = { "GetProperty", NULL, 2, 1, { NULL, swfdec_action_get_property, swfdec_action_get_property, swfdec_action_get_property, swfdec_action_get_property } }, [SWFDEC_AS_ACTION_SET_PROPERTY] = { "SetProperty", NULL, 3, 0, { NULL, swfdec_action_set_property, swfdec_action_set_property, swfdec_action_set_property, swfdec_action_set_property } }, - [SWFDEC_AS_ACTION_CLONE_SPRITE] = { "CloneSprite", NULL }, + [SWFDEC_AS_ACTION_CLONE_SPRITE] = { "CloneSprite", NULL, 3, 0, { NULL, swfdec_action_clone_sprite, swfdec_action_clone_sprite, swfdec_action_clone_sprite, swfdec_action_clone_sprite } }, [SWFDEC_AS_ACTION_REMOVE_SPRITE] = { "RemoveSprite", NULL, 1, 0, { NULL, swfdec_action_remove_sprite, swfdec_action_remove_sprite, swfdec_action_remove_sprite, swfdec_action_remove_sprite } }, [SWFDEC_AS_ACTION_TRACE] = { "Trace", NULL, 1, 0, { NULL, swfdec_action_trace, swfdec_action_trace, swfdec_action_trace, swfdec_action_trace } }, [SWFDEC_AS_ACTION_START_DRAG] = { "StartDrag", NULL, -1, 0, { NULL, swfdec_action_start_drag, swfdec_action_start_drag, swfdec_action_start_drag, swfdec_action_start_drag } },
Possibly Parallel Threads
- 14 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_interpret.h libswfdec/swfdec_net_stream.c libswfdec/swfdec_script.c libswfdec/swfdec_sprite_movie.c libswfdec/swfdec_tag.c libswfdec/swfdec_text_field_movie.c
- Youtube broken by 89d295a94
- Branch 'as' - 5 commits - libswfdec-gtk/swfdec_playback_alsa.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_movie.c test/trace
- Branch 'as' - 2 commits - libswfdec/swfdec_as_interpret.c
- Branch 'interpreter' - 8 commits - libswfdec/swfdec_bits.c libswfdec/swfdec_bits.h libswfdec/swfdec_js.c libswfdec/swfdec_js.h libswfdec/swfdec_script.c test/swfdec_out.c test/swfdec_out.h test/swfedit_tag.c test/swfedit_token.c test/swfedit_token.h