Commit ef866d68cd77cad9640350715adf3374fd5719c7

Authored by m-holger
1 parent c422b918

In QPDF::readStream remove variable done

Showing 1 changed file with 12 additions and 9 deletions
libqpdf/QPDF.cc
... ... @@ -1331,17 +1331,19 @@ QPDF::readStream(QPDFObjectHandle& object, QPDFObjGen og, qpdf_offset_t offset)
1331 1331 // accept a carriage return by itself when followed by a non-newline character, so that's what
1332 1332 // we do here. We have also seen files that have extraneous whitespace between the stream
1333 1333 // keyword and the newline.
1334   - bool done = false;
1335   - while (!done) {
1336   - done = true;
  1334 + while (true) {
1337 1335 char ch;
1338 1336 if (m->file->read(&ch, 1) == 0) {
1339 1337 // A premature EOF here will result in some other problem that will get reported at
1340 1338 // another time.
1341   - } else if (ch == '\n') {
  1339 + break;
  1340 + }
  1341 + if (ch == '\n') {
1342 1342 // ready to read stream data
1343 1343 QTC::TC("qpdf", "QPDF stream with NL only");
1344   - } else if (ch == '\r') {
  1344 + break;
  1345 + }
  1346 + if (ch == '\r') {
1345 1347 // Read another character
1346 1348 if (m->file->read(&ch, 1) != 0) {
1347 1349 if (ch == '\n') {
... ... @@ -1356,15 +1358,16 @@ QPDF::readStream(QPDFObjectHandle& object, QPDFObjGen og, qpdf_offset_t offset)
1356 1358 m->file->tell(), "stream keyword followed by carriage return only"));
1357 1359 }
1358 1360 }
1359   - } else if (QUtil::is_space(ch)) {
1360   - warn(damagedPDF(m->file->tell(), "stream keyword followed by extraneous whitespace"));
1361   - done = false;
1362   - } else {
  1361 + break;
  1362 + }
  1363 + if (!QUtil::is_space(ch)) {
1363 1364 QTC::TC("qpdf", "QPDF stream without newline");
1364 1365 m->file->unreadCh(ch);
1365 1366 warn(damagedPDF(
1366 1367 m->file->tell(), "stream keyword not followed by proper line terminator"));
  1368 + break;
1367 1369 }
  1370 + warn(damagedPDF(m->file->tell(), "stream keyword followed by extraneous whitespace"));
1368 1371 }
1369 1372  
1370 1373 // Must get offset before accessing any additional objects since resolving a previously
... ...