Pekka Lampila
2007-Aug-21 21:11 UTC
[Swfdec] 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
libswfdec/swfdec_as_array.c | 3 ++- libswfdec/swfdec_as_boolean.c | 3 ++- libswfdec/swfdec_as_function.c | 13 ++++++++----- libswfdec/swfdec_as_number.c | 14 ++++++++++---- libswfdec/swfdec_as_object.c | 19 ++++++++++++++----- libswfdec/swfdec_as_string.c | 6 ++++-- libswfdec/swfdec_color_as.c | 11 ++++++++--- test/trace/propflags-5.swf |binary test/trace/propflags-6.swf |binary test/trace/propflags-7.swf |binary test/trace/propflags.as | 6 +----- test/trace/trace.c | 2 +- test/trace/trace_properties.as | 5 +++-- 13 files changed, 53 insertions(+), 29 deletions(-) New commits: diff-tree 7c86c8ada24c3ba63a98036f901bf5c92487447d (from 881535b3416be86eb7fea7449b29ee7a09d7c106) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 00:10:10 2007 +0300 Set some property flags, mostly for __proto__ diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index 495bff1..81ef701 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -1107,7 +1107,8 @@ swfdec_as_array_init_context (SwfdecAsCo /* set the right properties on the Array.prototype object */ 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); SWFDEC_AS_VALUE_SET_OBJECT (&val, array); swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_toString, 0, diff --git a/libswfdec/swfdec_as_boolean.c b/libswfdec/swfdec_as_boolean.c index 907960a..18872cb 100644 --- a/libswfdec/swfdec_as_boolean.c +++ b/libswfdec/swfdec_as_boolean.c @@ -103,7 +103,8 @@ swfdec_as_boolean_init_context (SwfdecAs swfdec_as_object_set_variable (boolean, SWFDEC_AS_STR_constructor, &val); /* set the right properties on the Boolean.prototype object */ 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); SWFDEC_AS_VALUE_SET_OBJECT (&val, boolean); swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_toString, SWFDEC_TYPE_AS_BOOLEAN, swfdec_as_boolean_toString, 0); diff --git a/libswfdec/swfdec_as_function.c b/libswfdec/swfdec_as_function.c index 3e9b6dd..55a9ea3 100644 --- a/libswfdec/swfdec_as_function.c +++ b/libswfdec/swfdec_as_function.c @@ -97,7 +97,8 @@ swfdec_as_function_create (SwfdecAsConte } if (context->Function_prototype) { SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Function_prototype); - swfdec_as_object_set_variable (fun, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (fun, SWFDEC_AS_STR___proto__, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); } return SWFDEC_AS_FUNCTION (fun); @@ -194,11 +195,13 @@ swfdec_as_function_init_context (SwfdecA return; context->Function_prototype = proto; SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable (function, SWFDEC_AS_STR___proto__, &val); - swfdec_as_object_set_variable (function, SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR___proto__, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); + swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR_prototype, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); /* prototype functions */ - swfdec_as_object_add_function (proto, SWFDEC_AS_STR_call, SWFDEC_TYPE_AS_FUNCTION, - swfdec_as_function_do_call, 0); + swfdec_as_object_add_function (proto, SWFDEC_AS_STR_call, + SWFDEC_TYPE_AS_FUNCTION, swfdec_as_function_do_call, 0); } } diff --git a/libswfdec/swfdec_as_number.c b/libswfdec/swfdec_as_number.c index bc0b8cf..d0437b8 100644 --- a/libswfdec/swfdec_as_number.c +++ b/libswfdec/swfdec_as_number.c @@ -108,9 +108,13 @@ swfdec_as_number_init_context (SwfdecAsC proto = swfdec_as_object_new (context); /* set the right properties on the Number object */ SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (number, SWFDEC_AS_STR_prototype, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Function); - swfdec_as_object_set_variable (number, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (number, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_NUMBER (&val, NAN); swfdec_as_object_set_variable (number, SWFDEC_AS_STR_NaN, &val); SWFDEC_AS_VALUE_SET_NUMBER (&val, G_MAXDOUBLE); @@ -123,9 +127,11 @@ swfdec_as_number_init_context (SwfdecAsC swfdec_as_object_set_variable (number, SWFDEC_AS_STR_POSITIVE_INFINITY, &val); /* set the right properties on the Number.prototype object */ 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); SWFDEC_AS_VALUE_SET_OBJECT (&val, number); - 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_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); } diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c index 83ad4cf..873c3cd 100644 --- a/libswfdec/swfdec_as_object.c +++ b/libswfdec/swfdec_as_object.c @@ -494,9 +494,13 @@ swfdec_as_object_new (SwfdecAsContext *c object = swfdec_as_object_new_empty (context); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype); - swfdec_as_object_set_variable (object, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR___proto__, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object); - swfdec_as_object_set_variable (object, SWFDEC_AS_STR_constructor, &val); + swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); return object; } @@ -1104,12 +1108,17 @@ swfdec_as_object_init_context (SwfdecAsC SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); if (context->Function_prototype) { /* first, finish the function prototype */ - swfdec_as_object_set_variable (context->Function_prototype, SWFDEC_AS_STR___proto__, &val); + swfdec_as_object_set_variable_and_flags (context->Function_prototype, + SWFDEC_AS_STR___proto__, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); } /* now, set our own */ - swfdec_as_object_set_variable (object, SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR_prototype, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_OBJECT (&val, object); - 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); if (version > 5) { swfdec_as_object_add_function (proto, SWFDEC_AS_STR_addProperty, diff --git a/libswfdec/swfdec_as_string.c b/libswfdec/swfdec_as_string.c index 720bc5c..ab70a38 100644 --- a/libswfdec/swfdec_as_string.c +++ b/libswfdec/swfdec_as_string.c @@ -711,9 +711,11 @@ swfdec_as_string_init_context (SwfdecAsC /* set the right properties on the String.prototype object */ 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); SWFDEC_AS_VALUE_SET_OBJECT (&val, string); - 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_charAt, SWFDEC_TYPE_AS_STRING, swfdec_as_string_charAt, 1); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_indexOf, SWFDEC_TYPE_AS_STRING, swfdec_as_string_indexOf, 1); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_charCodeAt, SWFDEC_TYPE_AS_STRING, swfdec_as_string_charCodeAt, 1); diff --git a/libswfdec/swfdec_color_as.c b/libswfdec/swfdec_color_as.c index 3abf5f9..06b7d5c 100644 --- a/libswfdec/swfdec_color_as.c +++ b/libswfdec/swfdec_color_as.c @@ -204,12 +204,17 @@ swfdec_movie_color_init_context (SwfdecP swfdec_as_object_add (proto, context, sizeof (SwfdecMovieColor)); /* set the right properties on the Color object */ SWFDEC_AS_VALUE_SET_OBJECT (&val, proto); - swfdec_as_object_set_variable (color, SWFDEC_AS_STR_prototype, &val); + swfdec_as_object_set_variable_and_flags (color, SWFDEC_AS_STR_prototype, &val, + SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); /* set the right properties on the Color.prototype object */ 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 | + SWFDEC_AS_VARIABLE_CONSTANT); SWFDEC_AS_VALUE_SET_OBJECT (&val, color); - 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_VARIABLE_CONSTANT); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_getRGB, SWFDEC_TYPE_MOVIE_COLOR, swfdec_movie_color_getRGB, 0); swfdec_as_object_add_function (proto, SWFDEC_AS_STR_getTransform, SWFDEC_TYPE_MOVIE_COLOR, diff-tree 881535b3416be86eb7fea7449b29ee7a09d7c106 (from cbc47ba95627cedece316a1d0eea0ae993be2d5b) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Wed Aug 22 00:05:31 2007 +0300 Another small fix to trace_properties.as diff --git a/test/trace/trace_properties.as b/test/trace/trace_properties.as index a93f05c..5c6f171 100644 --- a/test/trace/trace_properties.as +++ b/test/trace/trace_properties.as @@ -16,8 +16,8 @@ function hasOwnProperty (o, prop) if (o.hasOwnProperty != undefined) return o.hasOwnProperty (prop); - o.hasOwnProperty = Object.prototype.hasOwnProperty; - result = o.hasOwnProperty (prop); + o.hasOwnProperty = _global.Object.prototype.hasOwnProperty; + var result = o.hasOwnProperty (prop); delete o.hasOwnProperty; return result; } diff-tree cbc47ba95627cedece316a1d0eea0ae993be2d5b (from 9c1568477d8c26d87239f58b6b75091b36059ae1) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Aug 21 23:19:44 2007 +0300 Fix one more error in trace_properties.as In trace_properties.as's new_empty_object set value to string before deleting to allow all things to be deleted in all version Use new_empty_object in propflags.as too, instead of writing it out again there diff --git a/test/trace/propflags-5.swf b/test/trace/propflags-5.swf index acea9ad..3648a4f 100644 Binary files a/test/trace/propflags-5.swf and b/test/trace/propflags-5.swf differ diff --git a/test/trace/propflags-6.swf b/test/trace/propflags-6.swf index ea5e27b..bb8f6ef 100644 Binary files a/test/trace/propflags-6.swf and b/test/trace/propflags-6.swf differ diff --git a/test/trace/propflags-7.swf b/test/trace/propflags-7.swf index ee97994..3bcd68d 100644 Binary files a/test/trace/propflags-7.swf and b/test/trace/propflags-7.swf differ diff --git a/test/trace/propflags.as b/test/trace/propflags.as index 944d63e..8387431 100644 --- a/test/trace/propflags.as +++ b/test/trace/propflags.as @@ -2,11 +2,7 @@ #include "trace_properties.as" -var o = new Object (); -ASSetPropFlags (o, null, 0, 7); -for (var prop in o) { - delete o[prop]; -} +var o = new_empty_object (); o[0] = 0; for (var i = 1; i <= 7; i++) { o[i] = i; diff --git a/test/trace/trace_properties.as b/test/trace/trace_properties.as index 92294a9..a93f05c 100644 --- a/test/trace/trace_properties.as +++ b/test/trace/trace_properties.as @@ -4,6 +4,7 @@ function new_empty_object () { var hash = new Object (); ASSetPropFlags (hash, null, 0, 7); for (var prop in hash) { + hash[prop] = "to-be-deleted"; delete hash[prop]; } return hash; diff-tree 9c1568477d8c26d87239f58b6b75091b36059ae1 (from 92ddd92a1bf234440d90f8707067be07d36ab16c) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Aug 21 23:13:53 2007 +0300 Fix a warning in trace.c diff --git a/test/trace/trace.c b/test/trace/trace.c index af52ef6..a4c1868 100644 --- a/test/trace/trace.c +++ b/test/trace/trace.c @@ -90,7 +90,7 @@ run_test (gpointer testp, gpointer unuse GString *string, *output; GError *error = NULL; gboolean quit = FALSE; - SwfdecInteraction *inter; + SwfdecInteraction *inter = NULL; output = g_string_new (""); g_string_append_printf (output, "Testing %s:\n", test->filename);
Apparently Analagous Threads
- 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
- 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
- 5 commits - libswfdec/swfdec_as_object.c NEWS player/swfplay.c
- 4 commits - libswfdec/swfdec_as_number.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_player_as.c test/trace
- 4 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h test/trace