diff options
Diffstat (limited to 'coders/msl.c')
-rw-r--r-- | coders/msl.c | 192 |
1 files changed, 69 insertions, 123 deletions
diff --git a/coders/msl.c b/coders/msl.c index 68abd7d18..c6acb7ddb 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -579,12 +579,8 @@ static void MSLPushImage(MSLInfo *msl_info,Image *image) msl_info->image_info[n]=CloneImageInfo(msl_info->image_info[n-1]); msl_info->draw_info[n]=CloneDrawInfo(msl_info->image_info[n-1], msl_info->draw_info[n-1]); - if (image == (Image *) NULL) - msl_info->attributes[n]=AcquireImage(msl_info->image_info[n], - msl_info->exception); - else - msl_info->attributes[n]=CloneImage(image,0,0,MagickTrue, - msl_info->exception); + msl_info->attributes[n]=CloneImage(msl_info->attributes[n-1],0,0,MagickTrue, + msl_info->exception); msl_info->image[n]=(Image *) image; if ((msl_info->image_info[n] == (ImageInfo *) NULL) || (msl_info->attributes[n] == (Image *) NULL)) @@ -708,8 +704,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -789,8 +784,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1121,8 +1115,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1185,8 +1178,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1283,8 +1275,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1406,8 +1397,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1546,8 +1536,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1657,8 +1646,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1788,8 +1776,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -1843,8 +1830,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2133,8 +2119,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2188,8 +2173,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2291,8 +2275,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2344,8 +2327,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -2371,8 +2353,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2413,8 +2394,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2771,8 +2751,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2838,8 +2817,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -2918,8 +2896,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -2948,8 +2925,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3015,8 +2991,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -3048,8 +3023,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -3086,8 +3060,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3241,8 +3214,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3463,8 +3435,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3608,8 +3579,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -3649,8 +3619,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3738,8 +3707,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3869,8 +3837,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -3938,8 +3905,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -3976,8 +3942,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4104,8 +4069,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4173,8 +4137,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4231,8 +4194,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4304,8 +4266,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4372,8 +4333,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4424,8 +4384,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); if (*keyword == '!') @@ -4526,8 +4485,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -4635,8 +4593,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5007,8 +4964,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5144,8 +5100,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5446,8 +5401,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5542,8 +5496,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5703,8 +5656,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5833,8 +5785,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5911,8 +5862,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -5996,8 +5946,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6255,8 +6204,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6346,8 +6294,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6611,8 +6558,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6701,8 +6647,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6735,8 +6680,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6797,8 +6741,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -6998,8 +6941,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -7031,8 +6973,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -7096,8 +7037,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -7161,8 +7101,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -7203,8 +7142,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i], - exception); + msl_info->attributes[n],(const char *) attributes[i],exception); CloneString(&value,attribute); attribute=DestroyString(attribute); switch (*keyword) @@ -7580,6 +7518,10 @@ static void MSLReference(void *context,const xmlChar *name) " SAX.reference(%s)",name); msl_info=(MSLInfo *) context; parser=msl_info->parser; + if (parser == (xmlParserCtxtPtr) NULL) + return; + if (parser->node == (xmlNodePtr) NULL) + return; if (*name == '#') (void) xmlAddChild(parser->node,xmlNewCharRef(msl_info->document,name)); else @@ -7866,6 +7808,7 @@ static MagickBooleanType ProcessMSLScript(const ImageInfo *image_info, *msl_info.image_info=CloneImageInfo(image_info); *msl_info.draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL); *msl_info.attributes=AcquireImage(image_info,exception); + (void) SetImageExtent(*msl_info.attributes,1,1,exception); msl_info.group_info[0].numImages=0; /* the first slot is used to point to the MSL file image */ *msl_info.image=msl_image; @@ -7921,15 +7864,18 @@ static MagickBooleanType ProcessMSLScript(const ImageInfo *image_info, /* Free resources. */ + MSLEndDocument(&msl_info); if (msl_info.parser->myDoc != (xmlDocPtr) NULL) xmlFreeDoc(msl_info.parser->myDoc); xmlFreeParserCtxt(msl_info.parser); + xmlFreeDoc(msl_info.document); (void) LogMagickEvent(CoderEvent,GetMagickModule(),"end SAX"); if (*image == (Image *) NULL) *image=CloneImage(*msl_info.image,0,0,MagickTrue,exception); while (msl_info.n >= 0) { - msl_info.image[msl_info.n]=DestroyImage(msl_info.image[msl_info.n]); + if (msl_info.image[msl_info.n] != (Image *) NULL) + msl_info.image[msl_info.n]=DestroyImage(msl_info.image[msl_info.n]); msl_info.attributes[msl_info.n]=DestroyImage( msl_info.attributes[msl_info.n]); msl_info.draw_info[msl_info.n]=DestroyDrawInfo( |