jp2: Fix new[] vs delete by not doing new[]

unique_ptr will call delete which is not the right thing to do with
memory allocated with new[]

BUGS: 525120
This commit is contained in:
Albert Astals Cid
2026-09-03 00:13:53 +02:00
parent a6027264d4
commit 72518dcc1a
+12 -13
View File
@@ -622,21 +622,20 @@ public:
m_cparameters.tcp_rates[0] = 100.0 - (m_quality < 10 ? m_quality : 10 + (std::log10(m_quality) - 1) * 90);
}
std::unique_ptr<opj_image_cmptparm_t> cmptparm(new opj_image_cmptparm_t[ncomp]);
for (int i = 0; i < ncomp; ++i) {
auto &&p = cmptparm.get() + i;
memset(p, 0, sizeof(opj_image_cmptparm_t));
p->dx = m_cparameters.subsampling_dx;
p->dy = m_cparameters.subsampling_dy;
p->w = image.width();
p->h = image.height();
p->x0 = 0;
p->y0 = 0;
p->prec = prec;
p->sgnd = 0;
std::vector<opj_image_cmptparm_t> cmptparm(ncomp);
for (opj_image_cmptparm_t &p : cmptparm) {
memset(&p, 0, sizeof(opj_image_cmptparm_t));
p.dx = m_cparameters.subsampling_dx;
p.dy = m_cparameters.subsampling_dy;
p.w = image.width();
p.h = image.height();
p.x0 = 0;
p.y0 = 0;
p.prec = prec;
p.sgnd = 0;
}
m_jp2_image = opj_image_create(ncomp, cmptparm.get(), cs);
m_jp2_image = opj_image_create(ncomp, cmptparm.data(), cs);
if (m_jp2_image == nullptr) {
return false;
}