diff --git a/modules/imgcodecs/src/grfmt_avif.cpp b/modules/imgcodecs/src/grfmt_avif.cpp index e8d1446cbe..b2830b755a 100644 --- a/modules/imgcodecs/src/grfmt_avif.cpp +++ b/modules/imgcodecs/src/grfmt_avif.cpp @@ -148,11 +148,14 @@ AvifDecoder::~AvifDecoder() { size_t AvifDecoder::signatureLength() const { return kAvifSignatureSize; } bool AvifDecoder::checkSignature(const String &signature) const { - avifDecoderSetIOMemory(decoder_, + avifDecoder *decoder = avifDecoderCreate(); + if (!decoder) return false; + avifDecoderSetIOMemory(decoder, reinterpret_cast(signature.c_str()), signature.size()); - decoder_->io->sizeHint = 1e9; - const avifResult status = avifDecoderParse(decoder_); + decoder->io->sizeHint = 1e9; + const avifResult status = avifDecoderParse(decoder); + avifDecoderDestroy(decoder); return (status == AVIF_RESULT_OK || status == AVIF_RESULT_TRUNCATED_DATA); }