]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't abort when using GDI+ for images
authorEli Zaretskii <eliz@gnu.org>
Sat, 18 Apr 2020 09:57:08 +0000 (12:57 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 18 Apr 2020 09:57:08 +0000 (12:57 +0300)
* src/w32image.c (decode_delay): Instead of aborting when the
type of delay value is unrecognized, return an invalid negative
value.

src/w32image.c

index 95d8ddfe117fe9632da0b12a73cb711d72f073e6..31c9b852acea150ae182045553b5e56f24065edc 100644 (file)
@@ -214,30 +214,37 @@ enum PropertyItem_type {
   PI_LONG_PAIR = 10
 };
 
-static unsigned long
+static double
 decode_delay (PropertyItem *propertyItem, int frame)
 {
   enum PropertyItem_type type = propertyItem[0].type;
-  unsigned long delay;
+  unsigned long udelay;
+  double retval;
 
   switch (type)
     {
     case PI_BYTE:
     case PI_BYTE_ANY:
-      delay = ((unsigned char *)propertyItem[0].value)[frame];
+      udelay = ((unsigned char *)propertyItem[0].value)[frame];
+      retval = udelay;
       break;
     case PI_USHORT:
-      delay = ((unsigned short *)propertyItem[0].value)[frame];
+      udelay = ((unsigned short *)propertyItem[0].value)[frame];
+      retval = udelay;
       break;
     case PI_ULONG:
     case PI_LONG:      /* delay should always be positive */
-      delay = ((unsigned long *)propertyItem[0].value)[frame];
+      udelay = ((unsigned long *)propertyItem[0].value)[frame];
+      retval = udelay;
       break;
     default:
-      emacs_abort ();
+      /* This negative value will cause the caller to disregard the
+        delay if we cannot determine it reliably.  */
+      add_to_log ("Invalid or unknown propertyItem type in w32image.c");
+      retval = -1.0;
     }
 
-  return delay;
+  return retval;
 }
 
 static double