diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c
index 406ca728ad8f223307f532def2d753a71e2ab6c8..e3d8486941af2e138ff6adfdaeff0f4105487937 100644
--- a/libavcodec/4xm.c
+++ b/libavcodec/4xm.c
@@ -757,8 +757,10 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length)
     }
 
     prestream = read_huffman_tables(f, prestream, buf + length - prestream);
-    if (!prestream)
-        return -1;
+    if (!prestream) {
+        av_log(f->avctx, AV_LOG_ERROR, "Error reading Huffman tables.\n");
+        return AVERROR_INVALIDDATA;
+    }
 
     av_assert0(prestream <= buf + length);
 
diff --git a/libavutil/mem.c b/libavutil/mem.c
index 6d3efaabfa39f6d2f04f01a08a02d99607362a4a..a7fe60837bf8984505b20271f5c3d731f4a6c54c 100644
--- a/libavutil/mem.c
+++ b/libavutil/mem.c
@@ -323,7 +323,10 @@ static void fill32(uint8_t *dst, int len)
 void av_memcpy_backptr(uint8_t *dst, int back, int cnt)
 {
     const uint8_t *src = &dst[-back];
-    if (back <= 1) {
+    if (!back)
+        return;
+
+    if (back == 1) {
         memset(dst, *src, cnt);
     } else if (back == 2) {
         fill16(dst, cnt);