@@ -872,6 +872,9 @@ namespace TTD
872872 charList.Add (c);
873873 }
874874
875+ // Null-terminate the list before we try to use the buffer as a string.
876+ charList.Add (_u (' \0 ' ));
877+
875878 bool likelyint; // we don't care about this just want to know that it is convertable to a number
876879 const char16* end;
877880 const char16* start = charList.GetBuffer ();
@@ -963,8 +966,8 @@ namespace TTD
963966 return NSTokens::ParseTokenKind::Error;
964967 }
965968
966- // convert this number to get the length of the string (not including "")
967- charList. Add ( _u ( ' \0 ' ));
969+ // Convert this number to get the length of the string (not including ""),
970+ // charList is already null-terminated by the call to ScanNumber.
968971 uint32 length = (uint32)this ->ReadUIntFromCharArray (charList.GetBuffer ());
969972
970973 // read the lead "\""
@@ -1226,7 +1229,6 @@ namespace TTD
12261229 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
12271230 TTDAssert (tok == NSTokens::ParseTokenKind::Number, " Error in parse." );
12281231
1229- this ->m_charListOpt .Add (_u (' \0 ' ));
12301232 uint64 uval = this ->ReadUIntFromCharArray (this ->m_charListOpt .GetBuffer ());
12311233 TTDAssert (uval <= BYTE_MAX, " Error in parse." );
12321234
@@ -1250,7 +1252,6 @@ namespace TTD
12501252 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
12511253 TTDAssert (tok == NSTokens::ParseTokenKind::Number, " Error in parse." );
12521254
1253- this ->m_charListOpt .Add (_u (' \0 ' ));
12541255 int64 ival = this ->ReadIntFromCharArray (this ->m_charListOpt .GetBuffer ());
12551256 TTDAssert (INT32_MIN <= ival && ival <= INT32_MAX, " Error in parse." );
12561257
@@ -1264,7 +1265,6 @@ namespace TTD
12641265 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
12651266 TTDAssert (tok == NSTokens::ParseTokenKind::Number, " Error in parse." );
12661267
1267- this ->m_charListOpt .Add (_u (' \0 ' ));
12681268 uint64 uval = this ->ReadUIntFromCharArray (this ->m_charListOpt .GetBuffer ());
12691269 TTDAssert (uval <= UINT32_MAX, " Error in parse." );
12701270
@@ -1278,7 +1278,6 @@ namespace TTD
12781278 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
12791279 TTDAssert (tok == NSTokens::ParseTokenKind::Number, " Error in parse." );
12801280
1281- this ->m_charListOpt .Add (_u (' \0 ' ));
12821281 return this ->ReadIntFromCharArray (this ->m_charListOpt .GetBuffer ());
12831282 }
12841283
@@ -1289,7 +1288,6 @@ namespace TTD
12891288 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
12901289 TTDAssert (tok == NSTokens::ParseTokenKind::Number, " Error in parse." );
12911290
1292- this ->m_charListOpt .Add (_u (' \0 ' ));
12931291 return this ->ReadUIntFromCharArray (this ->m_charListOpt .GetBuffer ());
12941292 }
12951293
@@ -1324,7 +1322,6 @@ namespace TTD
13241322 {
13251323 TTDAssert (tok == NSTokens::ParseTokenKind::Number, " Error in parse." );
13261324
1327- this ->m_charListOpt .Add (_u (' \0 ' ));
13281325 res = this ->ReadDoubleFromCharArray (this ->m_charListOpt .GetBuffer ());
13291326
13301327 break ;
@@ -1341,7 +1338,6 @@ namespace TTD
13411338 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
13421339 TTDAssert (tok == NSTokens::ParseTokenKind::Address, " Error in parse." );
13431340
1344- this ->m_charListOpt .Add (_u (' \0 ' )); // add terminator
13451341 return (TTD_PTR_ID)this ->ReadUIntFromCharArray (this ->m_charListOpt .GetBuffer ());
13461342 }
13471343
@@ -1352,7 +1348,6 @@ namespace TTD
13521348 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
13531349 TTDAssert (tok == NSTokens::ParseTokenKind::LogTag, " Error in parse." );
13541350
1355- this ->m_charListOpt .Add (_u (' \0 ' )); // add terminator
13561351 return (TTD_LOG_PTR_ID)this ->ReadUIntFromCharArray (this ->m_charListOpt .GetBuffer ());
13571352 }
13581353
@@ -1363,7 +1358,6 @@ namespace TTD
13631358 NSTokens::ParseTokenKind tok = this ->Scan (this ->m_charListOpt );
13641359 TTDAssert (tok == NSTokens::ParseTokenKind::EnumTag, " Error in parse." );
13651360
1366- this ->m_charListOpt .Add (_u (' \0 ' )); // add terminator
13671361 uint64 tval = this ->ReadUIntFromCharArray (this ->m_charListOpt .GetBuffer ());
13681362 TTDAssert (tval <= UINT32_MAX, " Error in parse." );
13691363
0 commit comments