[Swfdec-commits] Branch '0.8' - 3 commits - swfdec/swfdec_bitmap_data.c test/trace
Benjamin Otte
company at kemper.freedesktop.org
Fri Nov 14 06:51:56 PST 2008
swfdec/swfdec_bitmap_data.c | 35 +++++++++++++++++++++-----------
test/trace/Makefile.am | 9 ++++++++
test/trace/crash-0.8.2-copyPixels-5.swf |binary
test/trace/crash-0.8.2-copyPixels-6.swf |binary
test/trace/crash-0.8.2-copyPixels-7.swf |binary
test/trace/crash-0.8.2-copyPixels-8.swf |binary
test/trace/crash-0.8.2-copyPixels.as | 7 ++++++
7 files changed, 40 insertions(+), 11 deletions(-)
New commits:
commit 5195c41ab749afc8bdfaf1f2603281f23fc6a5d7
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Nov 12 21:17:53 2008 +0100
add test for copyPixels crashers
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index f9e289d..8965fb2 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1022,6 +1022,15 @@ EXTRA_DIST = \
crash-0.8.0-huffmann-table-8.swf \
crash-0.8.0-huffmann-table-8.swf.trace \
crash-0.8.0-huffmann-table.xml \
+ crash-0.8.2-copyPixels-5.swf \
+ crash-0.8.2-copyPixels-5.swf.trace \
+ crash-0.8.2-copyPixels-6.swf \
+ crash-0.8.2-copyPixels-6.swf.trace \
+ crash-0.8.2-copyPixels-7.swf \
+ crash-0.8.2-copyPixels-7.swf.trace \
+ crash-0.8.2-copyPixels-8.swf \
+ crash-0.8.2-copyPixels-8.swf.trace \
+ crash-0.8.2-copyPixels.as \
crash-0.8.2-gotoAndPlay-5.swf \
crash-0.8.2-gotoAndPlay-5.swf.trace \
crash-0.8.2-gotoAndPlay-6.swf \
diff --git a/test/trace/crash-0.8.2-copyPixels-5.swf b/test/trace/crash-0.8.2-copyPixels-5.swf
new file mode 100644
index 0000000..442360d
Binary files /dev/null and b/test/trace/crash-0.8.2-copyPixels-5.swf differ
diff --git a/test/trace/crash-0.8.2-copyPixels-5.swf.trace b/test/trace/crash-0.8.2-copyPixels-5.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-copyPixels-6.swf b/test/trace/crash-0.8.2-copyPixels-6.swf
new file mode 100644
index 0000000..16ead00
Binary files /dev/null and b/test/trace/crash-0.8.2-copyPixels-6.swf differ
diff --git a/test/trace/crash-0.8.2-copyPixels-6.swf.trace b/test/trace/crash-0.8.2-copyPixels-6.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-copyPixels-7.swf b/test/trace/crash-0.8.2-copyPixels-7.swf
new file mode 100644
index 0000000..c433c19
Binary files /dev/null and b/test/trace/crash-0.8.2-copyPixels-7.swf differ
diff --git a/test/trace/crash-0.8.2-copyPixels-7.swf.trace b/test/trace/crash-0.8.2-copyPixels-7.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-copyPixels-8.swf b/test/trace/crash-0.8.2-copyPixels-8.swf
new file mode 100644
index 0000000..a7fe074
Binary files /dev/null and b/test/trace/crash-0.8.2-copyPixels-8.swf differ
diff --git a/test/trace/crash-0.8.2-copyPixels-8.swf.trace b/test/trace/crash-0.8.2-copyPixels-8.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.8.2-copyPixels.as b/test/trace/crash-0.8.2-copyPixels.as
new file mode 100644
index 0000000..4e9b9fc
--- /dev/null
+++ b/test/trace/crash-0.8.2-copyPixels.as
@@ -0,0 +1,7 @@
+// makeswf -v 7 -s 200x150 -r 1 -o crash-0.8.2-copyPixels.swf crash-0.8.2-copyPixels.as
+
+bd = new flash.display.BitmapData (50, 50);
+bd.copyPixels (bd, {}, {}, null);
+bd.copyPixels (bd, {}, {}, bd, {}, null);
+
+getURL ("fscommand:quit", "");
commit e8174a647557dd575aad52c5de0227cc7b20ba1a
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Nov 12 21:07:41 2008 +0100
fix BitmapData.copyPixels crashers
diff --git a/swfdec/swfdec_bitmap_data.c b/swfdec/swfdec_bitmap_data.c
index 8245cff..4ef20b0 100644
--- a/swfdec/swfdec_bitmap_data.c
+++ b/swfdec/swfdec_bitmap_data.c
@@ -366,13 +366,25 @@ swfdec_rectangle_from_as_object (SwfdecRectangle *rect, SwfdecAsObject *object)
/* FIXME: This function is untested */
val = swfdec_as_object_peek_variable (object, SWFDEC_AS_STR_x);
- rect->x = swfdec_as_value_to_integer (cx, val);
+ if (val)
+ rect->x = swfdec_as_value_to_integer (cx, val);
+ else
+ rect->x = 0;
val = swfdec_as_object_peek_variable (object, SWFDEC_AS_STR_y);
- rect->y = swfdec_as_value_to_integer (cx, val);
+ if (val)
+ rect->y = swfdec_as_value_to_integer (cx, val);
+ else
+ rect->y = 0;
val = swfdec_as_object_peek_variable (object, SWFDEC_AS_STR_width);
- rect->width = swfdec_as_value_to_integer (cx, val);
+ if (val)
+ rect->width = swfdec_as_value_to_integer (cx, val);
+ else
+ rect->width = 0;
val = swfdec_as_object_peek_variable (object, SWFDEC_AS_STR_height);
- rect->height = swfdec_as_value_to_integer (cx, val);
+ if (val)
+ rect->height = swfdec_as_value_to_integer (cx, val);
+ else
+ rect->height = 0;
return rect->width > 0 && rect->height > 0;
}
@@ -395,19 +407,20 @@ swfdec_bitmap_data_copyPixels (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
SwfdecBitmapData *bitmap, *source, *alpha = NULL;
- SwfdecAsObject *recto, *pt, *apt = NULL;
+ SwfdecAsObject *recto = NULL, *pt, *apt = NULL, *so, *ao = NULL;
SwfdecRectangle rect;
gboolean copy_alpha = FALSE;
cairo_t *cr;
int x, y;
- SWFDEC_AS_CHECK (SWFDEC_TYPE_BITMAP_DATA, &bitmap, "ooo|OOb", &source, &recto, &pt,
- &alpha, &apt, ©_alpha);
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_BITMAP_DATA, &bitmap, "ooo|oob", &so, &recto, &pt,
+ &ao, &apt, ©_alpha);
if (bitmap->surface == NULL ||
- !SWFDEC_IS_BITMAP_DATA (source) ||
- source->surface == NULL ||
- (argc > 3 && (!SWFDEC_IS_BITMAP_DATA (alpha) || alpha->surface == NULL)) ||
+ !SWFDEC_IS_BITMAP_DATA (so) ||
+ (source = SWFDEC_BITMAP_DATA (so))->surface == NULL ||
+ (ao != NULL && (!SWFDEC_IS_BITMAP_DATA (ao) ||
+ (alpha = SWFDEC_BITMAP_DATA (ao))->surface == NULL)) ||
!swfdec_rectangle_from_as_object (&rect, recto))
return;
commit 0897270a8ce2327de66c0e20b4b42816377e5708
Author: Benjamin Otte <otte at gnome.org>
Date: Wed Nov 12 15:30:38 2008 +0100
use height as height, not width
diff --git a/swfdec/swfdec_bitmap_data.c b/swfdec/swfdec_bitmap_data.c
index a7b1728..8245cff 100644
--- a/swfdec/swfdec_bitmap_data.c
+++ b/swfdec/swfdec_bitmap_data.c
@@ -244,7 +244,7 @@ swfdec_bitmap_data_get_rectangle (SwfdecAsContext *cx, SwfdecAsObject *object,
SWFDEC_AS_VALUE_SET_INT (&args[0], 0);
SWFDEC_AS_VALUE_SET_INT (&args[1], 0);
SWFDEC_AS_VALUE_SET_INT (&args[2], cairo_image_surface_get_width (bitmap->surface));
- SWFDEC_AS_VALUE_SET_INT (&args[3], cairo_image_surface_get_width (bitmap->surface));
+ SWFDEC_AS_VALUE_SET_INT (&args[3], cairo_image_surface_get_height (bitmap->surface));
swfdec_as_object_create (SWFDEC_AS_FUNCTION (o), 4, args, ret);
}
More information about the Swfdec-commits
mailing list