RawTherapee crashed after opening linear DNG from Sigma SD H Quattro camera in editor. fixes #3559

This commit is contained in:
heckflosse
2016-12-30 16:11:21 +01:00
parent cc8dae26ff
commit 8d52510381
3 changed files with 12 additions and 0 deletions

View File

@@ -723,6 +723,10 @@ float** RawImage::compress_image()
this->data[row][col] = image[row * width + col][0]; this->data[row][col] = image[row * width + col][0];
} }
} else { } 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 #pragma omp parallel for
for (int row = 0; row < height; row++) for (int row = 0; row < height; row++)

View File

@@ -356,6 +356,10 @@ public:
return (xtrans[(row) % 6][(col) % 6]); return (xtrans[(row) % 6][(col) % 6]);
} }
unsigned DNGVERSION ( ) const
{
return dng_version;
}
}; };
} }

View File

@@ -466,6 +466,10 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati
int left_margin = ri->get_leftmargin(); int left_margin = ri->get_leftmargin();
firstgreen += left_margin; firstgreen += left_margin;
int top_margin = ri->get_topmargin(); 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++) { for (int row = 1 + top_margin, y = 0; row < iheight + top_margin - 1 && y < tmph; row += vskip, y++) {
rofs = row * iwidth; rofs = row * iwidth;