gbranden pushed a commit to branch master in repository groff. commit 10280b55755a6199e3c0b0f6a5a0381799601b4a Author: G. Branden Robinson <g.branden.robin...@gmail.com> AuthorDate: Thu Jul 10 10:54:39 2025 -0500
[eqn]: Stop validating non-intepreted input. ...for character codes acceptable to GNU troff. * src/preproc/eqn/main.cpp (read_line): Revise fix for Savannah #67285; stop tracking whether a *roff comment has been seen in the input, and thus stop throwing an invalid character diagnostic under any circumstance (within this function; "lex.cpp" continues to, when interpreting eqn input proper). The idea is that eqn, like grn, pic, refer, soelim, and tbl, is a _filter_. Its job is to transform only _part_ of its input stream and leave the rest unaltered. * src/preproc/eqn/tests/diagnostics-report-correct-line-numbers.sh: Comment out now-inapplicable checks. --- ChangeLog | 15 +++++++++++++++ src/preproc/eqn/main.cpp | 11 ----------- .../tests/diagnostics-report-correct-line-numbers.sh | 20 +++++++++++--------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index a66f2e72f..ffa0059b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2025-07-10 G. Branden Robinson <g.branden.robin...@gmail.com> + + * src/preproc/eqn/main.cpp (read_line): Revise fix for Savannah + #67285; stop tracking whether a *roff comment has been seen in + the input, and thus stop throwing an invalid character + diagnostic under any circumstance (within this function; + "lex.cpp" continues to, when interpreting eqn input proper). + The idea is that eqn, like grn, pic, refer, soelim, and tbl, is + a _filter_. Its job is to transform only _part_ of its input + stream and leave the rest unaltered. + + * src/preproc/eqn/tests/\ + diagnostics-report-correct-line-numbers.sh: Comment out now- + inapplicable checks. + 2025-07-10 G. Branden Robinson <g.branden.robin...@gmail.com> * tmac/de.tmac (_td_format) [@R]: Fix German date localization diff --git a/src/preproc/eqn/main.cpp b/src/preproc/eqn/main.cpp index f09d18c5c..e93ee4dd1 100644 --- a/src/preproc/eqn/main.cpp +++ b/src/preproc/eqn/main.cpp @@ -85,19 +85,8 @@ static bool read_line(FILE *fp, string *p) { p->clear(); int c = -1; - bool seen_backslash = false; - bool in_comment = false; while ((c = getc(fp)) != EOF) { - // Don't throw invalid input errors inside *roff comments. - if (seen_backslash && (('"' == c) || ('#' == c))) - in_comment = true; - if ('\\' == c) - seen_backslash = true; - else - seen_backslash = false; *p += char(c); - if (is_invalid_input_char(c) && !in_comment) - error("invalid input (%1)", input_char_description(c)); if (c == '\n') break; } diff --git a/src/preproc/eqn/tests/diagnostics-report-correct-line-numbers.sh b/src/preproc/eqn/tests/diagnostics-report-correct-line-numbers.sh index b9deb60a3..e1f4904a1 100755 --- a/src/preproc/eqn/tests/diagnostics-report-correct-line-numbers.sh +++ b/src/preproc/eqn/tests/diagnostics-report-correct-line-numbers.sh @@ -56,15 +56,17 @@ input='.EQ error=$(printf '%s\n' "$input" | "$eqn" 2>&1 > /dev/null) echo "$error" | grep -Eq '^[^:]+:[^:]+:2: fatal' || wail -echo "checking for correct line number in invalid input character" \ - "diagnostic" >&2 -error=$(printf '.EQ\nx\n.EN\n\200\n' | "$eqn" 2>&1 > /dev/null) -echo "$error" | grep -Eq '^[^:]+:[^:]+:4: error' || wail - -echo "checking for correct line number in invalid input character" \ - "diagnostic when 'lf' request used beforehand" >&2 -error=$(printf '.EQ\nx\n.EN\n.lf 99\n\200\n' | "$eqn" 2>&1 > /dev/null) -echo "$error" | grep -Eq '^[^:]+:[^:]+:99: error' || wail +# Per Savannah #67285, eqn no longer emits this diagnostic. +# +#echo "checking for correct line number in invalid input character" \ +# "diagnostic" >&2 +#error=$(printf '.EQ\nx\n.EN\n\200\n' | "$eqn" 2>&1 > /dev/null) +#echo "$error" | grep -Eq '^[^:]+:[^:]+:4: error' || wail +# +#echo "checking for correct line number in invalid input character" \ +# "diagnostic when 'lf' request used beforehand" >&2 +#error=$(printf '.EQ\nx\n.EN\n.lf 99\n\200\n' | "$eqn" 2>&1 > /dev/null) +#echo "$error" | grep -Eq '^[^:]+:[^:]+:99: error' || wail echo "checking for correct line number when invalid 'lf' request used" \ >&2 _______________________________________________ groff-commit mailing list groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit