| Index: vm/os_macos.cc
|
| ===================================================================
|
| --- vm/os_macos.cc (revision 9676)
|
| +++ vm/os_macos.cc (working copy)
|
| @@ -136,26 +136,25 @@
|
| }
|
|
|
|
|
| -bool OS::StringToInteger(const char* str, int64_t* value) {
|
| +bool OS::StringToInt64(const char* str, int64_t* value) {
|
| ASSERT(str != NULL && strlen(str) > 0 && value != NULL);
|
| - bool negative_value = false;
|
| int32_t base = 10;
|
| + char* endptr;
|
| + int i = 0;
|
| if (str[0] == '-') {
|
| - negative_value = true;
|
| - str += 1;
|
| + i = 1;
|
| }
|
| - if ((str[0] == '0') && (str[1] == 'x' || str[1] == 'X') && (str[2] != '\0')) {
|
| + if ((str[i] == '0') &&
|
| + (str[i + 1] == 'x' || str[i + 1] == 'X') &&
|
| + (str[i + 2] != '\0')) {
|
| base = 16;
|
| }
|
| errno = 0;
|
| - *value = strtoll(str, NULL, base);
|
| - if (errno == 0) {
|
| - if (negative_value) {
|
| - *value = -(*value);
|
| - }
|
| - return true;
|
| + *value = strtoll(str, &endptr, base);
|
| + if (errno != 0 || endptr == str || *endptr != 0) {
|
| + return false;
|
| }
|
| - return false;
|
| + return true;
|
| }
|
|
|
|
|
|
|