Commit 1806fd57 for libheif
commit 1806fd5760eecf72eca5c944af225ae471664218
Author: Dirk Farin <dirk.farin@gmail.com>
Date: Sat Apr 11 00:00:28 2026 +0200
Fix x265 param leak in end_sequence_encoding when encoder produces no output
diff --git a/libheif/plugins/encoder_x265.cc b/libheif/plugins/encoder_x265.cc
index 88538c26..cf9c74f9 100644
--- a/libheif/plugins/encoder_x265.cc
+++ b/libheif/plugins/encoder_x265.cc
@@ -348,6 +348,10 @@ static void x265_free_encoder(void* encoder_raw)
api->encoder_close(encoder->encoder);
}
+ if (encoder->param && encoder->api) {
+ encoder->api->param_free(encoder->param);
+ }
+
delete encoder;
}
@@ -1163,16 +1167,14 @@ static heif_error x265_end_sequence_encoding(void* encoder_raw)
NULL,
&out_pic);
#endif
- if (result <= 0 || num_nals == 0) {
- return heif_error_ok;
- }
-
+ if (result > 0 && num_nals > 0) {
#if X265_BUILD == 212
- uintptr_t frameNr = out_pic ? reinterpret_cast<uintptr_t>(out_pic->userData) : 0;
+ uintptr_t frameNr = out_pic ? reinterpret_cast<uintptr_t>(out_pic->userData) : 0;
#else
- uintptr_t frameNr = reinterpret_cast<uintptr_t>(out_pic.userData);
+ uintptr_t frameNr = reinterpret_cast<uintptr_t>(out_pic.userData);
#endif
- encoder->append_nal_packets(nals, num_nals, frameNr);
+ encoder->append_nal_packets(nals, num_nals, frameNr);
+ }
encoder->api->param_free(encoder->param);
encoder->param = nullptr;