From: Eli Zaretskii Date: Sat, 18 Apr 2020 09:57:08 +0000 (+0300) Subject: Don't abort when using GDI+ for images X-Git-Tag: emacs-28.0.90~7552 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=13210712a06a53031cfb82ec5dc0ab5f8e720668;p=emacs.git Don't abort when using GDI+ for images * src/w32image.c (decode_delay): Instead of aborting when the type of delay value is unrecognized, return an invalid negative value. --- diff --git a/src/w32image.c b/src/w32image.c index 95d8ddfe117..31c9b852ace 100644 --- a/src/w32image.c +++ b/src/w32image.c @@ -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