[Swfdec-commits] Branch '0.6' - 2 commits - swfdec/swfdec_as_object.c test/trace

Benjamin Otte company at kemper.freedesktop.org
Fri Jul 4 15:21:31 PDT 2008


 swfdec/swfdec_as_object.c                        |    4 ++--
 test/trace/Makefile.am                           |    9 +++++++++
 test/trace/crash-0.6.6-variable-leak-5.swf       |binary
 test/trace/crash-0.6.6-variable-leak-5.swf.trace |    1 +
 test/trace/crash-0.6.6-variable-leak-6.swf       |binary
 test/trace/crash-0.6.6-variable-leak-6.swf.trace |    1 +
 test/trace/crash-0.6.6-variable-leak-7.swf       |binary
 test/trace/crash-0.6.6-variable-leak-7.swf.trace |    1 +
 test/trace/crash-0.6.6-variable-leak-8.swf       |binary
 test/trace/crash-0.6.6-variable-leak-8.swf.trace |    1 +
 test/trace/crash-0.6.6-variable-leak.as          |    7 +++++++
 11 files changed, 22 insertions(+), 2 deletions(-)

New commits:
commit b4a7d424cbe7d0be7960e29eebd39204506ad145
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Jul 5 00:21:13 2008 +0200

    Add a test for the crash caused by the bug in swfdec_as_object_hash_create

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index ca1fcd8..5cdb5e0 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -736,6 +736,15 @@ EXTRA_DIST = \
 	crash-0.6.2-try-and-exception-on-dispose-8.swf \
 	crash-0.6.2-try-and-exception-on-dispose-8.swf.trace \
 	crash-0.6.2-try-and-exception-on-dispose.as \
+	crash-0.6.6-variable-leak-5.swf \
+	crash-0.6.6-variable-leak-5.swf.trace \
+	crash-0.6.6-variable-leak-6.swf \
+	crash-0.6.6-variable-leak-6.swf.trace \
+	crash-0.6.6-variable-leak-7.swf \
+	crash-0.6.6-variable-leak-7.swf.trace \
+	crash-0.6.6-variable-leak-8.swf \
+	crash-0.6.6-variable-leak-8.swf.trace \
+	crash-0.6.6-variable-leak.as \
 	crash-0.6.6-xmlsocket-5.swf \
 	crash-0.6.6-xmlsocket-5.swf.trace \
 	crash-0.6.6-xmlsocket-6.swf \
diff --git a/test/trace/crash-0.6.6-variable-leak-5.swf b/test/trace/crash-0.6.6-variable-leak-5.swf
new file mode 100644
index 0000000..cc23fe1
Binary files /dev/null and b/test/trace/crash-0.6.6-variable-leak-5.swf differ
diff --git a/test/trace/crash-0.6.6-variable-leak-5.swf.trace b/test/trace/crash-0.6.6-variable-leak-5.swf.trace
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/test/trace/crash-0.6.6-variable-leak-5.swf.trace
@@ -0,0 +1 @@
+OK
diff --git a/test/trace/crash-0.6.6-variable-leak-6.swf b/test/trace/crash-0.6.6-variable-leak-6.swf
new file mode 100644
index 0000000..d7fdbad
Binary files /dev/null and b/test/trace/crash-0.6.6-variable-leak-6.swf differ
diff --git a/test/trace/crash-0.6.6-variable-leak-6.swf.trace b/test/trace/crash-0.6.6-variable-leak-6.swf.trace
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/test/trace/crash-0.6.6-variable-leak-6.swf.trace
@@ -0,0 +1 @@
+OK
diff --git a/test/trace/crash-0.6.6-variable-leak-7.swf b/test/trace/crash-0.6.6-variable-leak-7.swf
new file mode 100644
index 0000000..25e4bfa
Binary files /dev/null and b/test/trace/crash-0.6.6-variable-leak-7.swf differ
diff --git a/test/trace/crash-0.6.6-variable-leak-7.swf.trace b/test/trace/crash-0.6.6-variable-leak-7.swf.trace
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/test/trace/crash-0.6.6-variable-leak-7.swf.trace
@@ -0,0 +1 @@
+OK
diff --git a/test/trace/crash-0.6.6-variable-leak-8.swf b/test/trace/crash-0.6.6-variable-leak-8.swf
new file mode 100644
index 0000000..ea7d787
Binary files /dev/null and b/test/trace/crash-0.6.6-variable-leak-8.swf differ
diff --git a/test/trace/crash-0.6.6-variable-leak-8.swf.trace b/test/trace/crash-0.6.6-variable-leak-8.swf.trace
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/test/trace/crash-0.6.6-variable-leak-8.swf.trace
@@ -0,0 +1 @@
+OK
diff --git a/test/trace/crash-0.6.6-variable-leak.as b/test/trace/crash-0.6.6-variable-leak.as
new file mode 100644
index 0000000..bc28e70
--- /dev/null
+++ b/test/trace/crash-0.6.6-variable-leak.as
@@ -0,0 +1,7 @@
+// makeswf -v 7 -s 100x150 -r 15 -o crash-0.6.6-variable-leak-7.swf crash-0.6.6-variable-leak.as
+
+var x = new Array ();
+ASSetNativeAccessor (x, 666, "1,2,3,4,5,6", 1);
+trace ("OK");
+
+getURL ("fscommand:quit", "");
commit 4684b47da18121f74caac6c341877177ea46ef72
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Jul 4 17:59:21 2008 +0300

    Fix swfdec_as_object_hash_create with invalid variable registering memory
    
    It registered the memory before failing because of the invalid name, so the
    memory was never released again. Lead to assert when disposing the context.

diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index 3bf10cd..e574c1a 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -206,10 +206,10 @@ swfdec_as_object_hash_create (SwfdecAsObject *object, const char *variable, guin
 {
   SwfdecAsVariable *var;
 
-  if (!swfdec_as_context_use_mem (object->context, sizeof (SwfdecAsVariable)))
-    return NULL;
   if (!swfdec_as_variable_name_is_valid (variable))
     return NULL;
+  if (!swfdec_as_context_use_mem (object->context, sizeof (SwfdecAsVariable)))
+    return NULL;
   var = g_slice_new0 (SwfdecAsVariable);
   var->flags = flags;
   g_hash_table_insert (object->properties, (gpointer) variable, var);


More information about the Swfdec-commits mailing list