diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-19 14:41:22 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-19 14:41:22 +0000 |
commit | 6a808eb2f93e3b0b03a383115a21b742c9b901b2 (patch) | |
tree | 793ad39988f3472e6b8b718977c2f2eff49b7dac /base/json | |
parent | 0877d8b7ab3e70000023a608a7d214f17f22a8b0 (diff) | |
download | chromium_src-6a808eb2f93e3b0b03a383115a21b742c9b901b2.zip chromium_src-6a808eb2f93e3b0b03a383115a21b742c9b901b2.tar.gz chromium_src-6a808eb2f93e3b0b03a383115a21b742c9b901b2.tar.bz2 |
base/json: Don't use static variables of user-defined type (i.e, std::wstring).
Instead use plain wchar_t array.
BUG=83856
TEST=None
R=tony@chromium.org
Review URL: http://codereview.chromium.org/7624057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97458 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/json')
-rw-r--r-- | base/json/json_reader.cc | 34 | ||||
-rw-r--r-- | base/json/json_reader.h | 2 |
2 files changed, 17 insertions, 19 deletions
diff --git a/base/json/json_reader.cc b/base/json/json_reader.cc index b286995..bc7bcd0 100644 --- a/base/json/json_reader.cc +++ b/base/json/json_reader.cc @@ -13,12 +13,20 @@ #include "base/utf_string_conversions.h" #include "base/values.h" +namespace { + +const wchar_t kNullString[] = L"null"; +const wchar_t kTrueString[] = L"true"; +const wchar_t kFalseString[] = L"false"; + +const int kStackLimit = 100; + +} // namespace + namespace base { static const JSONReader::Token kInvalidToken(JSONReader::Token::INVALID_TOKEN, 0, 0); -static const int kStackLimit = 100; - namespace { // A helper method for ParseNumberToken. It reads an int from the end of @@ -63,7 +71,7 @@ bool ReadHexDigits(JSONReader::Token& token, int digits) { return true; } -} // anonymous namespace +} // namespace const char* JSONReader::kBadRootElementType = "Root value must be an array or object."; @@ -509,10 +517,6 @@ Value* JSONReader::DecodeString(const Token& token) { } JSONReader::Token JSONReader::ParseToken() { - static const std::wstring kNullString(L"null"); - static const std::wstring kTrueString(L"true"); - static const std::wstring kFalseString(L"false"); - EatWhitespaceAndComments(); Token token(Token::INVALID_TOKEN, 0, 0); @@ -522,17 +526,17 @@ JSONReader::Token JSONReader::ParseToken() { break; case 'n': - if (NextStringMatch(kNullString)) + if (NextStringMatch(kNullString, arraysize(kNullString) - 1)) token = Token(Token::NULL_TOKEN, json_pos_, 4); break; case 't': - if (NextStringMatch(kTrueString)) + if (NextStringMatch(kTrueString, arraysize(kTrueString) - 1)) token = Token(Token::BOOL_TRUE, json_pos_, 4); break; case 'f': - if (NextStringMatch(kFalseString)) + if (NextStringMatch(kFalseString, arraysize(kFalseString) - 1)) token = Token(Token::BOOL_FALSE, json_pos_, 5); break; @@ -636,14 +640,8 @@ bool JSONReader::EatComment() { return true; } -bool JSONReader::NextStringMatch(const std::wstring& str) { - for (size_t i = 0; i < str.length(); ++i) { - if ('\0' == *json_pos_) - return false; - if (*(json_pos_ + i) != str[i]) - return false; - } - return true; +bool JSONReader::NextStringMatch(const wchar_t* str, size_t length) { + return wcsncmp(json_pos_, str, length) == 0; } void JSONReader::SetErrorCode(JsonParseError error, diff --git a/base/json/json_reader.h b/base/json/json_reader.h index f6ad9da..01b2a23 100644 --- a/base/json/json_reader.h +++ b/base/json/json_reader.h @@ -190,7 +190,7 @@ class BASE_EXPORT JSONReader { bool EatComment(); // Checks if |json_pos_| matches str. - bool NextStringMatch(const std::wstring& str); + bool NextStringMatch(const wchar_t* str, size_t length); // Sets the error code that will be returned to the caller. The current // line and column are determined and added into the final message. |