[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