From: cristy Date: Sun, 7 Jun 2015 13:41:56 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~935 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c381376ece1a1e59d83018f2c8caf78b36a89fda;p=imagemagick --- diff --git a/MagickCore/draw.c b/MagickCore/draw.c index 98154f703..e6b6de52b 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -253,8 +253,10 @@ MagickExport DrawInfo *CloneDrawInfo(const ImageInfo *image_info, if (draw_info == (DrawInfo *) NULL) return(clone_info); exception=AcquireExceptionInfo(); - (void) CloneString(&clone_info->primitive,draw_info->primitive); - (void) CloneString(&clone_info->geometry,draw_info->geometry); + if (clone_info->primitive != (char *) NULL) + (void) CloneString(&clone_info->primitive,draw_info->primitive); + if (draw_info->geometry != (char *) NULL) + (void) CloneString(&clone_info->geometry,draw_info->geometry); clone_info->viewbox=draw_info->viewbox; clone_info->affine=draw_info->affine; clone_info->gravity=draw_info->gravity; @@ -276,24 +278,31 @@ MagickExport DrawInfo *CloneDrawInfo(const ImageInfo *image_info, clone_info->dash_offset=draw_info->dash_offset; clone_info->decorate=draw_info->decorate; clone_info->compose=draw_info->compose; - (void) CloneString(&clone_info->text,draw_info->text); - (void) CloneString(&clone_info->font,draw_info->font); - (void) CloneString(&clone_info->metrics,draw_info->metrics); - (void) CloneString(&clone_info->family,draw_info->family); + if (draw_info->text != (char *) NULL) + (void) CloneString(&clone_info->text,draw_info->text); + if (draw_info->font != (char *) NULL) + (void) CloneString(&clone_info->font,draw_info->font); + if (draw_info->metrics != (char *) NULL) + (void) CloneString(&clone_info->metrics,draw_info->metrics); + if (draw_info->family != (char *) NULL) + (void) CloneString(&clone_info->family,draw_info->family); clone_info->style=draw_info->style; clone_info->stretch=draw_info->stretch; clone_info->weight=draw_info->weight; - (void) CloneString(&clone_info->encoding,draw_info->encoding); + if (draw_info->encoding != (char *) NULL) + (void) CloneString(&clone_info->encoding,draw_info->encoding); clone_info->pointsize=draw_info->pointsize; clone_info->kerning=draw_info->kerning; clone_info->interline_spacing=draw_info->interline_spacing; clone_info->interword_spacing=draw_info->interword_spacing; clone_info->direction=draw_info->direction; - (void) CloneString(&clone_info->density,draw_info->density); + if (draw_info->density != (char *) NULL) + (void) CloneString(&clone_info->density,draw_info->density); clone_info->align=draw_info->align; clone_info->undercolor=draw_info->undercolor; clone_info->border_color=draw_info->border_color; - (void) CloneString(&clone_info->server_name,draw_info->server_name); + if (draw_info->server_name != (char *) NULL) + (void) CloneString(&clone_info->server_name,draw_info->server_name); if (draw_info->dash_pattern != (double *) NULL) { register ssize_t @@ -324,7 +333,8 @@ MagickExport DrawInfo *CloneDrawInfo(const ImageInfo *image_info, draw_info->gradient.stops,(size_t) number_stops* sizeof(*clone_info->gradient.stops)); } - (void) CloneString(&clone_info->clip_mask,draw_info->clip_mask); + if (draw_info->clip_mask != (char *) NULL) + (void) CloneString(&clone_info->clip_mask,draw_info->clip_mask); clone_info->bounds=draw_info->bounds; clone_info->clip_units=draw_info->clip_units; clone_info->render=draw_info->render; @@ -4770,12 +4780,16 @@ MagickExport void GetDrawInfo(const ImageInfo *image_info,DrawInfo *draw_info) ExceptionInfo *exception; + ImageInfo + *clone_info; + /* Initialize draw attributes. */ (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); assert(draw_info != (DrawInfo *) NULL); (void) ResetMagickMemory(draw_info,0,sizeof(*draw_info)); + clone_info=CloneImageInfo(image_info); GetAffineMatrix(&draw_info->affine); exception=AcquireExceptionInfo(); (void) QueryColorCompliance("#000F",AllCompliance,&draw_info->fill, @@ -4794,59 +4808,57 @@ MagickExport void GetDrawInfo(const ImageInfo *image_info,DrawInfo *draw_info) draw_info->compose=OverCompositeOp; draw_info->render=MagickTrue; draw_info->debug=IsEventLogging(); - if (image_info != (ImageInfo *) NULL) - { - draw_info->stroke_antialias=image_info->antialias; - if (image_info->font != (char *) NULL) - draw_info->font=AcquireString(image_info->font); - if (image_info->density != (char *) NULL) - draw_info->density=AcquireString(image_info->density); - draw_info->text_antialias=image_info->antialias; - if (image_info->pointsize != 0.0) - draw_info->pointsize=image_info->pointsize; - draw_info->border_color=image_info->border_color; - if (image_info->server_name != (char *) NULL) - draw_info->server_name=AcquireString(image_info->server_name); - option=GetImageOption(image_info,"encoding"); - if (option != (const char *) NULL) - (void) CloneString(&draw_info->encoding,option); - option=GetImageOption(image_info,"kerning"); - if (option != (const char *) NULL) - draw_info->kerning=StringToDouble(option,(char **) NULL); - option=GetImageOption(image_info,"interline-spacing"); - if (option != (const char *) NULL) - draw_info->interline_spacing=StringToDouble(option,(char **) NULL); - option=GetImageOption(image_info,"interword-spacing"); - if (option != (const char *) NULL) - draw_info->interword_spacing=StringToDouble(option,(char **) NULL); - option=GetImageOption(image_info,"direction"); - if (option != (const char *) NULL) - draw_info->direction=(DirectionType) ParseCommandOption( - MagickDirectionOptions,MagickFalse,option); - else - draw_info->direction=UndefinedDirection; - option=GetImageOption(image_info,"fill"); - if (option != (const char *) NULL) - (void) QueryColorCompliance(option,AllCompliance,&draw_info->fill, - exception); - option=GetImageOption(image_info,"stroke"); - if (option != (const char *) NULL) - (void) QueryColorCompliance(option,AllCompliance,&draw_info->stroke, - exception); - option=GetImageOption(image_info,"strokewidth"); - if (option != (const char *) NULL) - draw_info->stroke_width=StringToDouble(option,(char **) NULL); - option=GetImageOption(image_info,"undercolor"); - if (option != (const char *) NULL) - (void) QueryColorCompliance(option,AllCompliance,&draw_info->undercolor, - exception); - option=GetImageOption(image_info,"gravity"); - if (option != (const char *) NULL) - draw_info->gravity=(GravityType) ParseCommandOption( - MagickGravityOptions,MagickFalse,option); - } + draw_info->stroke_antialias=clone_info->antialias; + if (clone_info->font != (char *) NULL) + draw_info->font=AcquireString(clone_info->font); + if (clone_info->density != (char *) NULL) + draw_info->density=AcquireString(clone_info->density); + draw_info->text_antialias=clone_info->antialias; + if (clone_info->pointsize != 0.0) + draw_info->pointsize=clone_info->pointsize; + draw_info->border_color=clone_info->border_color; + if (clone_info->server_name != (char *) NULL) + draw_info->server_name=AcquireString(clone_info->server_name); + option=GetImageOption(clone_info,"encoding"); + if (option != (const char *) NULL) + (void) CloneString(&draw_info->encoding,option); + option=GetImageOption(clone_info,"kerning"); + if (option != (const char *) NULL) + draw_info->kerning=StringToDouble(option,(char **) NULL); + option=GetImageOption(clone_info,"interline-spacing"); + if (option != (const char *) NULL) + draw_info->interline_spacing=StringToDouble(option,(char **) NULL); + option=GetImageOption(clone_info,"interword-spacing"); + if (option != (const char *) NULL) + draw_info->interword_spacing=StringToDouble(option,(char **) NULL); + option=GetImageOption(clone_info,"direction"); + if (option != (const char *) NULL) + draw_info->direction=(DirectionType) ParseCommandOption( + MagickDirectionOptions,MagickFalse,option); + else + draw_info->direction=UndefinedDirection; + option=GetImageOption(clone_info,"fill"); + if (option != (const char *) NULL) + (void) QueryColorCompliance(option,AllCompliance,&draw_info->fill, + exception); + option=GetImageOption(clone_info,"stroke"); + if (option != (const char *) NULL) + (void) QueryColorCompliance(option,AllCompliance,&draw_info->stroke, + exception); + option=GetImageOption(clone_info,"strokewidth"); + if (option != (const char *) NULL) + draw_info->stroke_width=StringToDouble(option,(char **) NULL); + option=GetImageOption(clone_info,"undercolor"); + if (option != (const char *) NULL) + (void) QueryColorCompliance(option,AllCompliance,&draw_info->undercolor, + exception); + option=GetImageOption(clone_info,"gravity"); + if (option != (const char *) NULL) + draw_info->gravity=(GravityType) ParseCommandOption(MagickGravityOptions, + MagickFalse,option); exception=DestroyExceptionInfo(exception); draw_info->signature=MagickSignature; + clone_info=DestroyImageInfo(clone_info); } /*