]> granicus.if.org Git - imagemagick/commitdiff
Moved raising exception in Write method.
authordirk <dirk@git.imagemagick.org>
Wed, 23 Apr 2014 16:04:41 +0000 (16:04 +0000)
committerdirk <dirk@git.imagemagick.org>
Wed, 23 Apr 2014 16:04:41 +0000 (16:04 +0000)
Magick++/lib/Image.cpp

index b08d4abcb12e5dac2096ef81960730e7e2a194f2..6d0e1ea7729a279522c6e2f918fae19f5c6b88de 100644 (file)
@@ -4713,7 +4713,7 @@ void Magick::Image::whiteThresholdChannel(const ChannelType channel_,
 void Magick::Image::write(Blob *blob_)
 {
   size_t
-    length=2048; // Efficient size for small images
+    length=0;
 
   void
     *data;
@@ -4721,14 +4721,15 @@ void Magick::Image::write(Blob *blob_)
   modifyImage();
   GetPPException;
   data=ImagesToBlob(constImageInfo(),image(),&length,&exceptionInfo);
+  if (length > 0)
+    blob_->updateNoCopy(data,length,Blob::MallocAllocator);
   ThrowPPException;
-  blob_->updateNoCopy(data,length,Blob::MallocAllocator);
 }
 
 void Magick::Image::write(Blob *blob_,const std::string &magick_)
 {
   size_t
-    length=2048; // Efficient size for small images
+    length=0;
 
   void
     *data;
@@ -4737,15 +4738,16 @@ void Magick::Image::write(Blob *blob_,const std::string &magick_)
   magick(magick_);
   GetPPException;
   data=ImagesToBlob(constImageInfo(),image(),&length,&exceptionInfo);
+  if (length > 0)
+    blob_->updateNoCopy(data,length,Blob::MallocAllocator);
   ThrowPPException;
-  blob_->updateNoCopy(data,length,Blob::MallocAllocator);
 }
 
 void Magick::Image::write(Blob *blob_,const std::string &magick_,
   const size_t depth_)
 {
   size_t
-    length=2048; // Efficient size for small images
+    length=0;
 
   void
     *data;
@@ -4755,8 +4757,9 @@ void Magick::Image::write(Blob *blob_,const std::string &magick_,
   depth(depth_);
   GetPPException;
   data=ImagesToBlob(constImageInfo(),image(),&length,&exceptionInfo);
+  if (length > 0)
+    blob_->updateNoCopy(data,length,Blob::MallocAllocator);
   ThrowPPException;
-  blob_->updateNoCopy(data,length,Blob::MallocAllocator);
 }
 
 void Magick::Image::write(const ssize_t x_,const ssize_t y_,