mirror of
https://invent.kde.org/frameworks/kimageformats.git
synced 2026-07-20 07:40:54 -04:00
HEIF: keep reader callback table alive
libheif retains the heif_reader pointer after heif_context_read_from_reader returns. The callback table was scoped to the non-sequential branch and could be destroyed before tiled image decoding used it from worker threads. Give the callback table static storage duration. BUG: 523105
This commit is contained in:
committed by
Daniel Novomeský
parent
2faf524b85
commit
ad0fb9dde4
@@ -845,7 +845,8 @@ bool HEIFHandler::ensureDecoder()
|
|||||||
buffer = deviceRead(dev, kMaxQVectorSize);
|
buffer = deviceRead(dev, kMaxQVectorSize);
|
||||||
err = heif_context_read_from_memory(ctx, static_cast<const void *>(buffer.constData()), buffer.size(), nullptr);
|
err = heif_context_read_from_memory(ctx, static_cast<const void *>(buffer.constData()), buffer.size(), nullptr);
|
||||||
} else {
|
} else {
|
||||||
heif_reader reader = create_heif_reader_for_qiodevice();
|
// Must not be destroyed until decoding ends
|
||||||
|
static const heif_reader reader = create_heif_reader_for_qiodevice();
|
||||||
err = heif_context_read_from_reader(ctx, &reader, dev, nullptr);
|
err = heif_context_read_from_reader(ctx, &reader, dev, nullptr);
|
||||||
}
|
}
|
||||||
if (err.code) {
|
if (err.code) {
|
||||||
|
|||||||
Reference in New Issue
Block a user