]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 26 May 2014 17:49:54 +0000 (17:49 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 26 May 2014 17:49:54 +0000 (17:49 +0000)
22 files changed:
MagickCore/attribute.c
MagickCore/blob.c
MagickCore/cache.c
MagickCore/compare.c
MagickCore/distribute-cache.c
MagickCore/draw.c
MagickCore/effect.c
MagickCore/enhance.c
MagickCore/morphology.c
MagickCore/pixel.c
MagickCore/property.c
MagickCore/quantize.c
MagickCore/xml-tree.c
MagickWand/composite.c
MagickWand/convert.c
MagickWand/pixel-wand.c
coders/cals.c
coders/jp2.c
coders/label.c
coders/psd.c
coders/pwp.c
coders/wpg.c

index 8c4276800206c11378ef4fb4f7884bd7cf0d1080..f443503b131a88698e4459edfe4ffa13165495a9 100644 (file)
@@ -164,12 +164,12 @@ MagickExport RectangleInfo GetImageBoundingBox(const Image *image,
   GetPixelInfo(image,&target[1]);
   p=GetCacheViewVirtualPixels(image_view,(ssize_t) image->columns-1,0,1,1,
     exception);
-  if (p == (const Quantum *) NULL)
+  if (p != (const Quantum *) NULL)
     GetPixelInfoPixel(image,p,&target[1]);
   GetPixelInfo(image,&target[2]);
   p=GetCacheViewVirtualPixels(image_view,0,(ssize_t) image->rows-1,1,1,
     exception);
-  if (p == (const Quantum *) NULL)
+  if (p != (const Quantum *) NULL)
     GetPixelInfoPixel(image,p,&target[2]);
   status=MagickTrue;
   GetPixelInfo(image,&zero);
index 59e4cf1757395c20948b05f095ab6bf5b2a57420..6fcc154a9e4bcf1127a10c505bf93cb4f5641153 100644 (file)
@@ -3830,7 +3830,7 @@ MagickPrivate MagickBooleanType SetBlobExtent(Image *image,
                 status;
 
               file=fileno(image->blob->file_info.file);
-              if (file == -1)
+              if ((file == -1) || (offset < 0))
                 return(MagickFalse);
               status=posix_fallocate(file,offset,extent-offset);
               if (status != 0)
index e355b2718dbd37768aa8465c33e75e7b7214b3b3..9a7d559d6459ea49a4ddd9095d81a8fb1bec1ef9 100644 (file)
@@ -690,7 +690,8 @@ static MagickBooleanType ClonePixelCacheRepository(
           clone_nexus[id],exception);
         if (pixels == (Quantum *) NULL)
           continue;
-        if (clone_nexus[id]->metacontent != (void *) NULL)
+        if ((clone_nexus[id]->metacontent != (void *) NULL) &&
+            (cache_nexus[id]->metacontent != (void *) NULL))
           (void) memcpy(clone_nexus[id]->metacontent,
             cache_nexus[id]->metacontent,length*
             sizeof(cache_nexus[id]->metacontent));
index ae8f5eadc450db1f097dc00b58b6594eada2c253..444ce0539ec7edc98ba45b1201ad3378d9cb1015 100644 (file)
@@ -453,7 +453,7 @@ static size_t GetImageChannels(const Image *image)
     if ((traits & UpdatePixelTrait) != 0)
       channels++;
   }
-  return(channels);
+  return(channels == 0 ? 1 : channels);
 }
 
 static MagickBooleanType GetFuzzDistortion(const Image *image,
index 36a0ac44454da74327cb7b265b2ab43964a462ab..a7d73b8ddbd6f3a7168fd9e5b5a4167de567a859 100644 (file)
@@ -207,7 +207,6 @@ static int ConnectPixelCacheServer(const char *hostname,const int port,
     result->ai_protocol);
   if (client_socket == -1)
     {
-      (void) close(client_socket);
       (void) ThrowMagickException(exception,GetMagickModule(),CacheError,
         "DistributedPixelCache","'%s'",hostname);
       return(-1);
@@ -215,6 +214,7 @@ static int ConnectPixelCacheServer(const char *hostname,const int port,
   status=connect(client_socket,result->ai_addr,result->ai_addrlen);
   if (status == -1)
     {
+      (void) close(client_socket);
       (void) ThrowMagickException(exception,GetMagickModule(),CacheError,
         "DistributedPixelCache","'%s'",hostname);
       return(-1);
index cb33e7a59e70b7c185f3c56816eb0a70f629c0ba..b45ce938c85e767a3cca4db5ee655481f5a5ed3b 100644 (file)
@@ -4348,6 +4348,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
 
           (void) GetOneCacheViewVirtualPixelInfo(image_view,x,y,&target,
             exception);
+          GetPixelInfo(image,&pixel);
           for (y=0; y < (ssize_t) image->rows; y++)
           {
             register Quantum
index c406f3d2ab06bdc5c39b6fab73d35315109bc65f..6ddbf0c68df11c955a523b2737401f8fe4dc4315 100644 (file)
@@ -1998,12 +1998,12 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview,
             (void) CopyMagickString(factor,"impulse",MaxTextExtent);
             break;
           }
-          case 4:
+          case 5:
           {
             (void) CopyMagickString(factor,"laplacian",MaxTextExtent);
             break;
           }
-          case 5:
+          case 6:
           {
             (void) CopyMagickString(factor,"Poisson",MaxTextExtent);
             break;
index 19108a48ce2445d8b3b16367b8630c2c930a4cf6..4069ce74737650b66551de57cbf71632fec04251 100644 (file)
@@ -2696,7 +2696,7 @@ MagickExport MagickBooleanType LevelImageColors(Image *image,
       (IfMagickFalse(IsGrayColorspace(black_color->colorspace)) ||
        IfMagickFalse(IsGrayColorspace(white_color->colorspace))))
     (void) SetImageColorspace(image,sRGBColorspace,exception);
-  status=MagickFalse;
+  status=MagickTrue;
   if( IfMagickFalse(invert) )
     {
       if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
index 927a7222528d6b5969b0d44b9ee988f81cd40b30..c8859fcda8454a7c7fbc306797578b514d30ea5b 100644 (file)
@@ -2740,7 +2740,9 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
                 }
                 if (fabs(pixel-p[center+i]) > MagickEpsilon)
                   changes[id]++;
-                gamma=(double) kernel->height*kernel->width/count;
+                gamma=1.0;
+                if (count != 0)
+                  gamma=(double) kernel->height*kernel->width/count;
                 SetPixelChannel(morphology_image,channel,ClampToQuantum(gamma*
                   pixel),q);
                 continue;
index fbf27e31d28cb584945c093aeff0390ccc994a7a..14d2523a11fb77e97883595032d3e2ef56e7789f 100644 (file)
@@ -2112,6 +2112,8 @@ MagickExport void GetPixelInfo(const Image *image,PixelInfo *pixel)
   pixel->black=0.0;
   pixel->alpha=(double) OpaqueAlpha;
   pixel->index=0.0;
+  pixel->count=0;
+  pixel->fuzz=0.0;
   if (image == (const Image *) NULL)
     return;
   pixel->storage_class=image->storage_class;
index ad51c6bc99881662140daa2427a4f5acef82d28b..ee9eba5dc3276df4deb0ed9ab9f2a9c4f5a74e06 100644 (file)
@@ -3366,7 +3366,7 @@ MagickExport char *InterpretImageProperties(ImageInfo *image_info,
     */
     {
       char
-        pattern[MaxTextExtent];
+        pattern[2*MaxTextExtent];
 
       const char
         *key,
@@ -3382,8 +3382,8 @@ MagickExport char *InterpretImageProperties(ImageInfo *image_info,
       p++;  /* advance p to just inside the opening brace */
       depth=1;
       if ( *p == ']' ) {
-        (void) ThrowMagickException(exception,GetMagickModule(),
-            OptionWarning,"UnknownImageProperty","\"%%[]\"");
+        (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning,
+          "UnknownImageProperty","\"%%[]\"");
         break;
       }
       for (len=0; len<(MaxTextExtent-1L) && (*p != '\0');)
index d5be1b3781198747b34dae6c8c96e45fbcab4e3a..e004e1e7c6a01bcad7ef63ca88ddf42bf682d69d 100644 (file)
@@ -533,8 +533,7 @@ static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info,
   /*
     Create a reduced color image.
   */
-  if ((cube_info->quantize_info->dither_method != NoDitherMethod) &&
-      (cube_info->quantize_info->dither_method != NoDitherMethod))
+  if (cube_info->quantize_info->dither_method != NoDitherMethod)
     (void) DitherImage(image,cube_info,exception);
   else
     {
index 5961189380f40f59561dd6d43090293737ebf957..a8b354e0d5a3e936f35b05c06e1515f083ee258c 100644 (file)
@@ -1496,7 +1496,8 @@ static char *ParseEntities(char *xml,char **entities,int state)
                 */
                 length=strlen(entities[i]);
                 entity=strchr(xml,';');
-                if ((length-1L) >= (size_t) (entity-xml))
+                if ((entity != (char *) NULL) &&
+                    ((length-1L) >= (size_t) (entity-xml)))
                   {
                     offset=(ssize_t) (xml-p);
                     extent=(size_t) (offset+length+strlen(entity));
index 0e9e4ad38617407a8ddc6c5a92879e067018f0cc..93bd1cf167e2190ae63af986e7e8a6ec161e9c31 100644 (file)
@@ -111,9 +111,6 @@ static MagickBooleanType CompositeImageList(ImageInfo *image_info,Image **image,
   Image *composite_image,CompositeOptions *composite_options,
   ExceptionInfo *exception)
 {
-  ChannelType
-    channel_mask;
-
   MagickStatusType
     status;
 
@@ -125,9 +122,13 @@ static MagickBooleanType CompositeImageList(ImageInfo *image_info,Image **image,
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*image)->filename);
   assert(exception != (ExceptionInfo *) NULL);
   status=MagickTrue;
-  channel_mask=SetImageChannelMask(composite_image,composite_options->channel);
   if (composite_image != (Image *) NULL)
     {
+      ChannelType
+        channel_mask;
+
+      channel_mask=SetImageChannelMask(composite_image,
+        composite_options->channel);
       assert(composite_image->signature == MagickSignature);
       switch (composite_options->compose)
       {
@@ -219,8 +220,8 @@ static MagickBooleanType CompositeImageList(ImageInfo *image_info,Image **image,
                 composite_options->compose,MagickTrue,geometry.x,geometry.y,
                 exception);
             }
+      (void) SetPixelChannelMask(composite_image,channel_mask);
     }
-  (void) SetPixelChannelMask(composite_image,channel_mask);
   return(status != 0 ? MagickTrue : MagickFalse);
 }
 
index e6f1c0baec4904fd34bc2282e1bd8666447312e7..2b68879750965a7d3f5020b123066c16fb4669cf 100644 (file)
@@ -122,7 +122,10 @@ static MagickBooleanType ConcatenateImages(int argc,char **argv,
   {
     input=fopen_utf8(argv[i],"rb");
     if (input == (FILE *) NULL)
-      ThrowFileException(exception,FileOpenError,"UnableToOpenFile",argv[i]);
+      {
+        ThrowFileException(exception,FileOpenError,"UnableToOpenFile",argv[i]);
+        continue;
+      }
     for (c=fgetc(input); c != EOF; c=fgetc(input))
       (void) fputc((char) c,output);
     (void) fclose(input);
index f1fdd45400b5c5fa8232a85bf962f51938b70dfe..cdb42733bc18dba043f29ba2d4b203d50497120e 100644 (file)
@@ -1263,6 +1263,7 @@ WandExport void PixelGetQuantumPacket(const PixelWand *wand,PixelInfo *packet)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   assert(packet != (PixelInfo *) NULL);
   packet->alpha=(double) ClampToQuantum(wand->pixel.alpha);
+  packet->alpha_trait=wand->pixel.alpha_trait;
   if (wand->pixel.colorspace == CMYKColorspace)
     {
       packet->red=(double) ClampToQuantum(QuantumRange-
index c4e7dd5bd044411835dd45d187a2a9c2dba93e48..b42734eb0a186282971006566c077d74fcf33c18 100644 (file)
@@ -534,12 +534,13 @@ static MagickBooleanType WriteCALSImage(const ImageInfo *image_info,
     default:
     {
       orient_y=270;
+      break;
     }
   }
-  (void) FormatLocaleString(header,MaxTextExtent,"rorient: %03ld,%03ld",
+  (void) FormatLocaleString(header,sizeof(header),"rorient: %03ld,%03ld",
     (long) orient_x,(long) orient_y);
   count=WriteCALSRecord(image,header);
-  (void) FormatLocaleString(header,MaxTextExtent,"rpelcnt: %06lu,%06lu",
+  (void) FormatLocaleString(header,sizeof(header),"rpelcnt: %06lu,%06lu",
     (unsigned long) image->columns,(unsigned long) image->rows);
   count=WriteCALSRecord(image,header);  
   density=200;
@@ -551,7 +552,7 @@ static MagickBooleanType WriteCALSImage(const ImageInfo *image_info,
       (void) ParseGeometry(image_info->density,&geometry_info);
       density=(size_t) floor(geometry_info.rho+0.5);
     }
-  (void) FormatLocaleString(header,MaxTextExtent,"rdensty: %04lu",
+  (void) FormatLocaleString(header,sizeof(header),"rdensty: %04lu",
     (unsigned long) density);
   count=WriteCALSRecord(image,header);
   count=WriteCALSRecord(image,"notes: NONE");
index d00bd979290acc49c052bbd368ef512dbda4067d..22a7d0929628cb5a03bd0157c2dcb41ae1e44bb8 100644 (file)
@@ -877,7 +877,7 @@ static MagickBooleanType WriteJP2Image(const ImageInfo *image_info,Image *image,
       p=option;
       for (i=0; sscanf(p,"%f",&parameters.tcp_rates[i]) == 1; i++)
       {
-        if (i > 100)
+        if (i >= 100)
           break;
         while ((*p != '\0') && (*p != ','))
           p++;
index 49357789d627a9828cb8f481e9cd3828b90df678..0e2162e8e556ae29da5977caec20f98e358ff9e4 100644 (file)
@@ -131,6 +131,7 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
   label=GetImageProperty(image,"label",exception);
   draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);
   draw_info->text=ConstantString(label);
+  metrics.width=0;
   status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
   if ((image->columns == 0) && (image->rows == 0))
     {
index 9c3946d267778a7768cba0b45388469fe6644c1e..0e5ddf7c001b0cf0fe7d6c742a65c539d58a0387 100644 (file)
@@ -1188,7 +1188,7 @@ static MagickStatusType ReadPSDLayers(Image *image,const ImageInfo *image_info,
       count=ReadBlob(image,4,(unsigned char *) type);
       if ((count == 0) || (LocaleNCompare(type,"8BIM",4) != 0))
         {
-          if (DiscardBlobBytes(image,size-(ssize_t) quantum-8) == MagickFalse)
+          if (DiscardBlobBytes(image,(MagickSizeType) size-quantum-8) == MagickFalse)
             ThrowFileException(exception,CorruptImageError,
               "UnexpectedEndOfFile",image->filename);
         }
@@ -2632,14 +2632,13 @@ static MagickBooleanType WritePSDImage(const ImageInfo *image_info,Image *image,
       else
         rounded_layer_info_size=layer_info_size;
       (void) SetPSDSize(&psd_info,image,rounded_layer_info_size);
-      if (next_image->alpha_trait == BlendPixelTrait)
+      if (base_image->alpha_trait == BlendPixelTrait)
         (void) WriteBlobMSBShort(image,-(unsigned short) layer_count);
       else
         (void) WriteBlobMSBShort(image,(unsigned short) layer_count);
       layer_count=1;
       compression=base_image->compression;
-      next_image=base_image;
-      while (next_image != NULL)
+      for (next_image=base_image; next_image != NULL; )
       {
         next_image->compression=NoCompression;
         (void) WriteBlobMSBLong(image,(unsigned int) next_image->page.y);
index ca2583772b477f71034cd2e1a65de7efdec8d907..83948b99925f10f86e876a2ba1be07755ff737ed 100644 (file)
@@ -239,7 +239,8 @@ static Image *ReadPWPImage(const ImageInfo *image_info,ExceptionInfo *exception)
     if (status == MagickFalse)
       break;
   }
-  (void) close(unique_file);
+  if (unique_file != -1)
+    (void) close(unique_file);
   (void) RelinquishUniqueFileResource(read_info->filename);
   read_info=DestroyImageInfo(read_info);
   (void) CloseBlob(pwp_image);
index 88110402b7587cba3b587876d988bc6791fd09dd..6ee79e5ec5403b8e41a0e4dc59357bd88afa76e9 100644 (file)
@@ -550,6 +550,7 @@ static int UnpackWPG2Raster(Image *image,int bpp,ExceptionInfo *exception)
     y;
 
   ssize_t
+    i,
     ldblk;
 
   unsigned int
@@ -560,9 +561,6 @@ static int UnpackWPG2Raster(Image *image,int bpp,ExceptionInfo *exception)
     *BImgBuff,
     SampleBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
 
-  unsigned int
-    i;
-
   x=0;
   y=0;
   ldblk=(ssize_t) ((bpp*image->columns+7)/8);