diff --git a/tscpp.cpp b/tscpp.cpp
index 934ed804677ad368dec4f9e232ed958f8c16f0b2..28fbd93949b8c1a64c1cb883b031d9846e8106a5 100644
--- a/tscpp.cpp
+++ b/tscpp.cpp
@@ -97,7 +97,9 @@ int unserializeUnknown(const TypePool& tp, const void *buffer, int bufSize)
     const char *name=buf;
     buf+=nameSize+1;
     bufSize-=nameSize+1;
-    return tp.unserializeUnknownImpl(name,buf,bufSize)+nameSize+1;
+    auto result=tp.unserializeUnknownImpl(name,buf,bufSize);
+    if(result<0) return result;
+    return result+nameSize+1;
 }
 
 string peekTypeName(const void *buffer, int bufSize)