Pekka Lampila
2007-Aug-22 13:49 UTC
[Swfdec] 5 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_as_boolean.c libswfdec/swfdec_as_function.c libswfdec/swfdec_as_math.c libswfdec/swfdec_as_number.c libswfdec/swfdec_as_script_function.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_net_connection.c libswfdec/swfdec_net_stream_as.c libswfdec/swfdec_sprite_movie_as.c libswfdec/swfdec_video_movie_as.c test/trace
dev/null |binary libswfdec/swfdec_as_array.c | 3 - libswfdec/swfdec_as_boolean.c | 3 - libswfdec/swfdec_as_function.c | 3 - libswfdec/swfdec_as_math.c | 32 ++++++++--- libswfdec/swfdec_as_number.c | 26 ++++++--- libswfdec/swfdec_as_script_function.c | 10 ++- libswfdec/swfdec_initialize.as | 7 ++ libswfdec/swfdec_initialize.h | 82 ++++++++++++++--------------- libswfdec/swfdec_net_connection.c | 6 +- libswfdec/swfdec_net_stream_as.c | 6 +- libswfdec/swfdec_sprite_movie_as.c | 4 + libswfdec/swfdec_video_movie_as.c | 9 ++- test/trace/Makefile.am | 5 + test/trace/function-properties-6.swf |binary test/trace/function-properties-6.swf.trace | 7 ++ test/trace/function-properties-7.swf |binary test/trace/function-properties-7.swf.trace | 7 ++ test/trace/function-properties.as | 9 +++ test/trace/propflags-5.swf.trace | 9 --- test/trace/propflags-6.swf |binary test/trace/propflags-6.swf.trace | 2 test/trace/propflags-7.swf |binary test/trace/propflags-7.swf.trace | 2 test/trace/trace_properties.as | 15 ++++- 25 files changed, 163 insertions(+), 84 deletions(-) New commits: diff-tree 66f34d06d0ea7226f8f1e5d39af392a10de556c0 (from 5e2c40b0f96dad564795eaee633b7272c4113136) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 16:44:39 2007 +0300 Fix bunch of propflags and add o = null to swfdec_initialize.as diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index 28888ae..273b083 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -108,7 +108,8 @@ swfdec_as_array_set_length (SwfdecAsObje g_return_if_fail (object != NULL); SWFDEC_AS_VALUE_SET_INT (&val, length); - swfdec_as_object_set_variable (object, SWFDEC_AS_STR_length, &val); + swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR_length, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); } typedef struct { diff --git a/libswfdec/swfdec_as_boolean.c b/libswfdec/swfdec_as_boolean.c index b883868..c241de8 100644 --- a/libswfdec/swfdec_as_boolean.c +++ b/libswfdec/swfdec_as_boolean.c @@ -99,7 +99,8 @@ swfdec_as_boolean_init_context (SwfdecAs return; /* set the right properties on the Boolean.prototype object */ SWFDEC_AS_VALUE_SET_OBJECT (&val, boolean); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_toString, SWFDEC_TYPE_AS_BOOLEAN, swfdec_as_boolean_toString, 0); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_valueOf, SWFDEC_TYPE_AS_BOOLEAN, swfdec_as_boolean_valueOf, 0); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); diff --git a/libswfdec/swfdec_as_function.c b/libswfdec/swfdec_as_function.c index d16110f..3ec7e0d 100644 --- a/libswfdec/swfdec_as_function.c +++ b/libswfdec/swfdec_as_function.c @@ -180,7 +180,8 @@ swfdec_as_function_init_context (SwfdecA } context->Function = function; SWFDEC_AS_VALUE_SET_OBJECT (&val, function); - swfdec_as_object_set_variable (function, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); if (version > 5) { proto = swfdec_as_object_new_empty (context); if (!proto) diff --git a/libswfdec/swfdec_as_math.c b/libswfdec/swfdec_as_math.c index 126e7be..5f6a24d 100644 --- a/libswfdec/swfdec_as_math.c +++ b/libswfdec/swfdec_as_math.c @@ -144,21 +144,37 @@ swfdec_as_math_init_context (SwfdecAsCon /* set the right properties on the Math object */ SWFDEC_AS_VALUE_SET_NUMBER (&val, G_E); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_E, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_E, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_LN10); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_LN10, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_LN10, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_LN2); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_LN2, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_LN2, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_LOG10E); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_LOG10E, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_LOG10E, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_LOG2E); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_LOG2E, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_LOG2E, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_PI); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_PI, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_PI, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_SQRT1_2); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_SQRT1_2, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_SQRT1_2, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_SQRT2); - swfdec_as_object_set_variable (math, SWFDEC_AS_STR_SQRT2, &val); + swfdec_as_object_set_variable_and_flags (math, SWFDEC_AS_STR_SQRT2, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); /* set the right functions on the Math object */ swfdec_as_object_add_function (math, SWFDEC_AS_STR_abs, 0, swfdec_as_math_abs, 1); diff --git a/libswfdec/swfdec_as_number.c b/libswfdec/swfdec_as_number.c index 475d540..828b538 100644 --- a/libswfdec/swfdec_as_number.c +++ b/libswfdec/swfdec_as_number.c @@ -108,23 +108,35 @@ swfdec_as_number_init_context (SwfdecAsC return; /* set the right properties on the Number object */ SWFDEC_AS_VALUE_SET_NUMBER (&val, NAN); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_NaN, &val); + swfdec_as_object_set_variable_and_flags (number, SWFDEC_AS_STR_NaN, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_MAXDOUBLE); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_MAX_VALUE, &val); + swfdec_as_object_set_variable_and_flags (number, SWFDEC_AS_STR_MAX_VALUE, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_MINDOUBLE); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_MIN_VALUE, &val); + swfdec_as_object_set_variable_and_flags (number, SWFDEC_AS_STR_MIN_VALUE, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, -HUGE_VAL); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_NEGATIVE_INFINITY, &val); + swfdec_as_object_set_variable_and_flags (number, + SWFDEC_AS_STR_NEGATIVE_INFINITY, &val, SWFDEC_AS_VARIABLE_HIDDEN | + SWFDEC_AS_VARIABLE_PERMANENT | SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, HUGE_VAL); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_POSITIVE_INFINITY, &val); + swfdec_as_object_set_variable_and_flags (number, + SWFDEC_AS_STR_POSITIVE_INFINITY, &val, SWFDEC_AS_VARIABLE_HIDDEN | + SWFDEC_AS_VARIABLE_PERMANENT | SWFDEC_AS_VARIABLE_CONSTANT); /* set the right properties on the Number.prototype object */ SWFDEC_AS_VALUE_SET_OBJECT (&val, number); swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, - &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_toString, SWFDEC_TYPE_AS_NUMBER, swfdec_as_number_toString, 0); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_valueOf, SWFDEC_TYPE_AS_NUMBER, swfdec_as_number_valueOf, 0); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, &val, - SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); } diff --git a/libswfdec/swfdec_initialize.as b/libswfdec/swfdec_initialize.as index 009bbcc..502942e 100644 --- a/libswfdec/swfdec_initialize.as +++ b/libswfdec/swfdec_initialize.as @@ -69,6 +69,7 @@ Mouse = new Object (); Mouse.show = ASnative (5, 0); Mouse.hide = ASnative (5, 1); AsBroadcaster.initialize (Mouse); +ASSetPropFlags(Mouse, null, 7); /*** STAGE ***/ @@ -120,4 +121,8 @@ LoadVars.prototype.getBytesTotal = funct return this._bytesTotal; }; -ASSetPropFlags(LoadVars.prototype, null, 129); +ASSetPropFlags(LoadVars.prototype, null, 131); + +/*** OH THE HUMANITY ***/ + +o = null; diff --git a/libswfdec/swfdec_initialize.h b/libswfdec/swfdec_initialize.h index 15a9916..7d5b5a0 100644 --- a/libswfdec/swfdec_initialize.h +++ b/libswfdec/swfdec_initialize.h @@ -93,45 +93,47 @@ const unsigned char swfdec_initialize[] 0x96, 0x13, 0x00, 0x08, 0x2C, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x29, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x03, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0F, 0x52, 0x17, - 0x96, 0x09, 0x00, 0x08, 0x2D, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x2A, 0x40, 0x1D, 0x96, 0x02, - 0x00, 0x08, 0x2D, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x03, 0x1C, 0x96, - 0x02, 0x00, 0x08, 0x0F, 0x52, 0x17, 0x96, 0x0E, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x2E, - 0x07, 0x9A, 0x02, 0x00, 0x00, 0x08, 0x2D, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, - 0x08, 0x02, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, - 0x96, 0x04, 0x00, 0x08, 0x31, 0x08, 0x32, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, - 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D, - 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, - 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x34, 0x07, 0x03, 0x00, - 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, - 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, - 0x35, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, - 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x36, 0x9B, 0x09, 0x00, 0x00, 0x01, - 0x00, 0x73, 0x72, 0x63, 0x00, 0x64, 0x00, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x04, 0x00, - 0x08, 0x37, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x38, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, - 0x12, 0x9D, 0x02, 0x00, 0x19, 0x00, 0x96, 0x09, 0x00, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, - 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x99, 0x02, 0x00, 0x2C, 0x00, 0x96, - 0x02, 0x00, 0x08, 0x38, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, - 0x96, 0x02, 0x00, 0x08, 0x34, 0x52, 0x17, 0x96, 0x09, 0x00, 0x05, 0x01, 0x07, 0x01, 0x00, 0x00, - 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, - 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x39, 0x9B, 0x05, 0x00, - 0x00, 0x00, 0x00, 0xB3, 0x00, 0x96, 0x03, 0x00, 0x08, 0x3A, 0x02, 0x3C, 0x96, 0x02, 0x00, 0x08, - 0x06, 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x91, 0x00, - 0x96, 0x04, 0x00, 0x08, 0x07, 0x04, 0x00, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x1C, 0x96, 0x01, - 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x41, 0x00, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x4C, 0x1C, 0x96, - 0x04, 0x00, 0x08, 0x3D, 0x08, 0x07, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, - 0x3B, 0x3D, 0x47, 0x96, 0x02, 0x00, 0x08, 0x3C, 0x47, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, - 0x02, 0x00, 0x08, 0x07, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, - 0x3D, 0x47, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x33, 0x00, 0x96, 0x04, 0x00, 0x08, 0x3A, 0x08, 0x07, - 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x96, 0x02, 0x00, 0x08, - 0x3C, 0x47, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x4E, 0x96, - 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x61, - 0xFF, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, - 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3F, 0x4E, 0x3E, 0x4F, - 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, - 0x40, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, - 0x02, 0x00, 0x08, 0x41, 0x4E, 0x3E, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x81, 0x00, 0x00, 0x00, 0x02, - 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x08, 0x13, 0x3D, 0x17, 0x00 + 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x29, 0x1C, 0x96, 0x07, 0x00, 0x07, + 0x03, 0x00, 0x00, 0x00, 0x08, 0x13, 0x3D, 0x17, 0x96, 0x09, 0x00, 0x08, 0x2D, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x2A, 0x40, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x2D, 0x1C, 0x96, 0x07, 0x00, 0x07, + 0x01, 0x00, 0x00, 0x00, 0x08, 0x03, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0F, 0x52, 0x17, 0x96, 0x0E, + 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x2E, 0x07, 0x9A, 0x02, 0x00, 0x00, 0x08, 0x2D, 0x1C, + 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x02, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, + 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x31, 0x08, 0x32, 0x4F, + 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, + 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, + 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, + 0x96, 0x13, 0x00, 0x08, 0x34, 0x07, 0x03, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, + 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, + 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x35, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, + 0x00, 0x08, 0x36, 0x9B, 0x09, 0x00, 0x00, 0x01, 0x00, 0x73, 0x72, 0x63, 0x00, 0x64, 0x00, 0x96, + 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x37, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, + 0x08, 0x38, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x19, 0x00, 0x96, 0x09, + 0x00, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, + 0x52, 0x17, 0x99, 0x02, 0x00, 0x2C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x38, 0x1C, 0x96, 0x07, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x34, 0x52, 0x17, 0x96, + 0x09, 0x00, 0x05, 0x01, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, + 0x35, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, + 0x96, 0x02, 0x00, 0x08, 0x39, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x96, 0x03, 0x00, + 0x08, 0x3A, 0x02, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x06, 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, + 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x91, 0x00, 0x96, 0x04, 0x00, 0x08, 0x07, 0x04, 0x00, 0x3C, + 0x96, 0x02, 0x00, 0x08, 0x3A, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x41, 0x00, + 0x96, 0x02, 0x00, 0x08, 0x3A, 0x4C, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x3D, 0x08, 0x07, 0x1C, 0x96, + 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x47, 0x96, 0x02, 0x00, 0x08, 0x3C, + 0x47, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x4E, 0x96, 0x07, + 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x47, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x33, + 0x00, 0x96, 0x04, 0x00, 0x08, 0x3A, 0x08, 0x07, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x08, 0x3B, 0x3D, 0x96, 0x02, 0x00, 0x08, 0x3C, 0x47, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, + 0x96, 0x02, 0x00, 0x08, 0x07, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, + 0x3B, 0x3D, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x61, 0xFF, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x1C, 0x3E, + 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, + 0x08, 0x3E, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, + 0x96, 0x02, 0x00, 0x08, 0x3F, 0x4E, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, + 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x40, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, + 0x00, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x41, 0x4E, 0x3E, 0x4F, 0x96, + 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, + 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x13, 0x3D, 0x17, 0x96, 0x03, 0x00, + 0x08, 0x10, 0x02, 0x1D, 0x00 }; diff --git a/libswfdec/swfdec_net_connection.c b/libswfdec/swfdec_net_connection.c index d154c35..892964f 100644 --- a/libswfdec/swfdec_net_connection.c +++ b/libswfdec/swfdec_net_connection.c @@ -151,8 +151,10 @@ swfdec_net_connection_init_context (Swfd swfdec_as_object_add_function (proto, SWFDEC_AS_STR_connect, SWFDEC_TYPE_NET_CONNECTION, swfdec_net_connection_do_connect, 1); SWFDEC_AS_VALUE_SET_OBJECT (&val, conn); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); } diff --git a/libswfdec/swfdec_net_stream_as.c b/libswfdec/swfdec_net_stream_as.c index 46d607e..5aff00b 100644 --- a/libswfdec/swfdec_net_stream_as.c +++ b/libswfdec/swfdec_net_stream_as.c @@ -132,8 +132,10 @@ swfdec_net_stream_init_context (SwfdecPl swfdec_as_object_add_function (proto, SWFDEC_AS_STR_setBufferTime, SWFDEC_TYPE_NET_STREAM, swfdec_net_stream_setBufferTime, 1); SWFDEC_AS_VALUE_SET_OBJECT (&val, stream); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); } diff --git a/libswfdec/swfdec_sprite_movie_as.c b/libswfdec/swfdec_sprite_movie_as.c index 5eea43f..dddd4ce 100644 --- a/libswfdec/swfdec_sprite_movie_as.c +++ b/libswfdec/swfdec_sprite_movie_as.c @@ -477,7 +477,9 @@ swfdec_sprite_movie_init_context (Swfdec if (!proto) return; SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable (player->MovieClip, SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (player->MovieClip, + SWFDEC_AS_STR_prototype, &val, SWFDEC_AS_VARIABLE_HIDDEN | + SWFDEC_AS_VARIABLE_PERMANENT); /* now add all the functions */ swfdec_as_object_add_function (proto, SWFDEC_AS_STR_attachMovie, SWFDEC_TYPE_SPRITE_MOVIE, swfdec_sprite_movie_attachMovie, 3); diff --git a/libswfdec/swfdec_video_movie_as.c b/libswfdec/swfdec_video_movie_as.c index 79574e2..bde3a24 100644 --- a/libswfdec/swfdec_video_movie_as.c +++ b/libswfdec/swfdec_video_movie_as.c @@ -71,15 +71,18 @@ swfdec_video_movie_init_context (SwfdecP return; /* set the right properties on the Video object */ SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable (video, SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (video, SWFDEC_AS_STR_prototype, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); /* set the right properties on the Video.prototype object */ swfdec_as_object_add_function (proto, SWFDEC_AS_STR_attachVideo, SWFDEC_TYPE_VIDEO_MOVIE, swfdec_video_attach_video, 1); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_clear, SWFDEC_TYPE_VIDEO_MOVIE, swfdec_video_clear, 0); SWFDEC_AS_VALUE_SET_OBJECT (&val, video); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); } diff-tree 5e2c40b0f96dad564795eaee633b7272c4113136 (from 6acf8c2ad3f05f761cf29d3130f98927dfda64ae) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 15:53:06 2007 +0300 Set script functions properties' flags diff --git a/libswfdec/swfdec_as_script_function.c b/libswfdec/swfdec_as_script_function.c index 5800dbd..1abf45c 100644 --- a/libswfdec/swfdec_as_script_function.c +++ b/libswfdec/swfdec_as_script_function.c @@ -138,12 +138,16 @@ swfdec_as_script_function_new (SwfdecAsS if (proto == NULL) return NULL; SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable (SWFDEC_AS_OBJECT (fun), SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (SWFDEC_AS_OBJECT (fun), + SWFDEC_AS_STR_prototype, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); swfdec_as_function_set_constructor (SWFDEC_AS_FUNCTION (fun)); SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (fun)); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); - swfdec_as_object_set_variable (proto, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); return SWFDEC_AS_FUNCTION (fun); } diff-tree 6acf8c2ad3f05f761cf29d3130f98927dfda64ae (from 408789d21cc2244688a258bc6a8edf6c12f0c4ae) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 15:47:07 2007 +0300 Add test to check newly made function's properties diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 5911bb2..61a2743 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -398,6 +398,11 @@ EXTRA_DIST = \ function1.swf.trace \ function2.swf \ function2.swf.trace \ + function-properties.as \ + function-properties-6.swf \ + function-properties-6.swf.trace \ + function-properties-7.swf \ + function-properties-7.swf.trace \ function-prototype-chain.swf \ function-prototype-chain.swf.trace \ function-scope.as \ diff --git a/test/trace/function-properties-6.swf b/test/trace/function-properties-6.swf new file mode 100644 index 0000000..c133be4 Binary files /dev/null and b/test/trace/function-properties-6.swf differ diff --git a/test/trace/function-properties-6.swf.trace b/test/trace/function-properties-6.swf.trace new file mode 100644 index 0000000..e5e0e67 --- /dev/null +++ b/test/trace/function-properties-6.swf.trace @@ -0,0 +1,7 @@ +local.o = object + myFunction = function + __proto__ (hp) = _global.Object.__proto__ + constructor (hp) = _global.Object.constructor + prototype (hp) = object + __proto__ (hp) = _global.Object.prototype + constructor (hp) = local.o.myFunction diff --git a/test/trace/function-properties-7.swf b/test/trace/function-properties-7.swf new file mode 100644 index 0000000..eb25316 Binary files /dev/null and b/test/trace/function-properties-7.swf differ diff --git a/test/trace/function-properties-7.swf.trace b/test/trace/function-properties-7.swf.trace new file mode 100644 index 0000000..e5e0e67 --- /dev/null +++ b/test/trace/function-properties-7.swf.trace @@ -0,0 +1,7 @@ +local.o = object + myFunction = function + __proto__ (hp) = _global.Object.__proto__ + constructor (hp) = _global.Object.constructor + prototype (hp) = object + __proto__ (hp) = _global.Object.prototype + constructor (hp) = local.o.myFunction diff --git a/test/trace/function-properties.as b/test/trace/function-properties.as new file mode 100644 index 0000000..7111177 --- /dev/null +++ b/test/trace/function-properties.as @@ -0,0 +1,9 @@ +// makeswf -v 7 -r 1 -o function-properties-7.swf function-properties.as + +#include "trace_properties.as" + +o = new_empty_object (); +o.myFunction = function () { }; +trace_properties (o, "local", "o"); + +loadMovie ("FSCommand:quit", ""); diff-tree 408789d21cc2244688a258bc6a8edf6c12f0c4ae (from ae67dbbc6d59544293518d52fd9b42e3d0f0667c) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 15:28:49 2007 +0300 Update propflags test case to use current trace_properties.as Removed version 5 of the test, because trace_properties is broken there diff --git a/test/trace/propflags-5.swf b/test/trace/propflags-5.swf deleted file mode 100644 index f39eb9c..0000000 Binary files a/test/trace/propflags-5.swf and /dev/null differ diff --git a/test/trace/propflags-5.swf.trace b/test/trace/propflags-5.swf.trace deleted file mode 100644 index e19117a..0000000 --- a/test/trace/propflags-5.swf.trace +++ /dev/null @@ -1,9 +0,0 @@ -o object[local.o] : toString => "" - 0 = number : 0 - 1 (h) = number : 1 - 2 (p) = number : 2 - 3 (hp) = number : 3 - 4 (c) = number : 4 - 5 (hc) = number : 5 - 6 (pc) = number : 6 - 7 (hpc) = number : 7 diff --git a/test/trace/propflags-6.swf b/test/trace/propflags-6.swf index be9cb59..ba102df 100644 Binary files a/test/trace/propflags-6.swf and b/test/trace/propflags-6.swf differ diff --git a/test/trace/propflags-6.swf.trace b/test/trace/propflags-6.swf.trace index e19117a..0a38b83 100644 --- a/test/trace/propflags-6.swf.trace +++ b/test/trace/propflags-6.swf.trace @@ -1,4 +1,4 @@ -o object[local.o] : toString => "" +local.o = object 0 = number : 0 1 (h) = number : 1 2 (p) = number : 2 diff --git a/test/trace/propflags-7.swf b/test/trace/propflags-7.swf index b0df499..8704fcf 100644 Binary files a/test/trace/propflags-7.swf and b/test/trace/propflags-7.swf differ diff --git a/test/trace/propflags-7.swf.trace b/test/trace/propflags-7.swf.trace index 445ec27..0a38b83 100644 --- a/test/trace/propflags-7.swf.trace +++ b/test/trace/propflags-7.swf.trace @@ -1,4 +1,4 @@ -o object[local.o] : toString => "undefined" +local.o = object 0 = number : 0 1 (h) = number : 1 2 (p) = number : 2 diff-tree ae67dbbc6d59544293518d52fd9b42e3d0f0667c (from f76008d4e5427597e9810132fb40a7571ca20ee3) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 15:26:58 2007 +0300 Fix errors in trace_properties when called with something else than _global diff --git a/test/trace/trace_properties.as b/test/trace/trace_properties.as index bfa256c..901526f 100644 --- a/test/trace/trace_properties.as +++ b/test/trace/trace_properties.as @@ -421,10 +421,13 @@ function trace_properties (o, prefix, id generate_names (_global.Object, "_global", "Object"); generate_names (_global, "", "_global"); - generate_names (o, prefix, identifier); - if (typeof (o) == "object" || typeof (o) == "function") { + if (o["mySecretId"] == undefined) { + o["mySecretId"] = prefix + (prefix != "" ? "." : "") + identifier; + generate_names (o, prefix, identifier); + } + if (prefix + (prefix != "" ? "." : "") + identifier == o["mySecretId"]) { trace (prefix + (prefix != "" ? "." : "") + identifier + " = " + @@ -439,7 +442,13 @@ function trace_properties (o, prefix, id } else { + var value = ""; + if (typeof (o) == "number" || typeof (o) == "boolean") { + value += " : " + o; + } else if (typeof (o) == "string") { + value += " : \"" + o + "\""; + } trace (prefix + (prefix != "" ? "." : "") + identifier + " = " + - typeof (o[prop]) + value); + typeof (o) + value); } }
Reasonably Related Threads
- 4 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_as_boolean.c libswfdec/swfdec_as_function.c libswfdec/swfdec_as_number.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_string.c libswfdec/swfdec_color_as.c test/trace
- 20 commits - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_function.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_internal.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_number.c
- Branch 'vivi' - 60 commits - libswfdec-gtk/swfdec_gtk_loader.c libswfdec/Makefile.am libswfdec/swfdec_as_array.c libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame_internal.h libswfdec/swfdec_as_interpret.c
- 4 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h test/trace
- 3 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_as_function.c test/trace