Commit 6748bd33f75da96fc45d189028207a392c421eec

Authored by m-holger
1 parent 29093a16

In JSONParser::handleToken remove next_state

Showing 1 changed file with 11 additions and 10 deletions
libqpdf/JSON.cc
... ... @@ -1258,8 +1258,6 @@ JSONParser::handleToken()
1258 1258 break;
1259 1259 }
1260 1260  
1261   - parser_state_e next_state = ps_top;
1262   -
1263 1261 item->setStart(token_start);
1264 1262 item->setEnd(offset);
1265 1263  
... ... @@ -1282,7 +1280,7 @@ JSONParser::handleToken()
1282 1280 if (!reactor || !reactor->dictionaryItem(dict_key, *item)) {
1283 1281 tos->addDictionaryMember(dict_key, *item);
1284 1282 }
1285   - next_state = ps_dict_after_item;
  1283 + parser_state = ps_dict_after_item;
1286 1284 break;
1287 1285  
1288 1286 case ps_array_begin:
... ... @@ -1290,12 +1288,16 @@ JSONParser::handleToken()
1290 1288 if (!reactor || !reactor->arrayItem(*item)) {
1291 1289 tos->addArrayElement(*item);
1292 1290 }
1293   - next_state = ps_array_after_item;
  1291 + parser_state = ps_array_after_item;
1294 1292 break;
1295 1293  
1296 1294 case ps_top:
1297   - stack.push_back(item);
1298   - next_state = ps_done;
  1295 + if (!(item->isDictionary() || item->isArray())) {
  1296 + stack.push_back(item);
  1297 + parser_state = ps_done;
  1298 + return;
  1299 + }
  1300 + parser_state = ps_done;
1299 1301 break;
1300 1302  
1301 1303 case ps_dict_after_key:
... ... @@ -1323,7 +1325,7 @@ JSONParser::handleToken()
1323 1325  
1324 1326 if (item->isDictionary() || item->isArray()) {
1325 1327 stack.push_back(item);
1326   - ps_stack.push_back(next_state);
  1328 + ps_stack.push_back(parser_state);
1327 1329 // Calling container start method is postponed until after
1328 1330 // adding the containers to their parent containers, if any.
1329 1331 // This makes it much easier to keep track of the current
... ... @@ -1332,12 +1334,12 @@ JSONParser::handleToken()
1332 1334 if (reactor) {
1333 1335 reactor->dictionaryStart();
1334 1336 }
1335   - next_state = ps_dict_begin;
  1337 + parser_state = ps_dict_begin;
1336 1338 } else if (item->isArray()) {
1337 1339 if (reactor) {
1338 1340 reactor->arrayStart();
1339 1341 }
1340   - next_state = ps_array_begin;
  1342 + parser_state = ps_array_begin;
1341 1343 }
1342 1344  
1343 1345 if (ps_stack.size() > 500) {
... ... @@ -1346,7 +1348,6 @@ JSONParser::handleToken()
1346 1348 ": maximum object depth exceeded");
1347 1349 }
1348 1350 }
1349   - parser_state = next_state;
1350 1351 }
1351 1352  
1352 1353 std::shared_ptr<JSON>
... ...