diff options
author | Roshan Pius <rpius@google.com> | 2016-07-28 17:15:26 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-07-28 17:15:26 +0000 |
commit | 59f193df6a9023e8696c36e773d080580b92766e (patch) | |
tree | 2f8084d7b2ccc65b879e04bceabf63458a2d181a | |
parent | 437e673254a98ea036d5d229ebacc9b3763f461b (diff) | |
parent | 14e533e2cfa3ba75a7583c85b66db2afa6b7e772 (diff) | |
download | android_system_tools_aidl-59f193df6a9023e8696c36e773d080580b92766e.tar.gz android_system_tools_aidl-59f193df6a9023e8696c36e773d080580b92766e.tar.bz2 android_system_tools_aidl-59f193df6a9023e8696c36e773d080580b92766e.zip |
aidl-cpp: Use |ParseInt| util for hex conversion am: 9d7810ac16
am: 14e533e2cf
Change-Id: Ic6c8f81a1c3f7744cdd5cd3e05ba02015cd4b1c7
-rw-r--r-- | aidl_language.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/aidl_language.cpp b/aidl_language.cpp index 6af55f8..bbe305b 100644 --- a/aidl_language.cpp +++ b/aidl_language.cpp @@ -6,6 +6,7 @@ #include <string.h> #include <string> +#include <android-base/parseint.h> #include <android-base/strings.h> #include "aidl_language_y.h" @@ -96,19 +97,14 @@ AidlIntConstant::AidlIntConstant(std::string name, std::string value, unsigned line_number) : name_(name) { - char *end; - // Use long long to ensure 0xFFFFFFFF -> -1 works on 32 bit devices. - unsigned long long int long_value = std::strtoull(value.c_str(), &end, 16); - // Ensure that we parsed the string fully and the value fits in int32. - if ((*end != '\0') || - ((long_value == ULLONG_MAX) && (errno == ERANGE)) || - (long_value > std::numeric_limits<uint32_t>::max())) { + uint32_t unsigned_val; + if (!android::base::ParseUint(value.c_str(), &unsigned_val)) { is_valid_ = false; LOG(ERROR) << "Found invalid int value '" << value << "' on line " << line_number; } else { - // Converting from unsigned long to signed integer. - value_ = long_value; + // Converting from unsigned to signed integer. + value_ = unsigned_val; is_valid_ = true; } } |