gbranden pushed a commit to branch master
in repository groff.
commit 873873ce3c293fa06bbd4257edc3ac4b361cf32e
Author: G. Branden Robinson <[email protected]>
AuthorDate: Thu Jul 10 19:01:56 2025 -0500
[troff]: Slightly refactor escape arg reading.
* src/roff/troff/input.cpp (read_long_escape_parameters): Slightly
refactor. Test for an empty argument (or argument sequence) earlier,
before worrying about whether the input buffer just populated is still
the stack-allocated one or was relocated to the heap. This is to
facilitate a simplification of input buffer management.
---
ChangeLog | 9 +++++++++
src/roff/troff/input.cpp | 14 +++++++-------
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 7c3179a14..e97d3d0e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2025-07-10 G. Branden Robinson <[email protected]>
+
+ * src/roff/troff/input.cpp (read_long_escape_parameters):
+ Slightly refactor. Test for an empty argument (or argument
+ sequence) earlier, before worrying about whether the input
+ buffer just populated is still the stack-allocated one or was
+ relocated to the heap. This is to facilitate a simplification
+ of input buffer management.
+
2025-07-10 G. Branden Robinson <[email protected]>
* src/roff/troff/input.cpp (read_rest_of_line_as_argument):
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index 61597922d..d2a72ffa1 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -1034,16 +1034,16 @@ static symbol read_long_escape_parameters(read_mode
mode)
buf[i++] = c;
}
buf[i] = 0;
+ if (i == 0) {
+ if (mode != ALLOW_EMPTY)
+ // XXX: `.device \[]` passes through as-is but `\X \[]` doesn't,
+ // landing here. Implement almost-but-not-quite-copy-mode?
+ copy_mode_error("empty escape sequence argument in copy mode");
+ return EMPTY_SYMBOL;
+ }
if (c == ' ')
have_multiple_params = true;
if (buf == abuf) {
- if (i == 0) {
- if (mode != ALLOW_EMPTY)
- // XXX: `.device \[]` passes through as-is but `\X \[]` doesn't,
- // landing here. Implement almost-but-not-quite-copy-mode?
- copy_mode_error("empty escape sequence argument in copy mode");
- return EMPTY_SYMBOL;
- }
return symbol(abuf);
}
else {
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit