This commit is contained in:
Vincent Rabaud 2025-06-05 09:28:25 +02:00 committed by GitHub
commit e24109cfe6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 2 deletions

View File

@ -315,7 +315,7 @@ void finalizeHdr(Mat& m)
m.rows = m.cols = -1;
if(m.u)
m.datastart = m.data = m.u->data;
if( m.data )
if( m.data && d > 0 )
{
m.datalimit = m.datastart + m.size[0]*m.step[0];
if( m.size[0] > 0 )
@ -328,7 +328,7 @@ void finalizeHdr(Mat& m)
m.dataend = m.datalimit;
}
else
m.dataend = m.datalimit = 0;
m.dataend = m.datalimit = m.data;
}
//======================================= Mat ======================================================

View File

@ -1446,6 +1446,25 @@ TEST(Core_Mat, regression_9507)
EXPECT_EQ(25u, m2.total());
}
TEST(Core_Mat, empty)
{
// Should not crash.
uint8_t data[2] = {0, 1};
cv::Mat mat_nd(/*ndims=*/0, /*sizes=*/nullptr, CV_8UC1, /*data=*/data);
cv::Mat1b mat(0, 0, /*data=*/data, /*steps=*/1);
EXPECT_EQ(mat_nd.dims, 0);
EXPECT_EQ(mat.dims, 2);
#if CV_VERSION_MAJOR < 5
EXPECT_LE(mat_nd.total(), 0u);
EXPECT_TRUE(mat_nd.empty());
#else
EXPECT_LE(mat_nd.total(), 1u);
EXPECT_FALSE(mat_nd.empty());
#endif
EXPECT_EQ(mat.total(), 0u);
EXPECT_TRUE(mat.empty());
}
TEST(Core_InputArray, empty)
{
vector<vector<Point> > data;