Benjamin Otte
2007-May-31 21:56 UTC
[Swfdec] Branch 'as' - 8 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_string.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_as_types.c test/trace
libswfdec/swfdec_as_context.c | 20 + libswfdec/swfdec_as_interpret.c | 9 libswfdec/swfdec_as_string.c | 15 - libswfdec/swfdec_as_strings.c | 2 libswfdec/swfdec_as_types.c | 2 test/trace/Makefile.am | 28 + test/trace/isnan-5.swf |binary test/trace/isnan-5.swf.trace | 7 test/trace/isnan-6.swf |binary test/trace/isnan-6.swf.trace | 7 test/trace/isnan-7.swf |binary test/trace/isnan-7.swf.trace | 7 test/trace/isnan.as | 9 test/trace/set-overwrite-global-5.swf |binary test/trace/set-overwrite-global-5.swf.trace | 7 test/trace/set-overwrite-global-6.swf |binary test/trace/set-overwrite-global-6.swf.trace | 7 test/trace/set-overwrite-global-7.swf |binary test/trace/set-overwrite-global-7.swf.trace | 7 test/trace/set-overwrite-global.as | 13 test/trace/string-convert-5.swf |binary test/trace/string-convert-5.swf.trace | 5 test/trace/string-convert-6.swf |binary test/trace/string-convert-6.swf.trace | 6 test/trace/string-convert-7.swf |binary test/trace/string-convert-7.swf.trace | 6 test/trace/string-convert.as | 37 ++ test/trace/substr-5.swf |binary test/trace/substr-5.swf.trace | 420 ++++++++++++++++++++++++++++ test/trace/substr-6.swf |binary test/trace/substr-6.swf.trace | 420 ++++++++++++++++++++++++++++ test/trace/substr-7.swf |binary test/trace/substr-7.swf.trace | 420 ++++++++++++++++++++++++++++ test/trace/substr.as | 12 34 files changed, 1458 insertions(+), 8 deletions(-) New commits: diff-tree 3c0a7a24da1aa0e7f87c65deb3872b6e95dfa5e4 (from 41b2667964b52d329563d8dc1416159db3fc8fe4) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 12:35:57 2007 +0200 add simple test for isNaN and isFinite diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index a4df73a..273b70b 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -166,6 +166,13 @@ EXTRA_DIST = \ height3.swf.trace \ height4.swf \ height4.swf.trace \ + isnan.as \ + isnan-5.swf \ + isnan-5.swf.trace \ + isnan-6.swf \ + isnan-6.swf.trace \ + isnan-7.swf \ + isnan-7.swf.trace \ lifetime1.swf \ lifetime1.swf.trace \ load-4.swf \ diff --git a/test/trace/isnan-5.swf b/test/trace/isnan-5.swf new file mode 100644 index 0000000..58da1e1 Binary files /dev/null and b/test/trace/isnan-5.swf differ diff --git a/test/trace/isnan-5.swf.trace b/test/trace/isnan-5.swf.trace new file mode 100644 index 0000000..4917d7e --- /dev/null +++ b/test/trace/isnan-5.swf.trace @@ -0,0 +1,7 @@ +Check isNaN and isFinite +Infinity: inifinite +-Infinity: inifinite +NaN: inifinite, NaN +0: finite +_level0: inifinite, NaN +true: finite diff --git a/test/trace/isnan-6.swf b/test/trace/isnan-6.swf new file mode 100644 index 0000000..9983703 Binary files /dev/null and b/test/trace/isnan-6.swf differ diff --git a/test/trace/isnan-6.swf.trace b/test/trace/isnan-6.swf.trace new file mode 100644 index 0000000..4917d7e --- /dev/null +++ b/test/trace/isnan-6.swf.trace @@ -0,0 +1,7 @@ +Check isNaN and isFinite +Infinity: inifinite +-Infinity: inifinite +NaN: inifinite, NaN +0: finite +_level0: inifinite, NaN +true: finite diff --git a/test/trace/isnan-7.swf b/test/trace/isnan-7.swf new file mode 100644 index 0000000..153586a Binary files /dev/null and b/test/trace/isnan-7.swf differ diff --git a/test/trace/isnan-7.swf.trace b/test/trace/isnan-7.swf.trace new file mode 100644 index 0000000..4917d7e --- /dev/null +++ b/test/trace/isnan-7.swf.trace @@ -0,0 +1,7 @@ +Check isNaN and isFinite +Infinity: inifinite +-Infinity: inifinite +NaN: inifinite, NaN +0: finite +_level0: inifinite, NaN +true: finite diff --git a/test/trace/isnan.as b/test/trace/isnan.as new file mode 100644 index 0000000..cc7690a --- /dev/null +++ b/test/trace/isnan.as @@ -0,0 +1,9 @@ +// makeswf -v 7 -s 200x150 -r 1 -o isnan.swf isnan.as + +trace ("Check isNaN and isFinite"); +numbers = [ Infinity, -Infinity, NaN, 0, this, true ]; +for (i = 0; i < numbers.length; i++) { + trace (numbers[i] + (isFinite (numbers[i]) ? ": finite" : ": inifinite") + (isNaN (numbers[i]) ? ", NaN" : "")); +}; + +loadMovie ("FSCommand:quit", ""); diff-tree 41b2667964b52d329563d8dc1416159db3fc8fe4 (from 9455718a161adcddb76a64ad8e56574bf33a085f) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 12:34:57 2007 +0200 implement isFinite and isNaN diff --git a/libswfdec/swfdec_as_context.c b/libswfdec/swfdec_as_context.c index 2b5cefe..d899d1e 100644 --- a/libswfdec/swfdec_as_context.c +++ b/libswfdec/swfdec_as_context.c @@ -763,6 +763,20 @@ swfdec_as_context_ASSetPropFlags (Swfdec } static void +swfdec_as_context_isFinite (SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) +{ + double d = swfdec_as_value_to_number (object->context, &argv[0]); + SWFDEC_AS_VALUE_SET_BOOLEAN (retval, isfinite (d) ? TRUE : FALSE); +} + +static void +swfdec_as_context_isNaN (SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) +{ + double d = swfdec_as_value_to_number (object->context, &argv[0]); + SWFDEC_AS_VALUE_SET_BOOLEAN (retval, isnan (d) ? TRUE : FALSE); +} + +static void swfdec_as_context_parseInt (SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) { int i = swfdec_as_value_to_integer (object->context, &argv[0]); @@ -780,6 +794,10 @@ swfdec_as_context_init_global (SwfdecAsC swfdec_as_object_set_variable (context->global, SWFDEC_AS_STR_NaN, &val); SWFDEC_AS_VALUE_SET_NUMBER (&val, HUGE_VAL); swfdec_as_object_set_variable (context->global, SWFDEC_AS_STR_Infinity, &val); + swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_isFinite, 0, + swfdec_as_context_isFinite, 1); + swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_isNaN, 0, + swfdec_as_context_isNaN, 1); swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_parseInt, 0, swfdec_as_context_parseInt, 1); } diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c index 5b3c2f2..a68b8e0 100644 --- a/libswfdec/swfdec_as_strings.c +++ b/libswfdec/swfdec_as_strings.c @@ -197,6 +197,8 @@ const char swfdec_as_strings[] = SWFDEC_AS_CONSTANT_STRING ("substring") SWFDEC_AS_CONSTANT_STRING ("toLowerCase") SWFDEC_AS_CONSTANT_STRING ("toUpperCase") + SWFDEC_AS_CONSTANT_STRING ("isFinite") + SWFDEC_AS_CONSTANT_STRING ("isNaN") /* add more here */ ; diff-tree 9455718a161adcddb76a64ad8e56574bf33a085f (from 3f57d29295a312faa09d60fbaf9081c662fc4662) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 12:03:46 2007 +0200 functions convert to string as [type Function] autmatically in Flash 5 diff --git a/libswfdec/swfdec_as_types.c b/libswfdec/swfdec_as_types.c index fff1232..9105a96 100644 --- a/libswfdec/swfdec_as_types.c +++ b/libswfdec/swfdec_as_types.c @@ -194,6 +194,8 @@ swfdec_as_value_to_string (SwfdecAsConte swfdec_as_object_call (object, SWFDEC_AS_STR_toString, 0, NULL, &ret); if (SWFDEC_AS_VALUE_IS_STRING (&ret)) return SWFDEC_AS_VALUE_GET_STRING (&ret); + else if (context->version <= 5 && SWFDEC_IS_AS_FUNCTION (SWFDEC_AS_VALUE_GET_OBJECT (value))) + return SWFDEC_AS_STR__type_Function_; else return SWFDEC_AS_STR__type_Object_; } diff-tree 3f57d29295a312faa09d60fbaf9081c662fc4662 (from 69b736a2fb59840c11fa4a5a79441e4af953a850) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 11:37:42 2007 +0200 add test that checks global properties don't get overwritten by default diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 1133cf7..a4df73a 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -218,6 +218,13 @@ EXTRA_DIST = \ scope.swf.trace \ scope2.swf \ scope2.swf.trace \ + set-overwrite-global-5.swf \ + set-overwrite-global-6.swf \ + set-overwrite-global-7.swf \ + set-overwrite-global.as \ + set-overwrite-global-5.swf.trace \ + set-overwrite-global-6.swf.trace \ + set-overwrite-global-7.swf.trace \ setinterval.swf \ setinterval.swf.trace \ setinterval2.swf \ diff --git a/test/trace/set-overwrite-global-5.swf b/test/trace/set-overwrite-global-5.swf new file mode 100644 index 0000000..bc9e4a7 Binary files /dev/null and b/test/trace/set-overwrite-global-5.swf differ diff --git a/test/trace/set-overwrite-global-5.swf.trace b/test/trace/set-overwrite-global-5.swf.trace new file mode 100644 index 0000000..cbba397 --- /dev/null +++ b/test/trace/set-overwrite-global-5.swf.trace @@ -0,0 +1,7 @@ +Check the global object doesn't get overwritten when defining variables +[type Function] +undefined +42 +42 +[type Function] +undefined diff --git a/test/trace/set-overwrite-global-6.swf b/test/trace/set-overwrite-global-6.swf new file mode 100644 index 0000000..b35ef23 Binary files /dev/null and b/test/trace/set-overwrite-global-6.swf differ diff --git a/test/trace/set-overwrite-global-6.swf.trace b/test/trace/set-overwrite-global-6.swf.trace new file mode 100644 index 0000000..cbba397 --- /dev/null +++ b/test/trace/set-overwrite-global-6.swf.trace @@ -0,0 +1,7 @@ +Check the global object doesn't get overwritten when defining variables +[type Function] +undefined +42 +42 +[type Function] +undefined diff --git a/test/trace/set-overwrite-global-7.swf b/test/trace/set-overwrite-global-7.swf new file mode 100644 index 0000000..2060852 Binary files /dev/null and b/test/trace/set-overwrite-global-7.swf differ diff --git a/test/trace/set-overwrite-global-7.swf.trace b/test/trace/set-overwrite-global-7.swf.trace new file mode 100644 index 0000000..cbba397 --- /dev/null +++ b/test/trace/set-overwrite-global-7.swf.trace @@ -0,0 +1,7 @@ +Check the global object doesn't get overwritten when defining variables +[type Function] +undefined +42 +42 +[type Function] +undefined diff --git a/test/trace/set-overwrite-global.as b/test/trace/set-overwrite-global.as new file mode 100644 index 0000000..032209c --- /dev/null +++ b/test/trace/set-overwrite-global.as @@ -0,0 +1,13 @@ +// makeswf -v 7 -s 200x150 -r 1 -o set-overwrite-global.swf set-overwrite-global.as + +trace ("Check the global object doesn't get overwritten when defining variables"); +trace (String); +trace (this.String); +String = 42; +trace (String); +trace (this.String); +delete String; +trace (String); +trace (this.String); + +loadMovie ("FSCommand:quit", ""); diff-tree 69b736a2fb59840c11fa4a5a79441e4af953a850 (from 58d960c87799a285ee740b474ab763dcc024db18) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 11:36:41 2007 +0200 don't overwrite global properties automatically diff --git a/libswfdec/swfdec_as_context.c b/libswfdec/swfdec_as_context.c index 672567a..2b5cefe 100644 --- a/libswfdec/swfdec_as_context.c +++ b/libswfdec/swfdec_as_context.c @@ -626,7 +626,7 @@ swfdec_as_context_eval_set_property (Swf return; } obj = swfdec_as_frame_find_variable (cx->frame, name); - if (obj == NULL) + if (obj == NULL || obj == cx->global) obj = cx->frame->var_object; } swfdec_as_object_set_variable (obj, name, ret); diff-tree 58d960c87799a285ee740b474ab763dcc024db18 (from debd20cff40ff22082d31f715bc04a39dd0c3a27) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 11:36:12 2007 +0200 add test to check that automatic to-object conversion calls _global.String () diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index da7e158..1133cf7 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -236,6 +236,13 @@ EXTRA_DIST = \ string-construct-6.swf.trace \ string-construct-7.swf \ string-construct-7.swf.trace \ + string-convert.as \ + string-convert-5.swf \ + string-convert-5.swf.trace \ + string-convert-6.swf \ + string-convert-6.swf.trace \ + string-convert-7.swf \ + string-convert-7.swf.trace \ substring.as \ substr.as \ substr-5.swf \ diff --git a/test/trace/string-convert-5.swf b/test/trace/string-convert-5.swf new file mode 100644 index 0000000..f20be2a Binary files /dev/null and b/test/trace/string-convert-5.swf differ diff --git a/test/trace/string-convert-5.swf.trace b/test/trace/string-convert-5.swf.trace new file mode 100644 index 0000000..c1c4b98 --- /dev/null +++ b/test/trace/string-convert-5.swf.trace @@ -0,0 +1,5 @@ +Check how automatic conversion to a string works +5 +5 +5 +5 diff --git a/test/trace/string-convert-6.swf b/test/trace/string-convert-6.swf new file mode 100644 index 0000000..402d71b Binary files /dev/null and b/test/trace/string-convert-6.swf differ diff --git a/test/trace/string-convert-6.swf.trace b/test/trace/string-convert-6.swf.trace new file mode 100644 index 0000000..106bcd4 --- /dev/null +++ b/test/trace/string-convert-6.swf.trace @@ -0,0 +1,6 @@ +Check how automatic conversion to a string works +5 +hello +-1 +undefined +undefined diff --git a/test/trace/string-convert-7.swf b/test/trace/string-convert-7.swf new file mode 100644 index 0000000..d583d3d Binary files /dev/null and b/test/trace/string-convert-7.swf differ diff --git a/test/trace/string-convert-7.swf.trace b/test/trace/string-convert-7.swf.trace new file mode 100644 index 0000000..106bcd4 --- /dev/null +++ b/test/trace/string-convert-7.swf.trace @@ -0,0 +1,6 @@ +Check how automatic conversion to a string works +5 +hello +-1 +undefined +undefined diff --git a/test/trace/string-convert.as b/test/trace/string-convert.as new file mode 100644 index 0000000..763cc64 --- /dev/null +++ b/test/trace/string-convert.as @@ -0,0 +1,37 @@ +// makeswf -v 7 -s 200x150 -r 1 -o string-convert.swf string-convert.as + +trace ("Check how automatic conversion to a string works"); +asm { + push "hello", "length" + getmember + trace +}; +_global.String = function (foo) { + trace (foo); + this.length = -1; +}; +String = function (foo) { + trace (foo); + this.length = 42; +}; +asm { + push "hello", "length" + getmember + trace +}; + +_global.String = 13; +asm { + push "hello", "length" + getmember + trace +}; + +_global.String = new Object (); +asm { + push "hello", "length" + getmember + trace +}; + +loadMovie ("FSCommand:quit", ""); diff-tree debd20cff40ff22082d31f715bc04a39dd0c3a27 (from 32484780944578c9cb5ec71ac8a3df08574902c9) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 11:22:02 2007 +0200 convert to objecct in GetMember action diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c index e299b0d..ed4a917 100644 --- a/libswfdec/swfdec_as_interpret.c +++ b/libswfdec/swfdec_as_interpret.c @@ -535,15 +535,14 @@ out: static void swfdec_action_get_member (SwfdecAsContext *cx, guint action, const guint8 *data, guint len) { - /* FIXME: do we need a "convert to object" function here? */ - if (SWFDEC_AS_VALUE_IS_OBJECT (swfdec_as_stack_peek (cx->frame->stack, 2))) { + SwfdecAsObject *object = swfdec_as_value_to_object (cx, swfdec_as_stack_peek (cx->frame->stack, 2)); + if (object) { const char *name; - SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_OBJECT (swfdec_as_stack_peek (cx->frame->stack, 2)); name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx->frame->stack, 1)); - swfdec_as_object_get_variable (o, name, swfdec_as_stack_peek (cx->frame->stack, 2)); + swfdec_as_object_get_variable (object, name, swfdec_as_stack_peek (cx->frame->stack, 2)); #ifdef SWFDEC_WARN_MISSING_PROPERTIES if (SWFDEC_AS_VALUE_IS_UNDEFINED (swfdec_as_stack_peek (cx->frame->stack, 2))) { - SWFDEC_WARNING ("no variable named %s:%s", G_OBJECT_TYPE_NAME (o), s); + SWFDEC_WARNING ("no variable named %s:%s", G_OBJECT_TYPE_NAME (object), s); } #endif } else { diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index dc9827c..da7e158 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -237,6 +237,13 @@ EXTRA_DIST = \ string-construct-7.swf \ string-construct-7.swf.trace \ substring.as \ + substr.as \ + substr-5.swf \ + substr-5.swf.trace \ + substr-6.swf \ + substr-6.swf.trace \ + substr-7.swf \ + substr-7.swf.trace \ substring-5.swf \ substring-5.swf.trace \ substring-6.swf \ diff --git a/test/trace/substr-5.swf b/test/trace/substr-5.swf new file mode 100644 index 0000000..3704fb9 Binary files /dev/null and b/test/trace/substr-5.swf differ diff --git a/test/trace/substr-5.swf.trace b/test/trace/substr-5.swf.trace new file mode 100644 index 0000000..4bcee52 --- /dev/null +++ b/test/trace/substr-5.swf.trace @@ -0,0 +1,420 @@ +-10 - ABCDEF +-10:-10 - +-10:-9 - +-10:-8 - +-10:-7 - +-10:-6 - +-10:-5 - A +-10:-4 - AB +-10:-3 - ABC +-10:-2 - ABCD +-10:-1 - ABCDE +-10:0 - +-10:1 - A +-10:2 - AB +-10:3 - ABC +-10:4 - ABCD +-10:5 - ABCDE +-10:6 - ABCDEF +-10:7 - ABCDEF +-10:8 - ABCDEF +-10:9 - ABCDEF +-9 - ABCDEF +-9:-10 - +-9:-9 - +-9:-8 - +-9:-7 - +-9:-6 - +-9:-5 - A +-9:-4 - AB +-9:-3 - ABC +-9:-2 - ABCD +-9:-1 - ABCDE +-9:0 - +-9:1 - A +-9:2 - AB +-9:3 - ABC +-9:4 - ABCD +-9:5 - ABCDE +-9:6 - ABCDEF +-9:7 - ABCDEF +-9:8 - ABCDEF +-9:9 - ABCDEF +-8 - ABCDEF +-8:-10 - +-8:-9 - +-8:-8 - +-8:-7 - +-8:-6 - +-8:-5 - A +-8:-4 - AB +-8:-3 - ABC +-8:-2 - ABCD +-8:-1 - ABCDE +-8:0 - +-8:1 - A +-8:2 - AB +-8:3 - ABC +-8:4 - ABCD +-8:5 - ABCDE +-8:6 - ABCDEF +-8:7 - ABCDEF +-8:8 - ABCDEF +-8:9 - ABCDEF +-7 - ABCDEF +-7:-10 - +-7:-9 - +-7:-8 - +-7:-7 - +-7:-6 - +-7:-5 - A +-7:-4 - AB +-7:-3 - ABC +-7:-2 - ABCD +-7:-1 - ABCDE +-7:0 - +-7:1 - A +-7:2 - AB +-7:3 - ABC +-7:4 - ABCD +-7:5 - ABCDE +-7:6 - ABCDEF +-7:7 - ABCDEF +-7:8 - ABCDEF +-7:9 - ABCDEF +-6 - ABCDEF +-6:-10 - +-6:-9 - +-6:-8 - +-6:-7 - +-6:-6 - +-6:-5 - A +-6:-4 - AB +-6:-3 - ABC +-6:-2 - ABCD +-6:-1 - ABCDE +-6:0 - +-6:1 - A +-6:2 - AB +-6:3 - ABC +-6:4 - ABCD +-6:5 - ABCDE +-6:6 - ABCDEF +-6:7 - ABCDEF +-6:8 - ABCDEF +-6:9 - ABCDEF +-5 - BCDEF +-5:-10 - +-5:-9 - +-5:-8 - +-5:-7 - +-5:-6 - +-5:-5 - B +-5:-4 - BC +-5:-3 - BCD +-5:-2 - BCDE +-5:-1 - +-5:0 - +-5:1 - B +-5:2 - BC +-5:3 - BCD +-5:4 - BCDE +-5:5 - BCDEF +-5:6 - BCDEF +-5:7 - BCDEF +-5:8 - BCDEF +-5:9 - BCDEF +-4 - CDEF +-4:-10 - +-4:-9 - +-4:-8 - +-4:-7 - +-4:-6 - +-4:-5 - C +-4:-4 - CD +-4:-3 - CDE +-4:-2 - +-4:-1 - +-4:0 - +-4:1 - C +-4:2 - CD +-4:3 - CDE +-4:4 - CDEF +-4:5 - CDEF +-4:6 - CDEF +-4:7 - CDEF +-4:8 - CDEF +-4:9 - CDEF +-3 - DEF +-3:-10 - +-3:-9 - +-3:-8 - +-3:-7 - +-3:-6 - +-3:-5 - D +-3:-4 - DE +-3:-3 - +-3:-2 - +-3:-1 - +-3:0 - +-3:1 - D +-3:2 - DE +-3:3 - DEF +-3:4 - DEF +-3:5 - DEF +-3:6 - DEF +-3:7 - DEF +-3:8 - DEF +-3:9 - DEF +-2 - EF +-2:-10 - +-2:-9 - +-2:-8 - +-2:-7 - +-2:-6 - +-2:-5 - E +-2:-4 - +-2:-3 - +-2:-2 - +-2:-1 - +-2:0 - +-2:1 - E +-2:2 - EF +-2:3 - EF +-2:4 - EF +-2:5 - EF +-2:6 - EF +-2:7 - EF +-2:8 - EF +-2:9 - EF +-1 - F +-1:-10 - +-1:-9 - +-1:-8 - +-1:-7 - +-1:-6 - +-1:-5 - +-1:-4 - +-1:-3 - +-1:-2 - +-1:-1 - +-1:0 - +-1:1 - F +-1:2 - F +-1:3 - F +-1:4 - F +-1:5 - F +-1:6 - F +-1:7 - F +-1:8 - F +-1:9 - F +0 - ABCDEF +0:-10 - +0:-9 - +0:-8 - +0:-7 - +0:-6 - +0:-5 - A +0:-4 - AB +0:-3 - ABC +0:-2 - ABCD +0:-1 - ABCDE +0:0 - +0:1 - A +0:2 - AB +0:3 - ABC +0:4 - ABCD +0:5 - ABCDE +0:6 - ABCDEF +0:7 - ABCDEF +0:8 - ABCDEF +0:9 - ABCDEF +1 - BCDEF +1:-10 - +1:-9 - +1:-8 - +1:-7 - +1:-6 - +1:-5 - B +1:-4 - BC +1:-3 - BCD +1:-2 - BCDE +1:-1 - +1:0 - +1:1 - B +1:2 - BC +1:3 - BCD +1:4 - BCDE +1:5 - BCDEF +1:6 - BCDEF +1:7 - BCDEF +1:8 - BCDEF +1:9 - BCDEF +2 - CDEF +2:-10 - +2:-9 - +2:-8 - +2:-7 - +2:-6 - +2:-5 - C +2:-4 - CD +2:-3 - CDE +2:-2 - +2:-1 - +2:0 - +2:1 - C +2:2 - CD +2:3 - CDE +2:4 - CDEF +2:5 - CDEF +2:6 - CDEF +2:7 - CDEF +2:8 - CDEF +2:9 - CDEF +3 - DEF +3:-10 - +3:-9 - +3:-8 - +3:-7 - +3:-6 - +3:-5 - D +3:-4 - DE +3:-3 - +3:-2 - +3:-1 - +3:0 - +3:1 - D +3:2 - DE +3:3 - DEF +3:4 - DEF +3:5 - DEF +3:6 - DEF +3:7 - DEF +3:8 - DEF +3:9 - DEF +4 - EF +4:-10 - +4:-9 - +4:-8 - +4:-7 - +4:-6 - +4:-5 - E +4:-4 - +4:-3 - +4:-2 - +4:-1 - +4:0 - +4:1 - E +4:2 - EF +4:3 - EF +4:4 - EF +4:5 - EF +4:6 - EF +4:7 - EF +4:8 - EF +4:9 - EF +5 - F +5:-10 - +5:-9 - +5:-8 - +5:-7 - +5:-6 - +5:-5 - +5:-4 - +5:-3 - +5:-2 - +5:-1 - +5:0 - +5:1 - F +5:2 - F +5:3 - F +5:4 - F +5:5 - F +5:6 - F +5:7 - F +5:8 - F +5:9 - F +6 - +6:-10 - +6:-9 - +6:-8 - +6:-7 - +6:-6 - +6:-5 - +6:-4 - +6:-3 - +6:-2 - +6:-1 - +6:0 - +6:1 - +6:2 - +6:3 - +6:4 - +6:5 - +6:6 - +6:7 - +6:8 - +6:9 - +7 - +7:-10 - +7:-9 - +7:-8 - +7:-7 - +7:-6 - +7:-5 - +7:-4 - +7:-3 - +7:-2 - +7:-1 - +7:0 - +7:1 - +7:2 - +7:3 - +7:4 - +7:5 - +7:6 - +7:7 - +7:8 - +7:9 - +8 - +8:-10 - +8:-9 - +8:-8 - +8:-7 - +8:-6 - +8:-5 - +8:-4 - +8:-3 - +8:-2 - +8:-1 - +8:0 - +8:1 - +8:2 - +8:3 - +8:4 - +8:5 - +8:6 - +8:7 - +8:8 - +8:9 - +9 - +9:-10 - +9:-9 - +9:-8 - +9:-7 - +9:-6 - +9:-5 - +9:-4 - +9:-3 - +9:-2 - +9:-1 - +9:0 - +9:1 - +9:2 - +9:3 - +9:4 - +9:5 - +9:6 - +9:7 - +9:8 - +9:9 - diff --git a/test/trace/substr-6.swf b/test/trace/substr-6.swf new file mode 100644 index 0000000..e72bbc9 Binary files /dev/null and b/test/trace/substr-6.swf differ diff --git a/test/trace/substr-6.swf.trace b/test/trace/substr-6.swf.trace new file mode 100644 index 0000000..4bcee52 --- /dev/null +++ b/test/trace/substr-6.swf.trace @@ -0,0 +1,420 @@ +-10 - ABCDEF +-10:-10 - +-10:-9 - +-10:-8 - +-10:-7 - +-10:-6 - +-10:-5 - A +-10:-4 - AB +-10:-3 - ABC +-10:-2 - ABCD +-10:-1 - ABCDE +-10:0 - +-10:1 - A +-10:2 - AB +-10:3 - ABC +-10:4 - ABCD +-10:5 - ABCDE +-10:6 - ABCDEF +-10:7 - ABCDEF +-10:8 - ABCDEF +-10:9 - ABCDEF +-9 - ABCDEF +-9:-10 - +-9:-9 - +-9:-8 - +-9:-7 - +-9:-6 - +-9:-5 - A +-9:-4 - AB +-9:-3 - ABC +-9:-2 - ABCD +-9:-1 - ABCDE +-9:0 - +-9:1 - A +-9:2 - AB +-9:3 - ABC +-9:4 - ABCD +-9:5 - ABCDE +-9:6 - ABCDEF +-9:7 - ABCDEF +-9:8 - ABCDEF +-9:9 - ABCDEF +-8 - ABCDEF +-8:-10 - +-8:-9 - +-8:-8 - +-8:-7 - +-8:-6 - +-8:-5 - A +-8:-4 - AB +-8:-3 - ABC +-8:-2 - ABCD +-8:-1 - ABCDE +-8:0 - +-8:1 - A +-8:2 - AB +-8:3 - ABC +-8:4 - ABCD +-8:5 - ABCDE +-8:6 - ABCDEF +-8:7 - ABCDEF +-8:8 - ABCDEF +-8:9 - ABCDEF +-7 - ABCDEF +-7:-10 - +-7:-9 - +-7:-8 - +-7:-7 - +-7:-6 - +-7:-5 - A +-7:-4 - AB +-7:-3 - ABC +-7:-2 - ABCD +-7:-1 - ABCDE +-7:0 - +-7:1 - A +-7:2 - AB +-7:3 - ABC +-7:4 - ABCD +-7:5 - ABCDE +-7:6 - ABCDEF +-7:7 - ABCDEF +-7:8 - ABCDEF +-7:9 - ABCDEF +-6 - ABCDEF +-6:-10 - +-6:-9 - +-6:-8 - +-6:-7 - +-6:-6 - +-6:-5 - A +-6:-4 - AB +-6:-3 - ABC +-6:-2 - ABCD +-6:-1 - ABCDE +-6:0 - +-6:1 - A +-6:2 - AB +-6:3 - ABC +-6:4 - ABCD +-6:5 - ABCDE +-6:6 - ABCDEF +-6:7 - ABCDEF +-6:8 - ABCDEF +-6:9 - ABCDEF +-5 - BCDEF +-5:-10 - +-5:-9 - +-5:-8 - +-5:-7 - +-5:-6 - +-5:-5 - B +-5:-4 - BC +-5:-3 - BCD +-5:-2 - BCDE +-5:-1 - +-5:0 - +-5:1 - B +-5:2 - BC +-5:3 - BCD +-5:4 - BCDE +-5:5 - BCDEF +-5:6 - BCDEF +-5:7 - BCDEF +-5:8 - BCDEF +-5:9 - BCDEF +-4 - CDEF +-4:-10 - +-4:-9 - +-4:-8 - +-4:-7 - +-4:-6 - +-4:-5 - C +-4:-4 - CD +-4:-3 - CDE +-4:-2 - +-4:-1 - +-4:0 - +-4:1 - C +-4:2 - CD +-4:3 - CDE +-4:4 - CDEF +-4:5 - CDEF +-4:6 - CDEF +-4:7 - CDEF +-4:8 - CDEF +-4:9 - CDEF +-3 - DEF +-3:-10 - +-3:-9 - +-3:-8 - +-3:-7 - +-3:-6 - +-3:-5 - D +-3:-4 - DE +-3:-3 - +-3:-2 - +-3:-1 - +-3:0 - +-3:1 - D +-3:2 - DE +-3:3 - DEF +-3:4 - DEF +-3:5 - DEF +-3:6 - DEF +-3:7 - DEF +-3:8 - DEF +-3:9 - DEF +-2 - EF +-2:-10 - +-2:-9 - +-2:-8 - +-2:-7 - +-2:-6 - +-2:-5 - E +-2:-4 - +-2:-3 - +-2:-2 - +-2:-1 - +-2:0 - +-2:1 - E +-2:2 - EF +-2:3 - EF +-2:4 - EF +-2:5 - EF +-2:6 - EF +-2:7 - EF +-2:8 - EF +-2:9 - EF +-1 - F +-1:-10 - +-1:-9 - +-1:-8 - +-1:-7 - +-1:-6 - +-1:-5 - +-1:-4 - +-1:-3 - +-1:-2 - +-1:-1 - +-1:0 - +-1:1 - F +-1:2 - F +-1:3 - F +-1:4 - F +-1:5 - F +-1:6 - F +-1:7 - F +-1:8 - F +-1:9 - F +0 - ABCDEF +0:-10 - +0:-9 - +0:-8 - +0:-7 - +0:-6 - +0:-5 - A +0:-4 - AB +0:-3 - ABC +0:-2 - ABCD +0:-1 - ABCDE +0:0 - +0:1 - A +0:2 - AB +0:3 - ABC +0:4 - ABCD +0:5 - ABCDE +0:6 - ABCDEF +0:7 - ABCDEF +0:8 - ABCDEF +0:9 - ABCDEF +1 - BCDEF +1:-10 - +1:-9 - +1:-8 - +1:-7 - +1:-6 - +1:-5 - B +1:-4 - BC +1:-3 - BCD +1:-2 - BCDE +1:-1 - +1:0 - +1:1 - B +1:2 - BC +1:3 - BCD +1:4 - BCDE +1:5 - BCDEF +1:6 - BCDEF +1:7 - BCDEF +1:8 - BCDEF +1:9 - BCDEF +2 - CDEF +2:-10 - +2:-9 - +2:-8 - +2:-7 - +2:-6 - +2:-5 - C +2:-4 - CD +2:-3 - CDE +2:-2 - +2:-1 - +2:0 - +2:1 - C +2:2 - CD +2:3 - CDE +2:4 - CDEF +2:5 - CDEF +2:6 - CDEF +2:7 - CDEF +2:8 - CDEF +2:9 - CDEF +3 - DEF +3:-10 - +3:-9 - +3:-8 - +3:-7 - +3:-6 - +3:-5 - D +3:-4 - DE +3:-3 - +3:-2 - +3:-1 - +3:0 - +3:1 - D +3:2 - DE +3:3 - DEF +3:4 - DEF +3:5 - DEF +3:6 - DEF +3:7 - DEF +3:8 - DEF +3:9 - DEF +4 - EF +4:-10 - +4:-9 - +4:-8 - +4:-7 - +4:-6 - +4:-5 - E +4:-4 - +4:-3 - +4:-2 - +4:-1 - +4:0 - +4:1 - E +4:2 - EF +4:3 - EF +4:4 - EF +4:5 - EF +4:6 - EF +4:7 - EF +4:8 - EF +4:9 - EF +5 - F +5:-10 - +5:-9 - +5:-8 - +5:-7 - +5:-6 - +5:-5 - +5:-4 - +5:-3 - +5:-2 - +5:-1 - +5:0 - +5:1 - F +5:2 - F +5:3 - F +5:4 - F +5:5 - F +5:6 - F +5:7 - F +5:8 - F +5:9 - F +6 - +6:-10 - +6:-9 - +6:-8 - +6:-7 - +6:-6 - +6:-5 - +6:-4 - +6:-3 - +6:-2 - +6:-1 - +6:0 - +6:1 - +6:2 - +6:3 - +6:4 - +6:5 - +6:6 - +6:7 - +6:8 - +6:9 - +7 - +7:-10 - +7:-9 - +7:-8 - +7:-7 - +7:-6 - +7:-5 - +7:-4 - +7:-3 - +7:-2 - +7:-1 - +7:0 - +7:1 - +7:2 - +7:3 - +7:4 - +7:5 - +7:6 - +7:7 - +7:8 - +7:9 - +8 - +8:-10 - +8:-9 - +8:-8 - +8:-7 - +8:-6 - +8:-5 - +8:-4 - +8:-3 - +8:-2 - +8:-1 - +8:0 - +8:1 - +8:2 - +8:3 - +8:4 - +8:5 - +8:6 - +8:7 - +8:8 - +8:9 - +9 - +9:-10 - +9:-9 - +9:-8 - +9:-7 - +9:-6 - +9:-5 - +9:-4 - +9:-3 - +9:-2 - +9:-1 - +9:0 - +9:1 - +9:2 - +9:3 - +9:4 - +9:5 - +9:6 - +9:7 - +9:8 - +9:9 - diff --git a/test/trace/substr-7.swf b/test/trace/substr-7.swf new file mode 100644 index 0000000..2c71c70 Binary files /dev/null and b/test/trace/substr-7.swf differ diff --git a/test/trace/substr-7.swf.trace b/test/trace/substr-7.swf.trace new file mode 100644 index 0000000..4bcee52 --- /dev/null +++ b/test/trace/substr-7.swf.trace @@ -0,0 +1,420 @@ +-10 - ABCDEF +-10:-10 - +-10:-9 - +-10:-8 - +-10:-7 - +-10:-6 - +-10:-5 - A +-10:-4 - AB +-10:-3 - ABC +-10:-2 - ABCD +-10:-1 - ABCDE +-10:0 - +-10:1 - A +-10:2 - AB +-10:3 - ABC +-10:4 - ABCD +-10:5 - ABCDE +-10:6 - ABCDEF +-10:7 - ABCDEF +-10:8 - ABCDEF +-10:9 - ABCDEF +-9 - ABCDEF +-9:-10 - +-9:-9 - +-9:-8 - +-9:-7 - +-9:-6 - +-9:-5 - A +-9:-4 - AB +-9:-3 - ABC +-9:-2 - ABCD +-9:-1 - ABCDE +-9:0 - +-9:1 - A +-9:2 - AB +-9:3 - ABC +-9:4 - ABCD +-9:5 - ABCDE +-9:6 - ABCDEF +-9:7 - ABCDEF +-9:8 - ABCDEF +-9:9 - ABCDEF +-8 - ABCDEF +-8:-10 - +-8:-9 - +-8:-8 - +-8:-7 - +-8:-6 - +-8:-5 - A +-8:-4 - AB +-8:-3 - ABC +-8:-2 - ABCD +-8:-1 - ABCDE +-8:0 - +-8:1 - A +-8:2 - AB +-8:3 - ABC +-8:4 - ABCD +-8:5 - ABCDE +-8:6 - ABCDEF +-8:7 - ABCDEF +-8:8 - ABCDEF +-8:9 - ABCDEF +-7 - ABCDEF +-7:-10 - +-7:-9 - +-7:-8 - +-7:-7 - +-7:-6 - +-7:-5 - A +-7:-4 - AB +-7:-3 - ABC +-7:-2 - ABCD +-7:-1 - ABCDE +-7:0 - +-7:1 - A +-7:2 - AB +-7:3 - ABC +-7:4 - ABCD +-7:5 - ABCDE +-7:6 - ABCDEF +-7:7 - ABCDEF +-7:8 - ABCDEF +-7:9 - ABCDEF +-6 - ABCDEF +-6:-10 - +-6:-9 - +-6:-8 - +-6:-7 - +-6:-6 - +-6:-5 - A +-6:-4 - AB +-6:-3 - ABC +-6:-2 - ABCD +-6:-1 - ABCDE +-6:0 - +-6:1 - A +-6:2 - AB +-6:3 - ABC +-6:4 - ABCD +-6:5 - ABCDE +-6:6 - ABCDEF +-6:7 - ABCDEF +-6:8 - ABCDEF +-6:9 - ABCDEF +-5 - BCDEF +-5:-10 - +-5:-9 - +-5:-8 - +-5:-7 - +-5:-6 - +-5:-5 - B +-5:-4 - BC +-5:-3 - BCD +-5:-2 - BCDE +-5:-1 - +-5:0 - +-5:1 - B +-5:2 - BC +-5:3 - BCD +-5:4 - BCDE +-5:5 - BCDEF +-5:6 - BCDEF +-5:7 - BCDEF +-5:8 - BCDEF +-5:9 - BCDEF +-4 - CDEF +-4:-10 - +-4:-9 - +-4:-8 - +-4:-7 - +-4:-6 - +-4:-5 - C +-4:-4 - CD +-4:-3 - CDE +-4:-2 - +-4:-1 - +-4:0 - +-4:1 - C +-4:2 - CD +-4:3 - CDE +-4:4 - CDEF +-4:5 - CDEF +-4:6 - CDEF +-4:7 - CDEF +-4:8 - CDEF +-4:9 - CDEF +-3 - DEF +-3:-10 - +-3:-9 - +-3:-8 - +-3:-7 - +-3:-6 - +-3:-5 - D +-3:-4 - DE +-3:-3 - +-3:-2 - +-3:-1 - +-3:0 - +-3:1 - D +-3:2 - DE +-3:3 - DEF +-3:4 - DEF +-3:5 - DEF +-3:6 - DEF +-3:7 - DEF +-3:8 - DEF +-3:9 - DEF +-2 - EF +-2:-10 - +-2:-9 - +-2:-8 - +-2:-7 - +-2:-6 - +-2:-5 - E +-2:-4 - +-2:-3 - +-2:-2 - +-2:-1 - +-2:0 - +-2:1 - E +-2:2 - EF +-2:3 - EF +-2:4 - EF +-2:5 - EF +-2:6 - EF +-2:7 - EF +-2:8 - EF +-2:9 - EF +-1 - F +-1:-10 - +-1:-9 - +-1:-8 - +-1:-7 - +-1:-6 - +-1:-5 - +-1:-4 - +-1:-3 - +-1:-2 - +-1:-1 - +-1:0 - +-1:1 - F +-1:2 - F +-1:3 - F +-1:4 - F +-1:5 - F +-1:6 - F +-1:7 - F +-1:8 - F +-1:9 - F +0 - ABCDEF +0:-10 - +0:-9 - +0:-8 - +0:-7 - +0:-6 - +0:-5 - A +0:-4 - AB +0:-3 - ABC +0:-2 - ABCD +0:-1 - ABCDE +0:0 - +0:1 - A +0:2 - AB +0:3 - ABC +0:4 - ABCD +0:5 - ABCDE +0:6 - ABCDEF +0:7 - ABCDEF +0:8 - ABCDEF +0:9 - ABCDEF +1 - BCDEF +1:-10 - +1:-9 - +1:-8 - +1:-7 - +1:-6 - +1:-5 - B +1:-4 - BC +1:-3 - BCD +1:-2 - BCDE +1:-1 - +1:0 - +1:1 - B +1:2 - BC +1:3 - BCD +1:4 - BCDE +1:5 - BCDEF +1:6 - BCDEF +1:7 - BCDEF +1:8 - BCDEF +1:9 - BCDEF +2 - CDEF +2:-10 - +2:-9 - +2:-8 - +2:-7 - +2:-6 - +2:-5 - C +2:-4 - CD +2:-3 - CDE +2:-2 - +2:-1 - +2:0 - +2:1 - C +2:2 - CD +2:3 - CDE +2:4 - CDEF +2:5 - CDEF +2:6 - CDEF +2:7 - CDEF +2:8 - CDEF +2:9 - CDEF +3 - DEF +3:-10 - +3:-9 - +3:-8 - +3:-7 - +3:-6 - +3:-5 - D +3:-4 - DE +3:-3 - +3:-2 - +3:-1 - +3:0 - +3:1 - D +3:2 - DE +3:3 - DEF +3:4 - DEF +3:5 - DEF +3:6 - DEF +3:7 - DEF +3:8 - DEF +3:9 - DEF +4 - EF +4:-10 - +4:-9 - +4:-8 - +4:-7 - +4:-6 - +4:-5 - E +4:-4 - +4:-3 - +4:-2 - +4:-1 - +4:0 - +4:1 - E +4:2 - EF +4:3 - EF +4:4 - EF +4:5 - EF +4:6 - EF +4:7 - EF +4:8 - EF +4:9 - EF +5 - F +5:-10 - +5:-9 - +5:-8 - +5:-7 - +5:-6 - +5:-5 - +5:-4 - +5:-3 - +5:-2 - +5:-1 - +5:0 - +5:1 - F +5:2 - F +5:3 - F +5:4 - F +5:5 - F +5:6 - F +5:7 - F +5:8 - F +5:9 - F +6 - +6:-10 - +6:-9 - +6:-8 - +6:-7 - +6:-6 - +6:-5 - +6:-4 - +6:-3 - +6:-2 - +6:-1 - +6:0 - +6:1 - +6:2 - +6:3 - +6:4 - +6:5 - +6:6 - +6:7 - +6:8 - +6:9 - +7 - +7:-10 - +7:-9 - +7:-8 - +7:-7 - +7:-6 - +7:-5 - +7:-4 - +7:-3 - +7:-2 - +7:-1 - +7:0 - +7:1 - +7:2 - +7:3 - +7:4 - +7:5 - +7:6 - +7:7 - +7:8 - +7:9 - +8 - +8:-10 - +8:-9 - +8:-8 - +8:-7 - +8:-6 - +8:-5 - +8:-4 - +8:-3 - +8:-2 - +8:-1 - +8:0 - +8:1 - +8:2 - +8:3 - +8:4 - +8:5 - +8:6 - +8:7 - +8:8 - +8:9 - +9 - +9:-10 - +9:-9 - +9:-8 - +9:-7 - +9:-6 - +9:-5 - +9:-4 - +9:-3 - +9:-2 - +9:-1 - +9:0 - +9:1 - +9:2 - +9:3 - +9:4 - +9:5 - +9:6 - +9:7 - +9:8 - +9:9 - diff --git a/test/trace/substr.as b/test/trace/substr.as new file mode 100644 index 0000000..09b19a2 --- /dev/null +++ b/test/trace/substr.as @@ -0,0 +1,12 @@ +// makeswf -v 7 -s 200x150 -r 1 -o substring.swf substring.as + +hi = String ("ABCDEF"); + +for (from = -10; from < 10; from++) { + trace (from + " - " + hi.substr (from)); + for (len = -10; len < 10; len++) { + trace (from + ":" + len + " - " + hi.substr (from, len)); + }; +}; + +loadMovie ("FSCommand:quit", ""); diff-tree 32484780944578c9cb5ec71ac8a3df08574902c9 (from 7a7f10a837491fee08b778ff84309021864fac8c) Author: Benjamin Otte <otte at gnome.org> Date: Thu May 31 09:52:21 2007 +0200 "Fix" String.substr() diff --git a/libswfdec/swfdec_as_string.c b/libswfdec/swfdec_as_string.c index c2da01d..b1f9206 100644 --- a/libswfdec/swfdec_as_string.c +++ b/libswfdec/swfdec_as_string.c @@ -191,14 +191,25 @@ swfdec_as_string_substr (SwfdecAsObject from = swfdec_as_value_to_integer (object->context, &argv[0]); len = g_utf8_strlen (string->string, -1); - if (from < 0) - from += len; /* from = len - ABS (from) aka start from end */ if (argc > 1) { to = swfdec_as_value_to_integer (object->context, &argv[1]); + /* FIXME: wtf? */ + if (to < 0) { + if (-to <= from) + to = 0; + else + to += len; + if (to < 0) + to = 0; + if (from < 0 && to >= -from) + to = 0; + } } else { to = G_MAXINT; } + if (from < 0) + from += len; from = CLAMP (from, 0, len); to = CLAMP (to, 0, len - from); SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_str_sub (object->context, string->string, from, to));
Seemingly Similar Threads
- Branch 'as' - 13 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h
- Branch 'interpreter' - 9 commits - libswfdec/js libswfdec/swfdec_script.c libswfdec/swfdec_script.h player/swfdec_debug_stack.c test/trace
- Branch 'as' - 8 commits - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_number.c libswfdec/swfdec_as_scope.h
- 7 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.h libswfdec/swfdec_as_string.c test/trace
- Branch 'as' - 25 commits - libswfdec/Makefile.am libswfdec/swfdec_as_boolean.c libswfdec/swfdec_as_boolean.h libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c