Chromium Code Reviews| 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) |