summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2024-08-24 23:24:50 +0200
committerArno <arno@disconnect.de>2024-08-31 11:56:45 +0200
commit66606fd5cc6bd3d377cc35d9ce2e267b694410fc (patch)
treec84c66431c49954251031e401f9ff852290e7345
parent7f10707eb9c9ab9d4651022bfa89550b05d375c2 (diff)
downloadSheMov-66606fd5cc6bd3d377cc35d9ce2e267b694410fc.tar.gz
SheMov-66606fd5cc6bd3d377cc35d9ce2e267b694410fc.tar.bz2
SheMov-66606fd5cc6bd3d377cc35d9ce2e267b694410fc.zip
Catch Magick::Exception
Prevent crash when trying to convert a file to png. This was a hard one. After checking into detached QT-Containers I finally realized that convertArchivefileToPng was the culprit, because ImageMagick::read exited with an "Unsupported marker type 0x09" execption. After some more investigation with convert, or magick convert these days, I found out that they could be ignored. Yes, it's a big hammer, but if it still fails after trying to convert, just return if still don't have a valid image.
-rw-r--r--helper.cpp10
-rw-r--r--pictureviewer2.cpp4
2 files changed, 10 insertions, 4 deletions
diff --git a/helper.cpp b/helper.cpp
index 9398a06..a32d137 100644
--- a/helper.cpp
+++ b/helper.cpp
@@ -321,15 +321,17 @@ namespace Helper {
QString newFn = data.at(0).toString();
newFn.replace(QRegularExpression("(jpg|jpeg)$", QRegularExpression::CaseInsensitiveOption), "png");
Magick::Image img;
- img.read(data.at(3).toByteArray().data());
+ try {
+ img.read(data.at(3).toByteArray().data());
+ }
+ catch(Magick::Exception &) {}
+
QTemporaryFile outFile("shemovconvertXXXXXX.png");
if(outFile.open()){
try {
img.write(outFile.fileName().toStdString());
}
- catch(Magick::Exception &) {
- return retval;
- }
+ catch(Magick::Exception &) {}
outFile.rename(newFn);
QString newMd5 = md5Sum(outFile.fileName());
QString dest = moveToArchive(outFile.fileName(), newMd5, true);
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index e56f52a..1e49bdf 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -449,6 +449,10 @@ void PictureViewer2::showFile(const PicData &file){
if(pixmap.isNull()){
if(fi.canonicalFilePath().startsWith(mArchiveDir)){
mCurPicData = Helper::convertArchivefileToPng(file);
+ if(mCurPicData.isEmpty()){
+ //convert failed even though ignoring errors
+ return;
+ }
mFiles[mCurPos] = mCurPicData;
if(!mCurPicData.isEmpty()){
pixmap = QPixmap(mCurPicData.at(3).toString());