diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index 47f3a0908eed009a6202dcec298ac6e0132c467b..6e9c2eae99127c831d95afa58312c9af4c1474be 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -2504,9 +2504,10 @@ static int hevc_decode_frame(AVCodecContext *avctx, void *data, int *got_output,
 
     /* verify the SEI checksum */
     if (avctx->err_recognition & AV_EF_CRCCHECK && s->is_decoded &&
+        avctx->err_recognition & AV_EF_EXPLODE &&
         s->is_md5) {
         ret = verify_md5(s, s->ref->frame);
-        if (ret < 0 && avctx->err_recognition & AV_EF_EXPLODE) {
+        if (ret < 0) {
             ff_hevc_unref_frame(s, s->ref, ~0);
             return ret;
         }