From 73bcafc004af763f9c269e62d175614694769e82 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Fri, 16 Dec 2011 21:44:32 +0100 Subject: [PATCH] strtol(3) now returns 0 if the string was + or -. --- libmaxsi/integer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libmaxsi/integer.cpp b/libmaxsi/integer.cpp index d3fcd8b5..3f87ded5 100644 --- a/libmaxsi/integer.cpp +++ b/libmaxsi/integer.cpp @@ -54,6 +54,7 @@ namespace Maxsi template INT ParseInteger(const char* str, char** endptr, int base) { + const char* origstr = str; int origbase = base; while ( IsSpace(*str) ) { str++; } if ( base < 0 || 36 < base ) { if ( endptr ) { *endptr = (char*) str; } return 0; } @@ -69,6 +70,7 @@ namespace Maxsi } if ( !base ) { base = 10; } if ( origbase == 16 && str[0] == '0' && (str[1] == 'x' || str[1] == 'X') ) { str += 2; } + size_t numconvertedchars = 0; while ( (c = *str ) ) { int val = Debase(c); @@ -78,7 +80,9 @@ namespace Maxsi // TODO: Detect overflow! result = result * (INT) base + (INT) val; str++; + numconvertedchars++; } + if ( !numconvertedchars ) { str = origstr; result = 0; } if ( endptr ) { *endptr = (char*) str; } return result; }