--- a/src/utils/transcode.cpp
+++ b/src/utils/transcode.cpp
@@ -116,7 +116,13 @@
 		ip++;isiz--;
 		continue;
 	    }
-	    goto error;
+	    // Normally only EINVAL is possible here: incomplete
+	    // multibyte sequence at the end. This is not fatal. Any
+	    // other is supposedly impossible, we return an error
+	    if (errno == EINVAL)
+		goto out;
+	    else
+		goto error;
 	}
 
 	out.append(obuf, OBSIZ - osiz);
@@ -131,9 +137,11 @@
     }
 #endif
 
+out:
     ret = true;
 
- error:
+error:
+
     if (icopen) {
 #ifndef ICONV_CACHE_OPEN
 	iconv_close(ic);