]> granicus.if.org Git - imagemagick/commitdiff
Added checks for empty string when setting 'magick'.
authordirk <dirk@git.imagemagick.org>
Sat, 31 Jan 2015 17:13:04 +0000 (17:13 +0000)
committerdirk <dirk@git.imagemagick.org>
Sat, 31 Jan 2015 17:13:04 +0000 (17:13 +0000)
Magick++/lib/Image.cpp
Magick++/lib/Options.cpp
Magick++/tests/readWriteImages.cpp

index 830c7bcf30bdce7b5d74ccd906f5c6efc25120ca..5d0c0e638db88c7b18694c60ab434c8fc054bd50 100644 (file)
@@ -1133,11 +1133,19 @@ Magick::Image Magick::Image::mask(void) const
 
 void Magick::Image::magick(const std::string &magick_)
 {
+  size_t
+    length;
+
   modifyImage();
 
-  magick_.copy(image()->magick,sizeof(image()->magick)-1);
-  image()->magick[magick_.length()]=0;
-  
+  length=sizeof(image()->magick)-1;
+  if (magick_.length() < length)
+    length=magick_.length();
+
+  if (!magick_.empty())
+    magick_.copy(image()->magick,length);
+  image()->magick[length]=0;
+
   options()->magick(magick_);
 }
 
index 505f33e2c05b01c0cc515823cc9b10e12a8d2614..040799d089f5a4b823127936c318a5daa1679024 100644 (file)
@@ -337,6 +337,12 @@ Magick::InterlaceType Magick::Options::interlaceType(void) const
 
 void Magick::Options::magick(const std::string &magick_)
 {
+  if (magick_.empty())
+  {
+    _imageInfo->filename[0] = '\0';
+    return;
+  }
+
   FormatLocaleString(_imageInfo->filename,MaxTextExtent,"%.1024s:",
     magick_.c_str());
   GetPPException;
index d59cd276d2b3e5070a0fe1d79b5efda7514799e2..c9f3995c2a410a13edc0b4556ba9fc2bcb37ee7c 100644 (file)
@@ -143,6 +143,19 @@ int main(int,char ** argv)
           << " is not equal to PDB"
           << endl;
       }
+
+    third.magick("");
+    third.write("testmagick_anim_out.ico");
+    fourth.read("testmagick_anim_out.ico");
+
+    if (fourth.magick() != "ICO")
+      {
+        ++failures;
+        cout << "Line: " << __LINE__
+          << "  Image magick: " << fourth.magick()
+          << " is not equal to ICO"
+          << endl;
+      }
   }
   catch(Exception &error_)
     {