Benjamin Otte
2007-Oct-10 14:38 UTC
[Swfdec] 2 commits - libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_script_function.h
libswfdec/swfdec_as_interpret.c | 9 +++++++--
libswfdec/swfdec_as_script_function.h | 2 +-
2 files changed, 8 insertions(+), 3 deletions(-)
New commits:
diff-tree 31c9f0582260817777348c96a3576e5955f44ab3 (from
3d089e6c7d75cdf5584e2123ad514f36e331a010)
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Oct 10 16:38:37 2007 +0200
don't set the target of functions defined in the init scripts
diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index 907e01e..868f6f9 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -1850,6 +1850,11 @@ swfdec_action_define_function (SwfdecAsC
}
if (fun == NULL)
return;
+ /* This is a hack that should only trigger for functions defined in the init
scripts.
+ * It is supposed to ensure that those functions inherit their target when
being
+ * called instead of when being defined */
+ if (!SWFDEC_IS_MOVIE (frame->original_target))
+ SWFDEC_AS_SCRIPT_FUNCTION (fun)->target = NULL;
/* attach the function */
if (*function_name == '\0') {
swfdec_as_stack_ensure_free (cx, 1);
diff --git a/libswfdec/swfdec_as_script_function.h
b/libswfdec/swfdec_as_script_function.h
index c82aa62..1972e15 100644
--- a/libswfdec/swfdec_as_script_function.h
+++ b/libswfdec/swfdec_as_script_function.h
@@ -43,7 +43,7 @@ struct _SwfdecAsScriptFunction {
/* for script script_functions */
SwfdecScript * script; /* script being executed or NULL when native */
GSList * scope_chain; /* scope this script_function was defined in */
- SwfdecAsObject * target; /* target this object was defined in */
+ SwfdecAsObject * target; /* target this object was defined in or NULL if in
init script */
};
struct _SwfdecAsScriptFunctionClass {
diff-tree 3d089e6c7d75cdf5584e2123ad514f36e331a010 (from
0c961bd3f00f8bc768e085f449df7ffb828a8e50)
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Oct 10 16:37:18 2007 +0200
use the original target as target of defined functions
diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index 6ef4b23..907e01e 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -1844,9 +1844,9 @@ swfdec_action_define_function (SwfdecAsC
/* see function-scope tests */
if (cx->version > 5) {
/* FIXME: or original target? */
- fun = swfdec_as_script_function_new (frame->target,
frame->scope_chain, script);
+ fun = swfdec_as_script_function_new (frame->original_target,
frame->scope_chain, script);
} else {
- fun = swfdec_as_script_function_new (frame->target, NULL, script);
+ fun = swfdec_as_script_function_new (frame->original_target, NULL,
script);
}
if (fun == NULL)
return;
Apparently Analagous Threads
- 5 commits - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame_internal.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_scope.c libswfdec/swfdec_as_scope.h libswfdec/swfdec_as_script_function.c
- Branch 'as' - 16 commits - configure.ac libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_script_function.c
- Branch 'as' - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_function.c libswfdec/swfdec_as_function.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_native_function.c libswfdec/swfdec_as_native_function.h
- 6 commits - libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_internal.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_interpret.h libswfdec/swfdec_as_object.c libswfdec/swfdec_as_script_function.c libswfdec/swfdec_flash_security.c
- Branch 'vivi' - 9 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_as_function.c libswfdec/swfdec_as_function.h libswfdec/swfdec_as_internal.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_native_function.c
