ascii85: ignore whitespace between ~ and > (fixes #973)

This commit is contained in:
Jay Berkenbilt 2023-09-03 13:56:02 -04:00
parent 27980894bd
commit 806922f643
3 changed files with 21 additions and 11 deletions

View File

@ -1,5 +1,8 @@
2023-09-03 Jay Berkenbilt <ejb@ql.org> 2023-09-03 Jay Berkenbilt <ejb@ql.org>
* ascii85 parser: ignore spaces everywhere including between ~
and >. Fixes #973.
* Bug fix: with --pages, if one of the external files had warnings * Bug fix: with --pages, if one of the external files had warnings
but the main file did not, the warning was previously not taken but the main file did not, the warning was previously not taken
into consideration when determining the exit status. into consideration when determining the exit status.

View File

@ -19,6 +19,17 @@ Pl_ASCII85Decoder::write(unsigned char const* buf, size_t len)
return; return;
} }
for (size_t i = 0; i < len; ++i) { for (size_t i = 0; i < len; ++i) {
switch (buf[i]) {
case ' ':
case '\f':
case '\v':
case '\t':
case '\r':
case '\n':
QTC::TC("libtests", "Pl_ASCII85Decoder ignore space");
// ignore whitespace
continue;
}
if (eod > 1) { if (eod > 1) {
break; break;
} else if (eod == 1) { } else if (eod == 1) {
@ -30,16 +41,6 @@ Pl_ASCII85Decoder::write(unsigned char const* buf, size_t len)
} }
} else { } else {
switch (buf[i]) { switch (buf[i]) {
case ' ':
case '\f':
case '\v':
case '\t':
case '\r':
case '\n':
QTC::TC("libtests", "Pl_ASCII85Decoder ignore space");
// ignore whitespace
break;
case '~': case '~':
eod = 1; eod = 1;
break; break;

View File

@ -20,4 +20,10 @@ $td->runtest("partial decode",
$td->EXIT_STATUS => 0}, $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES); $td->NORMALIZE_NEWLINES);
$td->report(2); $td->runtest("newline between ~ and >",
{$td->COMMAND => "echo '\@<5skEHbu7\$3~\n>' | ascii85"},
{$td->STRING => "asdfqwer\n",
$td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->report(3);