From 0897270a8ce2327de66c0e20b4b42816377e5708 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 12 Nov 2008 15:30:38 +0100 Subject: use height as height, not width --- swfdec/swfdec_bitmap_data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swfdec/swfdec_bitmap_data.c b/swfdec/swfdec_bitmap_data.c index a7b17283..8245cff5 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); } -- cgit v1.2.3 From e8174a647557dd575aad52c5de0227cc7b20ba1a Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 12 Nov 2008 21:07:41 +0100 Subject: fix BitmapData.copyPixels crashers --- swfdec/swfdec_bitmap_data.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/swfdec/swfdec_bitmap_data.c b/swfdec/swfdec_bitmap_data.c index 8245cff5..4ef20b03 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; -- cgit v1.2.3 From 5195c41ab749afc8bdfaf1f2603281f23fc6a5d7 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 12 Nov 2008 21:17:53 +0100 Subject: add test for copyPixels crashers --- test/trace/Makefile.am | 9 +++++++++ test/trace/crash-0.8.2-copyPixels-5.swf | Bin 0 -> 175 bytes test/trace/crash-0.8.2-copyPixels-5.swf.trace | 0 test/trace/crash-0.8.2-copyPixels-6.swf | Bin 0 -> 175 bytes test/trace/crash-0.8.2-copyPixels-6.swf.trace | 0 test/trace/crash-0.8.2-copyPixels-7.swf | Bin 0 -> 175 bytes test/trace/crash-0.8.2-copyPixels-7.swf.trace | 0 test/trace/crash-0.8.2-copyPixels-8.swf | Bin 0 -> 178 bytes test/trace/crash-0.8.2-copyPixels-8.swf.trace | 0 test/trace/crash-0.8.2-copyPixels.as | 7 +++++++ 10 files changed, 16 insertions(+) create mode 100644 test/trace/crash-0.8.2-copyPixels-5.swf create mode 100644 test/trace/crash-0.8.2-copyPixels-5.swf.trace create mode 100644 test/trace/crash-0.8.2-copyPixels-6.swf create mode 100644 test/trace/crash-0.8.2-copyPixels-6.swf.trace create mode 100644 test/trace/crash-0.8.2-copyPixels-7.swf create mode 100644 test/trace/crash-0.8.2-copyPixels-7.swf.trace create mode 100644 test/trace/crash-0.8.2-copyPixels-8.swf create mode 100644 test/trace/crash-0.8.2-copyPixels-8.swf.trace create mode 100644 test/trace/crash-0.8.2-copyPixels.as diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index f9e289d5..8965fb22 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 00000000..442360d3 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 00000000..e69de29b 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 00000000..16ead005 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 00000000..e69de29b 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 00000000..c433c195 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 00000000..e69de29b 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 00000000..a7fe0741 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 00000000..e69de29b 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 00000000..4e9b9fcb --- /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", ""); -- cgit v1.2.3