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