[Swfdec-commits] 6 commits - swfdec/jpeg swfdec/swfdec_movie_clip_loader.c swfdec/swfdec_resource.c swfdec/swfdec_resource.h test/trace

Benjamin Otte company at kemper.freedesktop.org
Sat May 31 04:13:43 PDT 2008


 swfdec/jpeg/cogcompat.h                                   |    4 ++
 swfdec/jpeg/jpeg_rgb_decoder.c                            |   14 ++++----
 swfdec/swfdec_movie_clip_loader.c                         |    5 ++-
 swfdec/swfdec_resource.c                                  |   23 +++++++-------
 swfdec/swfdec_resource.h                                  |    2 -
 test/trace/Makefile.am                                    |   14 ++++++++
 test/trace/moviecliploader-level-5.swf                    |binary
 test/trace/moviecliploader-level-5.swf.trace              |    3 +
 test/trace/moviecliploader-level-6.swf                    |binary
 test/trace/moviecliploader-level-6.swf.trace              |    3 +
 test/trace/moviecliploader-level-7.swf                    |binary
 test/trace/moviecliploader-level-7.swf.trace              |    3 +
 test/trace/moviecliploader-level-8.swf                    |binary
 test/trace/moviecliploader-level-8.swf.trace              |    3 +
 test/trace/moviecliploader-level.as                       |   13 +++++++
 test/trace/moviecliploader-undefined-on-error-7.swf       |binary
 test/trace/moviecliploader-undefined-on-error-7.swf.trace |    4 ++
 test/trace/moviecliploader-undefined-on-error-8.swf       |binary
 test/trace/moviecliploader-undefined-on-error-8.swf.trace |    4 ++
 test/trace/moviecliploader-undefined-on-error.as          |   13 +++++++
 20 files changed, 88 insertions(+), 20 deletions(-)

New commits:
commit d1614ba08b3862632b7c5b0f52dd4f585476e08b
Author: Riccardo Magliocchetti <riccardo at datahost.it>
Date:   Sat May 31 13:13:02 2008 +0200

    use glib allocation functions in jpeg decoder

diff --git a/swfdec/jpeg/cogcompat.h b/swfdec/jpeg/cogcompat.h
index bf2370f..67daf8f 100644
--- a/swfdec/jpeg/cogcompat.h
+++ b/swfdec/jpeg/cogcompat.h
@@ -3,6 +3,7 @@
 #define _COG_COMPAT_H_
 
 #include <swfdec_debug.h>
+#include <glib.h>
 
 #define COG_LOG(...) SWFDEC_LOG(__VA_ARGS__)
 #define COG_DEBUG(...) SWFDEC_DEBUG(__VA_ARGS__)
@@ -10,5 +11,8 @@
 #define COG_WARNING(...) SWFDEC_WARNING(__VA_ARGS__)
 #define COG_ERROR(...) SWFDEC_ERROR(__VA_ARGS__)
 
+#define malloc g_malloc
+#define free g_free
+
 #endif
 
diff --git a/swfdec/jpeg/jpeg_rgb_decoder.c b/swfdec/jpeg/jpeg_rgb_decoder.c
index dced8eb..d95b61d 100644
--- a/swfdec/jpeg/jpeg_rgb_decoder.c
+++ b/swfdec/jpeg/jpeg_rgb_decoder.c
@@ -1,14 +1,11 @@
 
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
+#include <liboil/liboil.h>
+#include <liboil/liboildebug.h>
+#include <cogcompat.h>
 
 #include "jpeg.h"
 
-#include <liboil/liboil.h>
-#include <liboil/liboildebug.h>
 
-#define CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
 #define oil_argb(a,r,g,b) \
   ((oil_clamp_255(a)<<24) | \
    (oil_clamp_255(r)<<16) | \
commit ec0d0a2b9626d83b395a11329084423c43ee821a
Author: Riccardo Magliocchetti <riccardo at datahost.it>
Date:   Sat May 31 13:11:36 2008 +0200

    fix leak in error path

diff --git a/swfdec/jpeg/jpeg_rgb_decoder.c b/swfdec/jpeg/jpeg_rgb_decoder.c
index aeae651..dced8eb 100644
--- a/swfdec/jpeg/jpeg_rgb_decoder.c
+++ b/swfdec/jpeg/jpeg_rgb_decoder.c
@@ -57,7 +57,10 @@ int jpeg_decode_argb (uint8_t *data, int length, uint32_t **image,
   jpeg_decoder_addbits (dec, data, length);
   ret = jpeg_decoder_decode(dec);
 
-  if (!ret) return FALSE;
+  if (!ret) {
+    jpeg_decoder_free (dec);
+    return FALSE;
+  }
 
   jpeg_decoder_get_image_size (dec, width, height);
   *image = (uint32_t *)jpeg_decoder_get_argb_image (dec);
commit 633a9ee21fa2667f774885ab11142f2af5d0196e
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat May 31 13:10:16 2008 +0200

    whoops, one return too many left in the rebase

diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index a404f6c..15d4656 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -711,7 +711,6 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
   if (SWFDEC_IS_SPRITE_MOVIE (movie)) {
     swfdec_resource_load_internal (player, SWFDEC_SPRITE_MOVIE (movie),
 	NULL, url, buffer, loader);
-    return;
     return TRUE;
   }
   if (swfdec_player_get_level (player, s) >= 0) {
commit b142068dca14b05339bbffe41e598b2816cdf7b2
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu May 29 16:59:18 2008 +0200

    add another test for recent loader fixes

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index e11bba3..db74bac 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1937,6 +1937,15 @@ EXTRA_DIST = \
 	moviecliploader-known-image-size-7.swf.trace \
 	moviecliploader-known-image-size-8.swf \
 	moviecliploader-known-image-size-8.swf.trace \
+	moviecliploader-level-5.swf \
+	moviecliploader-level-5.swf.trace \
+	moviecliploader-level-6.swf \
+	moviecliploader-level-6.swf.trace \
+	moviecliploader-level-7.swf \
+	moviecliploader-level-7.swf.trace \
+	moviecliploader-level-8.swf \
+	moviecliploader-level-8.swf.trace \
+	moviecliploader-level.as \
 	moviecliploader-properties.as \
 	moviecliploader-properties-5.swf \
 	moviecliploader-properties-5.swf.trace \
diff --git a/test/trace/moviecliploader-level-5.swf b/test/trace/moviecliploader-level-5.swf
new file mode 100644
index 0000000..03ba9dd
Binary files /dev/null and b/test/trace/moviecliploader-level-5.swf differ
diff --git a/test/trace/moviecliploader-level-5.swf.trace b/test/trace/moviecliploader-level-5.swf.trace
new file mode 100644
index 0000000..ff61da0
--- /dev/null
+++ b/test/trace/moviecliploader-level-5.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+undefined
+undefined
diff --git a/test/trace/moviecliploader-level-6.swf b/test/trace/moviecliploader-level-6.swf
new file mode 100644
index 0000000..b5b2653
Binary files /dev/null and b/test/trace/moviecliploader-level-6.swf differ
diff --git a/test/trace/moviecliploader-level-6.swf.trace b/test/trace/moviecliploader-level-6.swf.trace
new file mode 100644
index 0000000..ff61da0
--- /dev/null
+++ b/test/trace/moviecliploader-level-6.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+undefined
+undefined
diff --git a/test/trace/moviecliploader-level-7.swf b/test/trace/moviecliploader-level-7.swf
new file mode 100644
index 0000000..eb49313
Binary files /dev/null and b/test/trace/moviecliploader-level-7.swf differ
diff --git a/test/trace/moviecliploader-level-7.swf.trace b/test/trace/moviecliploader-level-7.swf.trace
new file mode 100644
index 0000000..4195d92
--- /dev/null
+++ b/test/trace/moviecliploader-level-7.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+true
+undefined
diff --git a/test/trace/moviecliploader-level-8.swf b/test/trace/moviecliploader-level-8.swf
new file mode 100644
index 0000000..d703c13
Binary files /dev/null and b/test/trace/moviecliploader-level-8.swf differ
diff --git a/test/trace/moviecliploader-level-8.swf.trace b/test/trace/moviecliploader-level-8.swf.trace
new file mode 100644
index 0000000..4195d92
--- /dev/null
+++ b/test/trace/moviecliploader-level-8.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+true
+undefined
diff --git a/test/trace/moviecliploader-level.as b/test/trace/moviecliploader-level.as
new file mode 100644
index 0000000..d26fea7
--- /dev/null
+++ b/test/trace/moviecliploader-level.as
@@ -0,0 +1,13 @@
+// makeswf -v 7 -s 200x150 -r 1 -o moviecliploader-level.swf moviecliploader-level.as
+
+l = new MovieClipLoader ();
+l.onLoadStart = function (m) {
+  trace ("I win");
+};
+if (this == _level1) {
+  getURL ("fscommand:quit", "");
+} else {
+  trace ("Your mom");
+  trace (l.loadClip ("moviecliploader-level-" + __SWF_VERSION__ + ".swf", "_level1"));
+  trace (_level1);
+}
commit 4ac5d9c7ad73402ffbb58264621539bb0129f27e
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu May 29 16:54:22 2008 +0200

    add test for recent MovieClipLoader changes
    
    versions 5 and 6 are omitted on purpose

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 9fc0ec2..e11bba3 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1946,6 +1946,11 @@ EXTRA_DIST = \
 	moviecliploader-properties-7.swf.trace \
 	moviecliploader-properties-8.swf \
 	moviecliploader-properties-8.swf.trace \
+	moviecliploader-undefined-on-error-7.swf \
+	moviecliploader-undefined-on-error-7.swf.trace \
+	moviecliploader-undefined-on-error-8.swf \
+	moviecliploader-undefined-on-error-8.swf.trace \
+	moviecliploader-undefined-on-error.as \
 	moviecliploader-unknown-format.as \
 	moviecliploader-unknown-format-5.swf \
 	moviecliploader-unknown-format-5.swf.trace \
diff --git a/test/trace/moviecliploader-undefined-on-error-7.swf b/test/trace/moviecliploader-undefined-on-error-7.swf
new file mode 100644
index 0000000..b0d5aab
Binary files /dev/null and b/test/trace/moviecliploader-undefined-on-error-7.swf differ
diff --git a/test/trace/moviecliploader-undefined-on-error-7.swf.trace b/test/trace/moviecliploader-undefined-on-error-7.swf.trace
new file mode 100644
index 0000000..2e45127
--- /dev/null
+++ b/test/trace/moviecliploader-undefined-on-error-7.swf.trace
@@ -0,0 +1,4 @@
+true
+I lose
+undefined
+undefined
diff --git a/test/trace/moviecliploader-undefined-on-error-8.swf b/test/trace/moviecliploader-undefined-on-error-8.swf
new file mode 100644
index 0000000..958d65c
Binary files /dev/null and b/test/trace/moviecliploader-undefined-on-error-8.swf differ
diff --git a/test/trace/moviecliploader-undefined-on-error-8.swf.trace b/test/trace/moviecliploader-undefined-on-error-8.swf.trace
new file mode 100644
index 0000000..2e45127
--- /dev/null
+++ b/test/trace/moviecliploader-undefined-on-error-8.swf.trace
@@ -0,0 +1,4 @@
+true
+I lose
+undefined
+undefined
diff --git a/test/trace/moviecliploader-undefined-on-error.as b/test/trace/moviecliploader-undefined-on-error.as
new file mode 100644
index 0000000..24eedbc
--- /dev/null
+++ b/test/trace/moviecliploader-undefined-on-error.as
@@ -0,0 +1,13 @@
+// makeswf -v 7 -s 200x150 -r 1 -o moviecliploader-undefined-on-error.swf moviecliploader-undefined-on-error.as
+
+l = new MovieClipLoader ();
+l.onLoadError = function (m) {
+  trace ("I lose");
+  trace (m);
+  trace (m.b);
+  getURL ("fscommand:quit", "");
+};
+createEmptyMovieClip ("a", 0);
+a.b = 42;
+trace (l.loadClip ("http://example.com/maynotaccess.swf", "a"));
+removeMovieClip (a);
commit cc11be38e7cf7e568f3a3694942a0febe932fa16
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu May 29 16:52:53 2008 +0200

    make swfdec_resource_load_movie() return a boolean
    
    and use that boolean as return value for MovieClipLoader.loadClip

diff --git a/swfdec/swfdec_movie_clip_loader.c b/swfdec/swfdec_movie_clip_loader.c
index 1cb56b2..db9f595 100644
--- a/swfdec/swfdec_movie_clip_loader.c
+++ b/swfdec/swfdec_movie_clip_loader.c
@@ -72,10 +72,13 @@ swfdec_movie_clip_loader_loadClip (SwfdecAsContext *cx, SwfdecAsObject *object,
   SwfdecMovieClipLoader *loader;
   const char *url;
   SwfdecAsValue target;
+  gboolean result;
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE_CLIP_LOADER, &loader, "sv", &url, &target);
 
-  swfdec_resource_load_movie (SWFDEC_PLAYER (cx), &target, url, NULL, loader);
+  result = swfdec_resource_load_movie (SWFDEC_PLAYER (cx), &target, url, 
+      NULL, loader);
+  SWFDEC_AS_VALUE_SET_BOOLEAN (rval, result);
 }
 
 SWFDEC_AS_NATIVE (112, 102, swfdec_movie_clip_loader_unloadClip)
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index 5732a10..a404f6c 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -685,24 +685,24 @@ swfdec_resource_load_internal (SwfdecPlayer *player,
   swfdec_player_request_resource (player, swfdec_resource_load_request, load, swfdec_resource_load_free);
 }
 
-void
+gboolean
 swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target, 
     const char *url, SwfdecBuffer *buffer, SwfdecMovieClipLoader *loader)
 {
   SwfdecMovie *movie;
   const char *s;
 
-  g_return_if_fail (SWFDEC_IS_PLAYER (player));
-  g_return_if_fail (target != NULL);
-  g_return_if_fail (url != NULL);
-  g_return_if_fail (loader == NULL || SWFDEC_IS_MOVIE_CLIP_LOADER (loader));
+  g_return_val_if_fail (SWFDEC_IS_PLAYER (player), FALSE);
+  g_return_val_if_fail (target != NULL, FALSE);
+  g_return_val_if_fail (url != NULL, FALSE);
+  g_return_val_if_fail (loader == NULL || SWFDEC_IS_MOVIE_CLIP_LOADER (loader), FALSE);
 
   if (SWFDEC_AS_VALUE_IS_OBJECT (target)) {
     SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (target);
     if (SWFDEC_IS_SPRITE_MOVIE (object)) {
       swfdec_resource_load_internal (player, SWFDEC_SPRITE_MOVIE (object),
 	  NULL, url, buffer, loader);
-      return;
+      return TRUE;
     }
   }
 
@@ -712,12 +712,14 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
     swfdec_resource_load_internal (player, SWFDEC_SPRITE_MOVIE (movie),
 	NULL, url, buffer, loader);
     return;
+    return TRUE;
   }
-  if (swfdec_player_get_level (player, s) < 0) {
-    SWFDEC_WARNING ("%s does not reference a movie, not loading %s", s, url);
-    return;
+  if (swfdec_player_get_level (player, s) >= 0) {
+    swfdec_resource_load_internal (player, NULL, s, url, buffer, NULL);
+    return TRUE;
   }
-  swfdec_resource_load_internal (player, NULL, s, url, buffer, NULL);
+  SWFDEC_WARNING ("%s does not reference a movie, not loading %s", s, url);
+  return FALSE;
 }
 
 void
diff --git a/swfdec/swfdec_resource.h b/swfdec/swfdec_resource.h
index 5b12ee6..8a4e2e5 100644
--- a/swfdec/swfdec_resource.h
+++ b/swfdec/swfdec_resource.h
@@ -85,7 +85,7 @@ gpointer	swfdec_resource_get_export		(SwfdecResource *	root,
 const char *	swfdec_resource_get_export_name    	(SwfdecResource *	root,
 							 SwfdecCharacter *	character);
 
-void		swfdec_resource_load_movie		(SwfdecPlayer *		player,
+gboolean      	swfdec_resource_load_movie		(SwfdecPlayer *		player,
 							 const SwfdecAsValue *	target, 
 							 const char *		url,
 							 SwfdecBuffer *		buffer, 


More information about the Swfdec-commits mailing list