From: cristy Date: Sat, 7 Apr 2012 15:08:14 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~5878 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b880ee80fc15868f8fbd99acfa30a68710615b72;p=imagemagick --- diff --git a/coders/miff.c b/coders/miff.c index 79d149ce4..67bcf4e3b 100644 --- a/coders/miff.c +++ b/coders/miff.c @@ -527,8 +527,11 @@ static Image *ReadMIFFImage(const ImageInfo *image_info, for (p=comment; comment != (char *) NULL; p++) { c=ReadBlobByte(image); - if ((c == EOF) || (c == (int) '}')) - break; + if (c == (int) '\\') + c=ReadBlobByte(image); + else + if ((c == EOF) || (c == (int) '}')) + break; if ((size_t) (p-comment+1) >= length) { *p='\0'; @@ -590,6 +593,15 @@ static Image *ReadMIFFImage(const ImageInfo *image_info, "MemoryAllocationFailed"); *p++=(char) c; c=ReadBlobByte(image); + if (c == '\\') + { + c=ReadBlobByte(image); + if (c == (int) '}') + { + *p++=(char) c; + c=ReadBlobByte(image); + } + } if (*options != '{') if (isspace((int) ((unsigned char) c)) != 0) break; @@ -2166,11 +2178,19 @@ static MagickBooleanType WriteMIFFImage(const ImageInfo *image_info, for (i=0; i < (ssize_t) strlen(value); i++) if (isspace((int) ((unsigned char) value[i])) != 0) break; - if (i < (ssize_t) strlen(value)) - (void) WriteBlobByte(image,'{'); - (void) WriteBlob(image,strlen(value),(const unsigned char *) value); - if (i < (ssize_t) strlen(value)) - (void) WriteBlobByte(image,'}'); + if (i == (ssize_t) strlen(value)) + (void) WriteBlob(image,strlen(value),(const unsigned char *) value); + else + { + (void) WriteBlobByte(image,'{'); + for (i=0; i < (ssize_t) strlen(value); i++) + { + if (value[i] == (int) '}') + (void) WriteBlobByte(image,'\\'); + (void) WriteBlobByte(image,value[i]); + } + (void) WriteBlobByte(image,'}'); + } } (void) WriteBlobByte(image,'\n'); property=GetNextImageProperty(image); diff --git a/coders/mpc.c b/coders/mpc.c index 310366e22..4046d3e4a 100644 --- a/coders/mpc.c +++ b/coders/mpc.c @@ -243,8 +243,11 @@ static Image *ReadMPCImage(const ImageInfo *image_info,ExceptionInfo *exception) for (p=comment; comment != (char *) NULL; p++) { c=ReadBlobByte(image); - if ((c == EOF) || (c == (int) '}')) - break; + if (c == (int) '\\') + c=ReadBlobByte(image); + else + if ((c == EOF) || (c == (int) '}')) + break; if ((size_t) (p-comment+1) >= length) { *p='\0'; @@ -306,6 +309,15 @@ static Image *ReadMPCImage(const ImageInfo *image_info,ExceptionInfo *exception) "MemoryAllocationFailed"); *p++=(char) c; c=ReadBlobByte(image); + if (c == '\\') + { + c=ReadBlobByte(image); + if (c == (int) '}') + { + *p++=(char) c; + c=ReadBlobByte(image); + } + } if (*options != '{') if (isspace((int) ((unsigned char) c)) != 0) break; @@ -1289,11 +1301,19 @@ static MagickBooleanType WriteMPCImage(const ImageInfo *image_info,Image *image, for (i=0; i < (ssize_t) strlen(value); i++) if (isspace((int) ((unsigned char) value[i])) != 0) break; - if (i < (ssize_t) strlen(value)) - (void) WriteBlobByte(image,'{'); - (void) WriteBlob(image,strlen(value),(unsigned char *) value); - if (i < (ssize_t) strlen(value)) - (void) WriteBlobByte(image,'}'); + if (i == (ssize_t) strlen(value)) + (void) WriteBlob(image,strlen(value),(const unsigned char *) value); + else + { + (void) WriteBlobByte(image,'{'); + for (i=0; i < (ssize_t) strlen(value); i++) + { + if (value[i] == (int) '}') + (void) WriteBlobByte(image,'\\'); + (void) WriteBlobByte(image,value[i]); + } + (void) WriteBlobByte(image,'}'); + } } (void) WriteBlobByte(image,'\n'); property=GetNextImageProperty(image);