Index: core/src/fxcrt/fx_basic_gcc.cpp |
diff --git a/core/src/fxcrt/fx_basic_gcc.cpp b/core/src/fxcrt/fx_basic_gcc.cpp |
index 7f5bbade66c38d188171c9b9b701e2dbc969eb98..8e23dd66cb80e67d189370a60d7fd757411edab0 100644 |
--- a/core/src/fxcrt/fx_basic_gcc.cpp |
+++ b/core/src/fxcrt/fx_basic_gcc.cpp |
@@ -16,15 +16,21 @@ T FXSYS_StrToInt(STR_T str) |
neg = TRUE; |
str ++; |
} |
- T num = 0; |
+ base::CheckedNumeric<T> num = 0; |
Tom Sepez
2014/09/19 22:35:07
num doesn't need to be checked.
|
+ base::CheckedNumeric<T> num_new = num; |
Tom Sepez
2014/09/19 22:35:07
maybe this moves to right before line 25, and its
|
while (*str) { |
if ((*str) < '0' || (*str) > '9') { |
break; |
} |
- num = num * 10 + (*str) - '0'; |
+ num_new *= 10; |
+ num_new += (*str) - '0'; |
+ if (!num_new.IsValid()) { |
+ break; |
+ } |
+ num = num_new; |
Tom Sepez
2014/09/19 22:35:07
num = new_num.ValueOrDie();
|
str ++; |
} |
- return neg ? -num : num; |
+ return neg ? -num.ValueOrDie() : num.ValueOrDie(); |
} |
template <typename T, typename STR_T> |
STR_T FXSYS_IntToStr(T value, STR_T string, int radix) |