emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r113903: (imagemagick_compute_animated_image): Allow


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] trunk r113903: (imagemagick_compute_animated_image): Allow certain degenerate images
Date: Thu, 15 Aug 2013 19:46:05 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113903
revision-id: address@hidden
parent: address@hidden
committer: Lars Magne Ingebrigtsen <address@hidden>
branch nick: trunk
timestamp: Thu 2013-08-15 21:46:02 +0200
message:
  (imagemagick_compute_animated_image): Allow certain degenerate images
  
  (imagemagick_compute_animated_image): Allow images that say they
  have sub-images that are bigger than the main image, but just crop
  them.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/image.c                    image.c-20091113204419-o5vbwnq5f7feedwu-2969
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-08-15 18:47:28 +0000
+++ b/src/ChangeLog     2013-08-15 19:46:02 +0000
@@ -4,6 +4,9 @@
        when sub-images are smaller than the main image.
        (imagemagick_compute_animated_image): Setting the iterator row to
        zero is apparently not allowed.
+       (imagemagick_compute_animated_image): Allow images that say they
+       have sub-images that are bigger than the main image, but just crop
+       them.
 
 2013-08-15  Jan Djärv  <address@hidden>
 

=== modified file 'src/image.c'
--- a/src/image.c       2013-08-15 18:47:28 +0000
+++ b/src/image.c       2013-08-15 19:46:02 +0000
@@ -7900,6 +7900,7 @@
       ssize_t source_left, source_top;
       MagickPixelPacket pixel;
       DisposeType dispose;
+      ptrdiff_t lines = 0;
 
       MagickSetIteratorIndex (super_wand, i);
       sub_wand = MagickGetImage (super_wand);
@@ -7907,17 +7908,6 @@
       MagickGetImagePage (sub_wand, &source_width, &source_height,
                          &source_left, &source_top);
 
-      /* Sanity check.  The sub-image should not be bigger than the
-        base image.  */
-      if (source_height + source_top > dest_height)
-       {
-         DestroyMagickWand (composite_wand);
-         DestroyMagickWand (sub_wand);
-         animation_cache = NULL;
-         image_error ("Inconsinstent animation size", Qnil, Qnil);
-         return NULL;
-       }
-
       dispose = MagickGetImageDispose (sub_wand);
 
       source_iterator = NewPixelIterator (sub_wand);
@@ -7946,17 +7936,26 @@
       /* The sub-image may not start at origo, so move the destination
         iterator to where the sub-image should start. */
       if (source_top > 0)
-       PixelSetIteratorRow (dest_iterator, source_top);
+       {
+         PixelSetIteratorRow (dest_iterator, source_top);
+         lines = source_top;
+       }
 
       while ((source = PixelGetNextIteratorRow (source_iterator, 
&source_width))
             != NULL)
        {
          ptrdiff_t x;
+
+         /* Sanity check.  This shouldn't happen, but apparently
+            does in some pictures.  */
+         if (++lines >= dest_height)
+           break;
+
          dest = PixelGetNextIteratorRow (dest_iterator, &dest_width);
          for (x = 0; x < source_width; x++)
            {
              /* Sanity check.  This shouldn't happen, but apparently
-                does in some pictures.  */
+                also does in some pictures.  */
              if (x + source_left > dest_width)
                break;
              /* Normally we only copy over non-transparent pixels,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]