diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 1a8488c76..dc91da64d 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -723,6 +723,10 @@ float** RawImage::compress_image() this->data[row][col] = image[row * width + col][0]; } } else { + if(get_maker() == "Sigma" && dng_version) { // Hack to prevent sigma dng files from crashing + height -= top_margin; + width -= left_margin; + } #pragma omp parallel for for (int row = 0; row < height; row++) diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index b741a7ffc..804a2a346 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -356,6 +356,10 @@ public: return (xtrans[(row) % 6][(col) % 6]); } + unsigned DNGVERSION ( ) const + { + return dng_version; + } }; } diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index af42ce8b0..8db42a84e 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -466,6 +466,10 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati int left_margin = ri->get_leftmargin(); firstgreen += left_margin; int top_margin = ri->get_topmargin(); + if(ri->get_maker() == "Sigma" && ri->DNGVERSION()) { // Hack to prevent sigma dng files from crashing + tmpw = (width - 2 - left_margin) / hskip; + tmph = (height - 2 - top_margin) / vskip; + } for (int row = 1 + top_margin, y = 0; row < iheight + top_margin - 1 && y < tmph; row += vskip, y++) { rofs = row * iwidth;