From: cristy Date: Wed, 25 Jun 2014 13:13:33 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2201 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=53b6cc3279b088db1dd69119e48be558eb5bc02a;p=imagemagick --- diff --git a/MagickCore/option.c b/MagickCore/option.c index 0bbf724c0..3e2729513 100644 --- a/MagickCore/option.c +++ b/MagickCore/option.c @@ -2390,7 +2390,6 @@ MagickExport const char *CommandOptionToMnemonic(const CommandOption option, % % o options: one or more options separated by commas. % -% */ MagickPrivate MagickBooleanType IsOptionMember(const char *option, const char *options) @@ -2402,27 +2401,40 @@ MagickPrivate MagickBooleanType IsOptionMember(const char *option, int number_options; + MagickBooleanType + member; + register ssize_t i; /* Is option a member of the options list? */ + if (options == (const char *) NULL) + return(MagickFalse); string=ConstantString(options); (void) SubstituteString(&string,","," "); option_list=StringToArgv(string,&number_options); string=DestroyString(string); if (option_list == (char **) NULL) return(MagickFalse); + member=MagickFalse; for (i=1; i < (ssize_t) number_options; i++) { if ((*option_list[i] == '!') && (LocaleCompare(option,option_list[i]+1) == 0)) - return(MagickFalse); + break; if (GlobExpression(option,option_list[i],MagickTrue) != MagickFalse) - return(MagickTrue); + { + member=MagickTrue; + break; + } + option_list[i]=DestroyString(option_list[i]); } - return(MagickFalse); + for ( ; i < (ssize_t) number_options; i++) + option_list[i]=DestroyString(option_list[i]); + option_list=(char **) RelinquishMagickMemory(option_list); + return(member); } /* diff --git a/MagickCore/profile.c b/MagickCore/profile.c index 2a2d0c7bc..37b673fcb 100644 --- a/MagickCore/profile.c +++ b/MagickCore/profile.c @@ -53,6 +53,7 @@ #include "MagickCore/monitor.h" #include "MagickCore/monitor-private.h" #include "MagickCore/option.h" +#include "MagickCore/optioni-private.h" #include "MagickCore/pixel-accessor.h" #include "MagickCore/profile.h" #include "MagickCore/profile-private.h" @@ -518,43 +519,21 @@ MagickExport MagickBooleanType ProfileImage(Image *image,const char *name, if ((datum == (const void *) NULL) || (length == 0)) { char - **arguments, - *names; - - int - number_arguments; - - register ssize_t - i; + *next; /* Delete image profile(s). */ - names=ConstantString(name); - (void) SubstituteString(&names,","," "); - arguments=StringToArgv(names,&number_arguments); - names=DestroyString(names); - if (arguments == (char **) NULL) - return(MagickTrue); ResetImageProfileIterator(image); - for (name=GetNextImageProfile(image); name != (const char *) NULL; ) + for (next=GetNextImageProfile(image); next != (const char *) NULL; ) { - for (i=1; i < (ssize_t) number_arguments; i++) - { - if ((*arguments[i] == '!') && - (LocaleCompare(name,arguments[i]+1) == 0)) - break; - if (GlobExpression(name,arguments[i],MagickTrue) != MagickFalse) - { - (void) DeleteImageProfile(image,name); - break; - } - } - name=GetNextImageProfile(image); + if (IsOptionMember(next,name) != MagickFalse) + { + (void) DeleteImageProfile(image,name); + ResetImageProfileIterator(image); + } + name=GetNextImageProfile(image); } - for (i=0; i < (ssize_t) number_arguments; i++) - arguments[i]=DestroyString(arguments[i]); - arguments=(char **) RelinquishMagickMemory(arguments); return(MagickTrue); } /* diff --git a/coders/jpeg.c b/coders/jpeg.c index 1df97d4e4..6505c5e41 100644 --- a/coders/jpeg.c +++ b/coders/jpeg.c @@ -70,6 +70,7 @@ #include "MagickCore/monitor.h" #include "MagickCore/monitor-private.h" #include "MagickCore/option.h" +#include "MagickCore/option-private.h" #include "MagickCore/pixel-accessor.h" #include "MagickCore/profile.h" #include "MagickCore/property.h" @@ -1094,16 +1095,13 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, JPEGSourceManager(&jpeg_info,image); jpeg_set_marker_processor(&jpeg_info,JPEG_COM,ReadComment); option=GetImageOption(image_info,"jpeg:skip-profile"); - if ((option == (const char *) NULL) || - (GlobExpression("ICC",option,MagickTrue) == MagickFalse)) + if (IsOptionMember("ICC",option) == MagickFalse) jpeg_set_marker_processor(&jpeg_info,ICC_MARKER,ReadICCProfile); - if ((option == (const char *) NULL) || - (GlobExpression("IPTC",option,MagickTrue) == MagickFalse)) + if (IsOptionMember("IPTC",option) == MagickFalse) jpeg_set_marker_processor(&jpeg_info,IPTC_MARKER,ReadIPTCProfile); for (i=1; i < 16; i++) if ((i != 2) && (i != 13) && (i != 14)) - if ((option == (const char *) NULL) || - (GlobExpression("APP",option,MagickTrue) == MagickFalse)) + if (IsOptionMember("APP",option) == MagickFalse) jpeg_set_marker_processor(&jpeg_info,(int) (JPEG_APP0+i),ReadProfile); i=(ssize_t) jpeg_read_header(&jpeg_info,TRUE); if ((image_info->colorspace == YCbCrColorspace) ||