From: dirk Date: Sat, 31 Jan 2015 17:13:04 +0000 (+0000) Subject: Added checks for empty string when setting 'magick'. X-Git-Tag: 7.0.1-0~1338 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49ccbc806b20f4892e6c8588768617afdfcee3cd;p=imagemagick Added checks for empty string when setting 'magick'. --- diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index 830c7bcf3..5d0c0e638 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -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_); } diff --git a/Magick++/lib/Options.cpp b/Magick++/lib/Options.cpp index 505f33e2c..040799d08 100644 --- a/Magick++/lib/Options.cpp +++ b/Magick++/lib/Options.cpp @@ -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; diff --git a/Magick++/tests/readWriteImages.cpp b/Magick++/tests/readWriteImages.cpp index d59cd276d..c9f3995c2 100644 --- a/Magick++/tests/readWriteImages.cpp +++ b/Magick++/tests/readWriteImages.cpp @@ -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_) {