--- /dev/null
+--- a/bencode.cpp
++++ b/bencode.cpp
+@@ -44,6 +44,10 @@ size_t buf_long(const char *b,size_t len
+ p++; len--;
+ }
+
++ if( *p == '-'){
++ p++; len--;
++ }
++
+ for(psave = p; len && isdigit(*p); p++,len--) ;
+
+ if(!len || MAX_INT_SIZ < (p - psave) || *p != endchar) return 0;