diff --git a/libavcodec/h264.c b/libavcodec/h264.c index f610d71310..3aa3af0a64 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -4725,8 +4725,13 @@ again: hx->intra_gb_ptr = hx->inter_gb_ptr = NULL; - if ((err = decode_slice_header(hx, h)) < 0) + if ((err = decode_slice_header(hx, h)) < 0) { + /* make sure data_partitioning is cleared if it was set + * before, so we don't try decoding a slice without a valid + * slice header later */ + h->data_partitioning = 0; break; + } hx->data_partitioning = 1; break;