GraphicsMagick: coders/bmp.c Use more aggresive image rewind alg...

GraphicsMagick Commits <[email protected]> Mon, 02 Oct 2023 12:36:38 -0500
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.5431.1696268212.1370.graphicsmagick-commit@lists.sourceforge.net>
changeset debb806be563 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=debb806be563
summary: coders/bmp.c Use more aggresive image rewind algorithm pasted from mat.c

diffstat:

 ChangeLog    |   2 ++
 coders/bmp.c |  31 +++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 0 deletions(-)

diffs (55 lines):

diff -r acad39861af2 -r debb806be563 ChangeLog
--- a/ChangeLog	Mon Oct 02 06:51:16 2023 +0200
+++ b/ChangeLog	Mon Oct 02 19:36:00 2023 +0200
@@ -2,6 +2,8 @@
 
 	* coders/bmp.c: Attempt to read BMP with 48bpp.
 
+	Use more aggresive image rewind algorithm pasted from mat.c
+
 2023-10-01  Fojtik Jaroslav  <[email protected]>
 
 	* coders/bmp.c: Fix BMP 64bpp reader. See this URL:
diff -r acad39861af2 -r debb806be563 coders/bmp.c
--- a/coders/bmp.c	Mon Oct 02 06:51:16 2023 +0200
+++ b/coders/bmp.c	Mon Oct 02 19:36:00 2023 +0200
@@ -1915,8 +1915,39 @@
         }
     } while (IsBMP(magick,2));
 ExitLoop:
+
+  {
+    Image *p;
+    long scene=0;
+
+    /*
+      Rewind list, removing any empty images while rewinding.
+    */
+    p=image;
+    image=NULL;
+    while (p != (Image *)NULL)
+      {
+        Image *tmp=p;
+        if ((p->rows == 0) || (p->columns == 0)) {
+          p=p->previous;
+          DeleteImageFromList(&tmp);
+        } else {
+          image=p;
+          p=p->previous;
+        }
+      }
+
+    /*
+      Fix scene numbers
+    */
+    for (p=image; p != (Image *) NULL; p=p->next)
+      p->scene=scene++;
+  }
+
+/*
   while (image->previous != (Image *) NULL)
     image=image->previous;
+*/
   CloseBlob(image);
   if (logging)
     (void) LogMagickEvent(CoderEvent,GetMagickModule(),"return");