Changeset 62446 in vbox
- Timestamp:
- Jul 22, 2016 2:12:06 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 108999
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/misc/json.cpp
r62021 r62446 448 448 char ch = rtJsonTokenizerGetCh(pTokenizer); 449 449 size_t cchLiteral = 0; 450 char aszLiteral[6]; /* false + 0 terminator as the lingest possible literal. */451 RT_ZERO( aszLiteral);450 char szLiteral[6]; /* false + 0 terminator as the lingest possible literal. */ 451 RT_ZERO(szLiteral); 452 452 453 453 pToken->Pos = pTokenizer->Pos; … … 456 456 457 457 while ( RT_C_IS_ALPHA(ch) 458 && cchLiteral < RT_ELEMENTS( aszLiteral) - 1)459 { 460 aszLiteral[cchLiteral] = ch;458 && cchLiteral < RT_ELEMENTS(szLiteral) - 1) 459 { 460 szLiteral[cchLiteral] = ch; 461 461 cchLiteral++; 462 462 rtJsonTokenizerSkipCh(pTokenizer); … … 464 464 } 465 465 466 if (!RTStrNCmp(& aszLiteral[0], "false", RT_ELEMENTS(aszLiteral)))466 if (!RTStrNCmp(&szLiteral[0], "false", RT_ELEMENTS(szLiteral))) 467 467 pToken->enmClass = RTJSONTOKENCLASS_FALSE; 468 else if (!RTStrNCmp(& aszLiteral[0], "true", RT_ELEMENTS(aszLiteral)))468 else if (!RTStrNCmp(&szLiteral[0], "true", RT_ELEMENTS(szLiteral))) 469 469 pToken->enmClass = RTJSONTOKENCLASS_TRUE; 470 else if (!RTStrNCmp(& aszLiteral[0], "null", RT_ELEMENTS(aszLiteral)))470 else if (!RTStrNCmp(&szLiteral[0], "null", RT_ELEMENTS(szLiteral))) 471 471 pToken->enmClass = RTJSONTOKENCLASS_NULL; 472 472 else … … 489 489 static int rtJsonTokenizerGetNumber(PRTJSONTOKENIZER pTokenizer, PRTJSONTOKEN pToken) 490 490 { 491 unsigned uBase = 10;492 char *pszNext = NULL;493 491 size_t cchNum = 0; 494 char aszTmp[128]; /* Everything larger is not possible to display in signed 64bit. */ 495 RT_ZERO(aszTmp); 492 char szTmp[128]; /* Everything larger is not possible to display in signed 64bit. */ 496 493 497 494 pToken->enmClass = RTJSONTOKENCLASS_NUMBER; … … 499 496 char ch = rtJsonTokenizerGetCh(pTokenizer); 500 497 while ( RT_C_IS_DIGIT(ch) 501 && cchNum < sizeof( aszTmp) - 1)502 { 503 aszTmp[cchNum] = ch;498 && cchNum < sizeof(szTmp) - 1) 499 { 500 szTmp[cchNum] = ch; 504 501 cchNum++; 505 502 rtJsonTokenizerSkipCh(pTokenizer); … … 508 505 509 506 int rc = VINF_SUCCESS; 510 if (RT_C_IS_DIGIT(ch) && cchNum == sizeof(aszTmp) - 1)507 if (RT_C_IS_DIGIT(ch) && cchNum >= sizeof(szTmp) - 1) 511 508 rc = VERR_NUMBER_TOO_BIG; 512 509 else 513 510 { 514 rc = RTStrToInt64Ex(&aszTmp[0], NULL, 0, &pToken->Class.Number.i64Num); 511 szTmp[cchNum] = '\0'; 512 rc = RTStrToInt64Ex(&szTmp[0], NULL, 0, &pToken->Class.Number.i64Num); 515 513 Assert(RT_SUCCESS(rc) || rc == VWRN_NUMBER_TOO_BIG); 516 514 if (rc == VWRN_NUMBER_TOO_BIG) … … 532 530 int rc = VINF_SUCCESS; 533 531 size_t cchStr = 0; 534 char aszTmp[_4K];535 RT_ZERO( aszTmp);532 char szTmp[_4K]; 533 RT_ZERO(szTmp); 536 534 537 535 Assert(rtJsonTokenizerGetCh(pTokenizer) == '\"'); … … 544 542 while ( ch != '\"' 545 543 && ch != '\0' 546 && cchStr < sizeof( aszTmp) - 1)544 && cchStr < sizeof(szTmp) - 1) 547 545 { 548 546 if (ch == '\\') … … 554 552 { 555 553 case '\"': 556 aszTmp[cchStr] = '\"';554 szTmp[cchStr] = '\"'; 557 555 break; 558 556 case '\\': 559 aszTmp[cchStr] = '\\';557 szTmp[cchStr] = '\\'; 560 558 break; 561 559 case '/': 562 aszTmp[cchStr] = '/';560 szTmp[cchStr] = '/'; 563 561 break; 564 562 case '\b': 565 aszTmp[cchStr] = '\b';563 szTmp[cchStr] = '\b'; 566 564 break; 567 565 case '\n': 568 aszTmp[cchStr] = '\n';566 szTmp[cchStr] = '\n'; 569 567 break; 570 568 case '\f': 571 aszTmp[cchStr] = '\f';569 szTmp[cchStr] = '\f'; 572 570 break; 573 571 case '\r': 574 aszTmp[cchStr] = '\r';572 szTmp[cchStr] = '\r'; 575 573 break; 576 574 case '\t': 577 aszTmp[cchStr] = '\t';575 szTmp[cchStr] = '\t'; 578 576 break; 579 577 case 'u': … … 585 583 } 586 584 else 587 aszTmp[cchStr] = ch;585 szTmp[cchStr] = ch; 588 586 cchStr++; 589 587 rtJsonTokenizerSkipCh(pTokenizer); … … 594 592 rtJsonTokenizerSkipCh(pTokenizer); /* Skip closing " */ 595 593 596 pToken->Class.String.pszStr = RTStrDupN(& aszTmp[0], cchStr);594 pToken->Class.String.pszStr = RTStrDupN(&szTmp[0], cchStr); 597 595 if (pToken->Class.String.pszStr) 598 596 pToken->Pos.iChEnd += cchStr;
Note:
See TracChangeset
for help on using the changeset viewer.