[Swfdec-commits] 5 commits - swfdec/swfdec_as_context.c swfdec/swfdec_as_interpret.c swfdec/swfdec_load_object_as.c swfdec/swfdec_load_object.c swfdec/swfdec_load_object.h test/trace

Benjamin Otte company at kemper.freedesktop.org
Tue Nov 4 14:28:10 PST 2008


 swfdec/swfdec_as_context.c                              |    1 
 swfdec/swfdec_as_interpret.c                            |   15 +++--
 swfdec/swfdec_load_object.c                             |   46 ++++++++--------
 swfdec/swfdec_load_object.h                             |   17 +++--
 swfdec/swfdec_load_object_as.c                          |   36 ++++++++----
 test/trace/Makefile.am                                  |    9 +++
 test/trace/crash-0.8.2-sendAndLoad-without-target-5.swf |binary
 test/trace/crash-0.8.2-sendAndLoad-without-target-6.swf |binary
 test/trace/crash-0.8.2-sendAndLoad-without-target-7.swf |binary
 test/trace/crash-0.8.2-sendAndLoad-without-target-8.swf |binary
 test/trace/crash-0.8.2-sendAndLoad-without-target.as    |    6 ++
 11 files changed, 80 insertions(+), 50 deletions(-)

New commits:
commit 80f91fb91f2c288c0b0b05cc09e294237f93443b
Merge: 61d5607... b7d9731...
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 4 22:53:41 2008 +0100

    Merge branch '0.8'
    
    Conflicts:
    
    	test/trace/Makefile.am

diff --cc test/trace/Makefile.am
index 58876a7,f9e289d..75b4aaf
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@@ -1068,15 -1031,15 +1068,24 @@@ EXTRA_DIST = 
  	crash-0.8.2-gotoAndPlay-8.swf \
  	crash-0.8.2-gotoAndPlay-8.swf.trace \
  	crash-0.8.2-gotoAndPlay.as \
+ 	crash-0.8.2-sendAndLoad-without-target-5.swf \
+ 	crash-0.8.2-sendAndLoad-without-target-5.swf.trace \
+ 	crash-0.8.2-sendAndLoad-without-target-6.swf \
+ 	crash-0.8.2-sendAndLoad-without-target-6.swf.trace \
+ 	crash-0.8.2-sendAndLoad-without-target-7.swf \
+ 	crash-0.8.2-sendAndLoad-without-target-7.swf.trace \
+ 	crash-0.8.2-sendAndLoad-without-target-8.swf \
+ 	crash-0.8.2-sendAndLoad-without-target-8.swf.trace \
+ 	crash-0.8.2-sendAndLoad-without-target.as \
 +	crash-0.9.1-getvariable-shapes-5.swf \
 +	crash-0.9.1-getvariable-shapes-5.swf.trace \
 +	crash-0.9.1-getvariable-shapes-6.swf \
 +	crash-0.9.1-getvariable-shapes-6.swf.trace \
 +	crash-0.9.1-getvariable-shapes-7.swf \
 +	crash-0.9.1-getvariable-shapes-7.swf.trace \
 +	crash-0.9.1-getvariable-shapes-8.swf \
 +	crash-0.9.1-getvariable-shapes-8.swf.trace \
 +	crash-0.9.1-getvariable-shapes.xml \
  	createEmptyMovieClip-events.sc \
  	createEmptyMovieClip-events.swf \
  	createEmptyMovieClip-events.swf.trace \
commit b7d9731035adea67c90b835101ec6b9f32c16c2f
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 4 22:52:03 2008 +0100

    add a test for just-fixed crasher

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 62322f7..f9e289d 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1031,6 +1031,15 @@ EXTRA_DIST = \
 	crash-0.8.2-gotoAndPlay-8.swf \
 	crash-0.8.2-gotoAndPlay-8.swf.trace \
 	crash-0.8.2-gotoAndPlay.as \
+	crash-0.8.2-sendAndLoad-without-target-5.swf \
+	crash-0.8.2-sendAndLoad-without-target-5.swf.trace \
+	crash-0.8.2-sendAndLoad-without-target-6.swf \
+	crash-0.8.2-sendAndLoad-without-target-6.swf.trace \
+	crash-0.8.2-sendAndLoad-without-target-7.swf \
+	crash-0.8.2-sendAndLoad-without-target-7.swf.trace \
+	crash-0.8.2-sendAndLoad-without-target-8.swf \
+	crash-0.8.2-sendAndLoad-without-target-8.swf.trace \
+	crash-0.8.2-sendAndLoad-without-target.as \
 	createEmptyMovieClip-events.sc \
 	createEmptyMovieClip-events.swf \
 	createEmptyMovieClip-events.swf.trace \
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-5.swf b/test/trace/crash-0.8.2-sendAndLoad-without-target-5.swf
new file mode 100644
index 0000000..fef2098
Binary files /dev/null and b/test/trace/crash-0.8.2-sendAndLoad-without-target-5.swf differ
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-5.swf.trace b/test/trace/crash-0.8.2-sendAndLoad-without-target-5.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-6.swf b/test/trace/crash-0.8.2-sendAndLoad-without-target-6.swf
new file mode 100644
index 0000000..a272050
Binary files /dev/null and b/test/trace/crash-0.8.2-sendAndLoad-without-target-6.swf differ
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-6.swf.trace b/test/trace/crash-0.8.2-sendAndLoad-without-target-6.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-7.swf b/test/trace/crash-0.8.2-sendAndLoad-without-target-7.swf
new file mode 100644
index 0000000..558f71d
Binary files /dev/null and b/test/trace/crash-0.8.2-sendAndLoad-without-target-7.swf differ
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-7.swf.trace b/test/trace/crash-0.8.2-sendAndLoad-without-target-7.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-8.swf b/test/trace/crash-0.8.2-sendAndLoad-without-target-8.swf
new file mode 100644
index 0000000..00c316a
Binary files /dev/null and b/test/trace/crash-0.8.2-sendAndLoad-without-target-8.swf differ
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target-8.swf.trace b/test/trace/crash-0.8.2-sendAndLoad-without-target-8.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-sendAndLoad-without-target.as b/test/trace/crash-0.8.2-sendAndLoad-without-target.as
new file mode 100644
index 0000000..654b15a
--- /dev/null
+++ b/test/trace/crash-0.8.2-sendAndLoad-without-target.as
@@ -0,0 +1,6 @@
+// makeswf -v 7 -s 200x150 -r 15 -o crash-0.8.2-sendAndLoad-without-target.swf crash-0.8.2-sendAndLoad-without-target.as
+
+l = new LoadVars ();
+l.sendAndLoad ("hello", undefined);
+
+getURL ("fscommand:quit", "");
commit 993208521ae3f514d812c3a378f4a77f188e4fce
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 4 22:49:36 2008 +0100

    fix crasher when target could not be converted to an object

diff --git a/swfdec/swfdec_load_object_as.c b/swfdec/swfdec_load_object_as.c
index 0326a37..a1a7956 100644
--- a/swfdec/swfdec_load_object_as.c
+++ b/swfdec/swfdec_load_object_as.c
@@ -223,7 +223,7 @@ swfdec_load_object_as_sendAndLoad (SwfdecAsContext *cx, SwfdecAsObject *object,
   SwfdecAsValue val;
   SwfdecBuffer *buffer;
 
-  SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_OBJECT, &object, "sO|s", &url, &target,
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_OBJECT, &object, "so|s", &url, &target,
       &method);
 
   SWFDEC_AS_VALUE_SET_OBJECT (&val, object);
commit 61d5607a0241e0828f90f23338e3170c850b2f48
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 4 22:00:00 2008 +0100

    make SwfdecLoadObject take the target as a Value instead of as an object
    
    This makes sure it works properly on removed/readded movieclips

diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 6ae6384..2723b1e 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -1142,15 +1142,16 @@ swfdec_action_get_url (SwfdecAsContext *cx, guint action, const guint8 *data, gu
 }
 
 static void
-swfdec_as_interpret_load_variables_on_finish (SwfdecAsObject *target,
-    const char *text)
+swfdec_as_interpret_load_variables_on_finish (SwfdecPlayer *player,
+    const SwfdecAsValue *val, const char *text)
 {
+  SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (val);
+
   if (text != NULL)
-    swfdec_as_object_decode (target, text);
+    swfdec_as_object_decode (SWFDEC_AS_OBJECT (movie), text);
 
   // only call onData for sprite movies
-  // FIXME: is it called even when loading fails?
-  swfdec_actor_queue_script (SWFDEC_ACTOR (target), SWFDEC_EVENT_DATA);
+  swfdec_actor_queue_script (SWFDEC_ACTOR (movie), SWFDEC_EVENT_DATA);
 }
 
 static gboolean
@@ -1199,6 +1200,7 @@ swfdec_action_get_url2 (SwfdecAsContext *cx, guint action, const guint8 *data, g
   const char *target, *url;
   guint method, internal, variables;
   SwfdecBuffer *buffer;
+  SwfdecAsValue val;
 
   if (len != 1) {
     SWFDEC_ERROR ("GetURL2 requires 1 byte of data, not %u", len);
@@ -1245,7 +1247,8 @@ swfdec_action_get_url2 (SwfdecAsContext *cx, guint action, const guint8 *data, g
     target = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
     movie = swfdec_player_get_movie_from_string (SWFDEC_PLAYER (cx), target);
     if (movie != NULL) {
-      swfdec_load_object_create (SWFDEC_AS_OBJECT (movie), url, buffer, 0,
+      SWFDEC_AS_VALUE_SET_MOVIE (&val, movie);
+      swfdec_load_object_create (SWFDEC_PLAYER (cx), &val, url, buffer, 0,
 	  NULL, NULL, NULL, swfdec_as_interpret_load_variables_on_finish);
     }
   } else if (internal) {
diff --git a/swfdec/swfdec_load_object.c b/swfdec/swfdec_load_object.c
index 43fcbdc..339b145 100644
--- a/swfdec/swfdec_load_object.c
+++ b/swfdec/swfdec_load_object.c
@@ -38,7 +38,7 @@
 static SwfdecPlayer *
 swfdec_load_object_stream_target_get_player (SwfdecStreamTarget *target)
 {
-  return SWFDEC_PLAYER (swfdec_gc_object_get_context (SWFDEC_LOAD_OBJECT (target)->target));
+  return SWFDEC_PLAYER (swfdec_gc_object_get_context (target));
 }
 
 static gboolean
@@ -47,10 +47,11 @@ swfdec_load_object_stream_target_parse (SwfdecStreamTarget *target,
 {
   SwfdecLoader *loader = SWFDEC_LOADER (stream);
   SwfdecLoadObject *load_object = SWFDEC_LOAD_OBJECT (target);
+  SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (target));
 
   if (load_object->progress != NULL) {
     swfdec_sandbox_use (load_object->sandbox);
-    load_object->progress (load_object->target,
+    load_object->progress (player, &load_object->target,
 	swfdec_loader_get_loaded (loader), swfdec_loader_get_size (loader));
     swfdec_sandbox_unuse (load_object->sandbox);
   }
@@ -63,6 +64,7 @@ swfdec_load_object_stream_target_error (SwfdecStreamTarget *target,
 {
   SwfdecLoader *loader = SWFDEC_LOADER (stream);
   SwfdecLoadObject *load_object = SWFDEC_LOAD_OBJECT (target);
+  SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (load_object->sandbox));
 
   /* break reference to the loader */
   swfdec_stream_set_target (SWFDEC_STREAM (loader), NULL);
@@ -71,18 +73,18 @@ swfdec_load_object_stream_target_error (SwfdecStreamTarget *target,
 
   /* call finish */
   swfdec_sandbox_use (load_object->sandbox);
-  load_object->finish (load_object->target, NULL);
+  load_object->finish (player, &load_object->target, NULL);
   swfdec_sandbox_unuse (load_object->sandbox);
 
   /* unroot */
-  swfdec_player_unroot (SWFDEC_PLAYER (
-	swfdec_gc_object_get_context (load_object->sandbox)), load_object);
+  swfdec_player_unroot (player, load_object);
 }
 
 static void
 swfdec_load_object_stream_target_close (SwfdecStreamTarget *target,
     SwfdecStream *stream)
 {
+  SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (target));
   SwfdecLoadObject *load_object = SWFDEC_LOAD_OBJECT (target);
   char *text;
 
@@ -92,21 +94,19 @@ swfdec_load_object_stream_target_close (SwfdecStreamTarget *target,
   /* break reference to the loader */
   swfdec_stream_set_target (stream, NULL);
   load_object->loader = NULL;
-  g_object_unref (stream);
 
   /* call finish */
   swfdec_sandbox_use (load_object->sandbox);
   if (text != NULL) {
-    load_object->finish (load_object->target, 
-	swfdec_as_context_give_string (swfdec_gc_object_get_context (load_object->target), text));
+    load_object->finish (player, &load_object->target, 
+	swfdec_as_context_give_string (SWFDEC_AS_CONTEXT (player), text));
   } else {
-    load_object->finish (load_object->target, SWFDEC_AS_STR_EMPTY);
+    load_object->finish (player, &load_object->target, SWFDEC_AS_STR_EMPTY);
   }
   swfdec_sandbox_unuse (load_object->sandbox);
 
   /* unroot */
-  swfdec_player_unroot (SWFDEC_PLAYER (
-	swfdec_gc_object_get_context (load_object->sandbox)), load_object);
+  swfdec_player_unroot (player, load_object);
 }
 
 static void
@@ -120,7 +120,7 @@ swfdec_load_object_stream_target_init (SwfdecStreamTargetInterface *iface)
 
 /*** SWFDEC_LOAD_OBJECT ***/
 
-G_DEFINE_TYPE_WITH_CODE (SwfdecLoadObject, swfdec_load_object, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (SwfdecLoadObject, swfdec_load_object, SWFDEC_TYPE_GC_OBJECT,
     G_IMPLEMENT_INTERFACE (SWFDEC_TYPE_STREAM_TARGET, swfdec_load_object_stream_target_init))
 
 static void
@@ -167,7 +167,7 @@ swfdec_load_object_load (SwfdecPlayer *player, gboolean allow, gpointer obj)
 
     /* call finish */
     swfdec_sandbox_use (load->sandbox);
-    load->finish (load->target, NULL);
+    load->finish (player, &load->target, NULL);
     swfdec_sandbox_unuse (load->sandbox);
 
     /* unroot */
@@ -205,33 +205,35 @@ static void
 swfdec_load_object_mark (gpointer object, gpointer player)
 {
   SwfdecLoadObject *load = object;
+  
+  /* need to mark ourself, becuase we're not a real GcObject */
+  swfdec_gc_object_mark (load);
 
   swfdec_gc_object_mark (load->sandbox);
   if (load->url)
     swfdec_as_string_mark (load->url);
-  swfdec_gc_object_mark (load->target);
+  swfdec_as_value_mark (&load->target);
 }
 
 void
-swfdec_load_object_create (SwfdecAsObject *target, const char *url,
-    SwfdecBuffer *data, guint header_count, char **header_names,
+swfdec_load_object_create (SwfdecPlayer *player, const SwfdecAsValue *target,
+    const char *url, SwfdecBuffer *data, guint header_count, char **header_names,
     char **header_values, SwfdecLoadObjectProgress progress,
     SwfdecLoadObjectFinish finish)
 {
-  SwfdecPlayer *player;
   SwfdecLoadObject *load;
 
-  g_return_if_fail (SWFDEC_IS_AS_OBJECT (target));
+  g_return_if_fail (SWFDEC_IS_PLAYER (player));
+  g_return_if_fail (target != NULL);
   g_return_if_fail (url != NULL);
   g_return_if_fail (header_count == 0 || header_names != NULL);
   g_return_if_fail (header_count == 0 || header_values != NULL);
   g_return_if_fail (finish != NULL);
 
-  player = SWFDEC_PLAYER (swfdec_gc_object_get_context (target));
-  load = g_object_new (SWFDEC_TYPE_LOAD_OBJECT, NULL);
-  swfdec_player_root_full (player, load, swfdec_load_object_mark, g_object_unref);
+  load = g_object_new (SWFDEC_TYPE_LOAD_OBJECT, "context", player, NULL);
+  swfdec_player_root_full (player, load, swfdec_load_object_mark, NULL);
 
-  load->target = target;
+  load->target = *target;
   load->url = url;
   load->buffer = data;
   load->header_count = header_count;
diff --git a/swfdec/swfdec_load_object.h b/swfdec/swfdec_load_object.h
index c44c9be..34813f2 100644
--- a/swfdec/swfdec_load_object.h
+++ b/swfdec/swfdec_load_object.h
@@ -31,10 +31,10 @@ G_BEGIN_DECLS
 typedef struct _SwfdecLoadObject SwfdecLoadObject;
 typedef struct _SwfdecLoadObjectClass SwfdecLoadObjectClass;
 
-typedef void (* SwfdecLoadObjectProgress) (SwfdecAsObject *target,
-    glong loaded, glong size);
-typedef void (* SwfdecLoadObjectFinish) (SwfdecAsObject *target,
-    const char *text);
+typedef void (* SwfdecLoadObjectProgress) (SwfdecPlayer *player,
+    const SwfdecAsValue *target, glong loaded, glong size);
+typedef void (* SwfdecLoadObjectFinish) (SwfdecPlayer *player,
+    const SwfdecAsValue *target, const char *text);
 
 #define SWFDEC_TYPE_LOAD_OBJECT                    (swfdec_load_object_get_type())
 #define SWFDEC_IS_LOAD_OBJECT(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_LOAD_OBJECT))
@@ -44,7 +44,7 @@ typedef void (* SwfdecLoadObjectFinish) (SwfdecAsObject *target,
 #define SWFDEC_LOAD_OBJECT_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_LOAD_OBJECT, SwfdecLoadObjectClass))
 
 struct _SwfdecLoadObject {
-  GObject			object;
+  SwfdecGcObject	      	object;
   
   const char *			url;		/* GC'ed url to request */
   SwfdecBuffer *		buffer;		/* data to send */
@@ -55,18 +55,19 @@ struct _SwfdecLoadObject {
 
   SwfdecSandbox *		sandbox;	/* sandbox that inited the loading */
   guint				version;	/* version used when initiating the load - for parsing the data */
-  SwfdecAsObject *		target;		/* target object */
+  SwfdecAsValue			target;		/* target (either movie or object) */
   SwfdecLoadObjectProgress	progress;	/* progress callback */
   SwfdecLoadObjectFinish	finish;		/* finish callback */
 };
 
 struct _SwfdecLoadObjectClass {
-  GObjectClass			object_class;
+  SwfdecGcObjectClass		object_class;
 };
 
 GType		swfdec_load_object_get_type	(void);
 
-void		swfdec_load_object_create     	(SwfdecAsObject *		target,
+void		swfdec_load_object_create     	(SwfdecPlayer *			player,
+						 const SwfdecAsValue *		target,
 						 const char *			url,
 						 SwfdecBuffer *			data,
 						 guint				header_count,
diff --git a/swfdec/swfdec_load_object_as.c b/swfdec/swfdec_load_object_as.c
index a38a251..1f41642 100644
--- a/swfdec/swfdec_load_object_as.c
+++ b/swfdec/swfdec_load_object_as.c
@@ -31,29 +31,37 @@
 #include "swfdec_player_internal.h"
 
 static void
-swfdec_load_object_on_finish (SwfdecAsObject *target, const char *text)
+swfdec_load_object_on_finish (SwfdecPlayer *player, const SwfdecAsValue *target, const char *text)
 {
+  SwfdecAsObject *object;
   SwfdecAsValue val;
 
+  object = SWFDEC_AS_VALUE_GET_COMPOSITE (target);
+  if (object == NULL)
+    return;
+
   if (text != NULL) {
     SWFDEC_AS_VALUE_SET_STRING (&val, text);
   } else {
     SWFDEC_AS_VALUE_SET_UNDEFINED (&val);
   }
 
-  swfdec_as_object_call (target, SWFDEC_AS_STR_onData, 1, &val, NULL);
+  swfdec_as_object_call (object, SWFDEC_AS_STR_onData, 1, &val, NULL);
 }
 
 static void
-swfdec_load_object_on_progress (SwfdecAsObject *target, glong size,
-    glong loaded)
+swfdec_load_object_on_progress (SwfdecPlayer *player, const SwfdecAsValue *target,
+    glong size, glong loaded)
 {
-  SwfdecAsContext *cx;
+  SwfdecAsContext *cx = SWFDEC_AS_CONTEXT (player);
+  SwfdecAsObject *object;
   SwfdecAsValue val;
 
-  cx = swfdec_gc_object_get_context (target);
+  object = SWFDEC_AS_VALUE_GET_COMPOSITE (target);
+  if (object == NULL)
+    return;
   swfdec_as_value_set_number (cx, &val, loaded);
-  swfdec_as_object_set_variable_and_flags (target, SWFDEC_AS_STR__bytesLoaded,
+  swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR__bytesLoaded,
       &val, SWFDEC_AS_VARIABLE_HIDDEN);
 
   if (size >= 0) {
@@ -61,7 +69,7 @@ swfdec_load_object_on_progress (SwfdecAsObject *target, glong size,
   } else {
     swfdec_as_value_set_number (cx, &val, loaded);
   }
-  swfdec_as_object_set_variable_and_flags (target, SWFDEC_AS_STR__bytesTotal,
+  swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR__bytesTotal,
       &val, SWFDEC_AS_VARIABLE_HIDDEN);
 }
 
@@ -76,7 +84,8 @@ swfdec_load_object_as_load (SwfdecAsContext *cx, SwfdecAsObject *object, guint a
   SWFDEC_AS_VALUE_SET_BOOLEAN (rval, FALSE);
   SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_OBJECT, &object, "s", &url);
 
-  swfdec_load_object_create (object, url, NULL, 0, NULL, NULL,
+  SWFDEC_AS_VALUE_SET_COMPOSITE (&val, object);
+  swfdec_load_object_create (SWFDEC_PLAYER (cx), &val, url, NULL, 0, NULL, NULL,
       swfdec_load_object_on_progress, swfdec_load_object_on_finish);
 
   swfdec_as_value_set_integer (cx, &val, 0);
@@ -225,7 +234,7 @@ swfdec_load_object_as_sendAndLoad (SwfdecAsContext *cx, SwfdecAsObject *object,
   SwfdecAsValue val;
   SwfdecBuffer *buffer;
 
-  SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_OBJECT, &object, "sO|s", &url, &target,
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_OBJECT, &object, "so|s", &url, &target,
       &method);
 
   SWFDEC_AS_VALUE_SET_COMPOSITE (&val, object);
@@ -236,14 +245,15 @@ swfdec_load_object_as_sendAndLoad (SwfdecAsContext *cx, SwfdecAsObject *object,
 	g_strjoin (NULL, url, "?", data, NULL));
     buffer = NULL;
   } else {
+    gsize len = strlen (data);
     // don't send the nul-byte
-    buffer = swfdec_buffer_new_for_data (g_memdup (data, strlen (data)),
-	strlen (data));
+    buffer = swfdec_buffer_new_for_data (g_memdup (data, len), len);
   }
 
   swfdec_load_object_as_get_headers (object, &header_count, &header_names,
       &header_values);
-  swfdec_load_object_create (target, url, buffer, header_count, header_names,
+  SWFDEC_AS_VALUE_SET_COMPOSITE (&val, target);
+  swfdec_load_object_create (SWFDEC_PLAYER (cx), &val, url, buffer, header_count, header_names,
       header_values, swfdec_load_object_on_progress,
       swfdec_load_object_on_finish);
 
commit cfc5d573754a8125c4b26c0b4834024cc4df2152
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 4 15:00:06 2008 +0100

    remove leftover printf

diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index 6bf3749..b68bb97 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -589,7 +589,6 @@ swfdec_as_context_init (SwfdecAsContext *context)
 
   for (s = swfdec_as_strings; s->next; s++) {
     g_hash_table_insert (context->interned_strings, (gpointer) s->string, (gpointer) s);
-    g_print ("%s\n", s->string);
   }
   context->rand = g_rand_new ();
   g_get_current_time (&context->start_time);


More information about the Swfdec-commits mailing list