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

View File

@ -1446,6 +1446,25 @@ TEST(Core_Mat, regression_9507)
EXPECT_EQ(25u, m2.total()); 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) TEST(Core_InputArray, empty)
{ {
vector<vector<Point> > data; vector<vector<Point> > data;