forked from espressif/esp-idf
fix(jpeg): Fix memory leak on jpeg decoder
This commit is contained in:
@@ -169,7 +169,9 @@ esp_err_t jpeg_isr_deregister(jpeg_codec_handle_t jpeg_codec, jpeg_isr_handler_t
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
prev = it;
|
prev = it;
|
||||||
free(prev);
|
}
|
||||||
|
if (found) {
|
||||||
|
free(it);
|
||||||
}
|
}
|
||||||
if (unlikely(found != true)) {
|
if (unlikely(found != true)) {
|
||||||
return ESP_ERR_INVALID_STATE;
|
return ESP_ERR_INVALID_STATE;
|
||||||
|
@@ -263,6 +263,9 @@ esp_err_t jpeg_del_decoder_engine(jpeg_decoder_handle_t decoder_engine)
|
|||||||
if (decoder_engine->header_info) {
|
if (decoder_engine->header_info) {
|
||||||
free(decoder_engine->header_info);
|
free(decoder_engine->header_info);
|
||||||
}
|
}
|
||||||
|
if (decoder_engine->trans_desc) {
|
||||||
|
free(decoder_engine->trans_desc);
|
||||||
|
}
|
||||||
if (decoder_engine->evt_queue) {
|
if (decoder_engine->evt_queue) {
|
||||||
vQueueDeleteWithCaps(decoder_engine->evt_queue);
|
vQueueDeleteWithCaps(decoder_engine->evt_queue);
|
||||||
}
|
}
|
||||||
|
@@ -30,7 +30,7 @@ TEST_CASE("JPEG decode driver memory leaking check", "[jpeg]")
|
|||||||
};
|
};
|
||||||
|
|
||||||
int size = esp_get_free_heap_size();
|
int size = esp_get_free_heap_size();
|
||||||
for (uint32_t i = 0; i <= 3; i++) {
|
for (uint32_t i = 0; i <= 10; i++) {
|
||||||
TEST_ESP_OK(jpeg_new_decoder_engine(&decode_eng_cfg, &jpgd_handle));
|
TEST_ESP_OK(jpeg_new_decoder_engine(&decode_eng_cfg, &jpgd_handle));
|
||||||
vTaskDelay(10 / portTICK_PERIOD_MS);
|
vTaskDelay(10 / portTICK_PERIOD_MS);
|
||||||
TEST_ESP_OK(jpeg_del_decoder_engine(jpgd_handle));
|
TEST_ESP_OK(jpeg_del_decoder_engine(jpgd_handle));
|
||||||
|
Reference in New Issue
Block a user