Skip to content

Commit 4ee3034

Browse files
committed
Merge pull request opencv#9504 from alalek:regression_9376
2 parents 034aaa7 + 8f05126 commit 4ee3034

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

modules/imgcodecs/src/grfmt_bmp.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ bool BmpDecoder::readHeader()
118118

119119
if( m_bpp <= 8 )
120120
{
121-
CV_Assert(clrused < 256);
121+
CV_Assert(clrused <= 256);
122122
memset(m_palette, 0, sizeof(m_palette));
123123
m_strm.getBytes(m_palette, (clrused == 0? 1<<m_bpp : clrused)*4 );
124124
iscolor = IsColorPalette( m_palette, m_bpp );
@@ -174,6 +174,7 @@ bool BmpDecoder::readHeader()
174174
}
175175
catch(...)
176176
{
177+
throw;
177178
}
178179
// in 32 bit case alpha channel is used - so require CV_8UC4 type
179180
m_type = iscolor ? (m_bpp == 32 ? CV_8UC4 : CV_8UC3 ) : CV_8UC1;
@@ -483,11 +484,12 @@ decode_rle8_bad: ;
483484
result = true;
484485
break;
485486
default:
486-
assert(0);
487+
CV_ErrorNoReturn(cv::Error::StsError, "Invalid/unsupported mode");
487488
}
488489
}
489490
catch(...)
490491
{
492+
throw;
491493
}
492494

493495
return result;

modules/imgcodecs/test/test_read_write.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,12 @@ const string exts[] = {
120120
};
121121

122122
INSTANTIATE_TEST_CASE_P(imgcodecs, Imgcodecs_Image, testing::ValuesIn(exts));
123+
124+
TEST(Imgcodecs_Image, regression_9376)
125+
{
126+
String path = findDataFile("readwrite/regression_9376.bmp");
127+
Mat m = imread(path);
128+
ASSERT_FALSE(m.empty());
129+
EXPECT_EQ(32, m.cols);
130+
EXPECT_EQ(32, m.rows);
131+
}

0 commit comments

Comments
 (0)