Reset the 'setjmp' flag to 0 before returning.
We set the 'setjmp' flag to 1 after a setjmp() call. The function needs
to either reset the 'setjmp' flag to 0 before returning or just call
aom_internal_error.
BUG=aomedia:2001
Change-Id: I76d1e8b9c08fd7ae48810c1968f772168e697648
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 71294cb..ed7ea47 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -1288,7 +1288,6 @@
if (cx_data_sz < ctx->cx_data_sz / 2) {
aom_internal_error(&cpi->common.error, AOM_CODEC_ERROR,
"Compressed data buffer too small");
- return AOM_CODEC_ERROR;
}
}
@@ -1304,8 +1303,8 @@
!img, timebase)) {
if (cpi->common.seq_params.frame_id_numbers_present_flag) {
if (cpi->common.invalid_delta_frame_id_minus_1) {
- ctx->base.err_detail = "Invalid delta_frame_id_minus_1";
- return AOM_CODEC_ERROR;
+ aom_internal_error(&cpi->common.error, AOM_CODEC_ERROR,
+ "Invalid delta_frame_id_minus_1");
}
}
cpi->seq_params_locked = 1;
@@ -1334,7 +1333,7 @@
// OBUs are preceded/succeeded by an unsigned leb128 coded integer.
if (write_uleb_obu_size(obu_header_size, obu_payload_size,
ctx->pending_cx_data) != AOM_CODEC_OK) {
- return AOM_CODEC_ERROR;
+ aom_internal_error(&cpi->common.error, AOM_CODEC_ERROR, NULL);
}
frame_size += obu_header_size + obu_payload_size + length_field_size;
@@ -1344,7 +1343,7 @@
size_t curr_frame_size = frame_size;
if (av1_convert_sect5obus_to_annexb(cx_data, &curr_frame_size) !=
AOM_CODEC_OK) {
- return AOM_CODEC_ERROR;
+ aom_internal_error(&cpi->common.error, AOM_CODEC_ERROR, NULL);
}
frame_size = curr_frame_size;
@@ -1356,7 +1355,7 @@
}
if (write_uleb_obu_size(0, (uint32_t)frame_size, cx_data) !=
AOM_CODEC_OK) {
- return AOM_CODEC_ERROR;
+ aom_internal_error(&cpi->common.error, AOM_CODEC_ERROR, NULL);
}
frame_size += length_field_size;
}
@@ -1387,7 +1386,7 @@
}
if (write_uleb_obu_size(0, (uint32_t)tu_size, ctx->pending_cx_data) !=
AOM_CODEC_OK) {
- return AOM_CODEC_ERROR;
+ aom_internal_error(&cpi->common.error, AOM_CODEC_ERROR, NULL);
}
ctx->pending_cx_data_sz += length_field_size;
}
diff --git a/av1/decoder/decoder.c b/av1/decoder/decoder.c
index d65e88c..9dd7972 100644
--- a/av1/decoder/decoder.c
+++ b/av1/decoder/decoder.c
@@ -503,6 +503,7 @@
lock_buffer_pool(pool);
decrease_ref_count(cm->new_fb_idx, frame_bufs, pool);
unlock_buffer_pool(pool);
+ cm->error.setjmp = 0;
return 1;
}
@@ -523,7 +524,10 @@
pbi->decoding_first_frame = 0;
}
- if (cm->error.error_code != AOM_CODEC_OK) return 1;
+ if (cm->error.error_code != AOM_CODEC_OK) {
+ cm->error.setjmp = 0;
+ return 1;
+ }
aom_clear_system_state();