Browse Source

[2382] unify pushing '\0' for number-like data in Number::handle()

JINMEI Tatuya 12 years ago
parent
commit
6944e7758d
1 changed files with 3 additions and 3 deletions
  1. 3 3
      src/lib/dns/master_lexer.cc

+ 3 - 3
src/lib/dns/master_lexer.cc

@@ -522,9 +522,10 @@ Number::handle(MasterLexer& lexer) const {
             getLexerImpl(lexer)->source_->getChar(), escaped);
             getLexerImpl(lexer)->source_->getChar(), escaped);
         if (getLexerImpl(lexer)->isTokenEnd(c, escaped)) {
         if (getLexerImpl(lexer)->isTokenEnd(c, escaped)) {
             getLexerImpl(lexer)->source_->ungetChar();
             getLexerImpl(lexer)->source_->ungetChar();
+            // We need to close the string whether it's digits-only (for
+            // lexical_cast) or not (see String::handle()).
+            data.push_back('\0');
             if (digits_only) {
             if (digits_only) {
-                // Close the string for lexical_cast
-                data.push_back('\0');
                 try {
                 try {
                     const uint32_t number32 =
                     const uint32_t number32 =
                         boost::lexical_cast<uint32_t, const char*>(&data[0]);
                         boost::lexical_cast<uint32_t, const char*>(&data[0]);
@@ -535,7 +536,6 @@ Number::handle(MasterLexer& lexer) const {
                     token = MasterToken(MasterToken::NUMBER_OUT_OF_RANGE);
                     token = MasterToken(MasterToken::NUMBER_OUT_OF_RANGE);
                 }
                 }
             } else {
             } else {
-                data.push_back('\0'); // see String::handle()
                 token = MasterToken(&data.at(0), data.size() - 1);
                 token = MasterToken(&data.at(0), data.size() - 1);
             }
             }
             return;
             return;