78d8421
diff -rupN magicpoint-1.13a/image/gif.c magicpoint-1.13a-new/image/gif.c
78d8421
--- magicpoint-1.13a/image/gif.c	2018-01-23 00:03:20.104053476 +0100
78d8421
+++ magicpoint-1.13a-new/image/gif.c	2018-02-11 23:45:01.983204432 +0100
78d8421
@@ -32,6 +32,14 @@ static int InterlacedOffset[] = { 0, 4,
78d8421
 /* be read - offsets and jumps... */
78d8421
 static int InterlacedJumps[] = { 8, 8, 4, 2 };
78d8421
 
78d8421
+static void printGifError(int errorCode)
78d8421
+{
78d8421
+	const char* giflib_error_str = (const char*) GifErrorString(errorCode);
78d8421
+	if (giflib_error_str == NULL)
78d8421
+		giflib_error_str = "Unknown error";
78d8421
+	fprintf(stderr, "GIFLIB: %s\n", giflib_error_str);
78d8421
+}
78d8421
+
78d8421
 Image *
78d8421
 gifLoad(fullname, name, verbose)
78d8421
 	char *fullname, *name;
78d8421
@@ -50,7 +58,7 @@ gifLoad(fullname, name, verbose)
78d8421
 	ColorMapObject *ColorMap;
78d8421
 	GifColorType *ColorMapEntry;
78d8421
 
78d8421
-	GifFile = DGifOpenFileName(fullname);
78d8421
+	GifFile = DGifOpenFileName(fullname, NULL);
78d8421
 	if (GifFile == NULL)
78d8421
 		return NULL;
78d8421
 
78d8421
@@ -87,13 +95,13 @@ gifLoad(fullname, name, verbose)
78d8421
 	/* Scan the content of the GIF file and load the image(s) in: */
78d8421
 	do {
78d8421
 		if (DGifGetRecordType(GifFile, &RecordType) == GIF_ERROR) {
78d8421
-			PrintGifError();
78d8421
+			printGifError(GifFile->Error);
78d8421
 			exit(-1);
78d8421
 		}
78d8421
 		switch (RecordType) {
78d8421
 		case IMAGE_DESC_RECORD_TYPE:
78d8421
 			if (DGifGetImageDesc(GifFile) == GIF_ERROR) {
78d8421
-				PrintGifError();
78d8421
+				printGifError(GifFile->Error);
78d8421
 				exit(-1);
78d8421
 			}
78d8421
 			Row = GifFile->Image.Top; /* Image Position relative to Screen. */
78d8421
@@ -113,7 +121,7 @@ gifLoad(fullname, name, verbose)
78d8421
 							     j += InterlacedJumps[i]) {
78d8421
 					if (DGifGetLine(GifFile, &ScreenBuffer[j][Col],
78d8421
 					    Width) == GIF_ERROR) {
78d8421
-					    PrintGifError();
78d8421
+					    printGifError(GifFile->Error);
78d8421
 					    exit(-1);
78d8421
 					}
78d8421
 				}
78d8421
@@ -122,7 +130,7 @@ gifLoad(fullname, name, verbose)
78d8421
 				for (i = 0; i < Height; i++) {
78d8421
 					if (DGifGetLine(GifFile, &ScreenBuffer[Row++][Col],
78d8421
 					    Width) == GIF_ERROR) {
78d8421
-						PrintGifError();
78d8421
+						printGifError(GifFile->Error);
78d8421
 						exit(-1);
78d8421
 					}
78d8421
 				}
78d8421
@@ -131,7 +139,7 @@ gifLoad(fullname, name, verbose)
78d8421
 		case EXTENSION_RECORD_TYPE:
78d8421
 			/* Skip any extension blocks in file: */
78d8421
 			if (DGifGetExtension(GifFile, &ExtCode, &Extension) == GIF_ERROR) {
78d8421
-				PrintGifError();
78d8421
+				printGifError(GifFile->Error);
78d8421
 				exit(-1);
78d8421
 			}
78d8421
 			/* very adhoc transparency support */
78d8421
@@ -141,7 +149,7 @@ gifLoad(fullname, name, verbose)
78d8421
 			}
78d8421
 			while (Extension != NULL) {
78d8421
 				if (DGifGetExtensionNext(GifFile, &Extension) == GIF_ERROR) {
78d8421
-					PrintGifError();
78d8421
+					printGifError(GifFile->Error);
78d8421
 					exit(-1);
78d8421
 				}
78d8421
 			}
78d8421
@@ -179,8 +187,8 @@ gifLoad(fullname, name, verbose)
78d8421
 			pixline[x] = GifRow[x];
78d8421
 	}
78d8421
 
78d8421
-	if (DGifCloseFile(GifFile) == GIF_ERROR) {
78d8421
-		PrintGifError();
78d8421
+	if (DGifCloseFile(GifFile, NULL) == GIF_ERROR) {
78d8421
+		printGifError(GifFile->Error);
78d8421
 		exit(-1);
78d8421
 	}
78d8421
 
78d8421
@@ -196,12 +204,12 @@ gifIdent(fullname, name)
78d8421
 	GifFileType *gifp;
78d8421
 	int ret;
78d8421
 
78d8421
-	gifp = DGifOpenFileName(fullname);
78d8421
+	gifp = DGifOpenFileName(fullname, NULL);
78d8421
 	if (gifp == NULL)
78d8421
 		ret = 0;
78d8421
 	else {
78d8421
 		tellAboutImage(name, gifp);
78d8421
-		DGifCloseFile(gifp);
78d8421
+		DGifCloseFile(gifp, NULL);
78d8421
 		ret = 1;
78d8421
 	}
78d8421
 	return ret;