From: JINMEI Tatuya Date: Tue, 4 Dec 2012 17:18:03 +0000 (-0800) Subject: [2382] unify pushing '\0' for number-like data in Number::handle() X-Git-Tag: bind10-1.0.0-beta-release~44^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6944e7758d326b69482bcfd7d3f501df5113b394;p=thirdparty%2Fkea.git [2382] unify pushing '\0' for number-like data in Number::handle() --- diff --git a/src/lib/dns/master_lexer.cc b/src/lib/dns/master_lexer.cc index 4593b48b5f..b3b78c0e68 100644 --- a/src/lib/dns/master_lexer.cc +++ b/src/lib/dns/master_lexer.cc @@ -522,9 +522,10 @@ Number::handle(MasterLexer& lexer) const { getLexerImpl(lexer)->source_->getChar(), escaped); if (getLexerImpl(lexer)->isTokenEnd(c, escaped)) { 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) { - // Close the string for lexical_cast - data.push_back('\0'); try { const uint32_t number32 = boost::lexical_cast(&data[0]); @@ -535,7 +536,6 @@ Number::handle(MasterLexer& lexer) const { token = MasterToken(MasterToken::NUMBER_OUT_OF_RANGE); } } else { - data.push_back('\0'); // see String::handle() token = MasterToken(&data.at(0), data.size() - 1); } return;