From 8d25618ea575611e5b1cbe48f4ac48532f2e32be Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Wed, 30 Sep 2026 17:21:09 -0300 Subject: An addr, dot or limit pair out of order or past the text is refused as the address form is, not clamped `#5,#2` and `#2,#99` were refused (addresses out of order, address out of range), but the pair form `5 2` became 5..5 and `2 99` became 2..end, silently a different range from the one asked for. A pair is now checked the same way: past the text is out of range, and an end before its start is out of order. fs.md says so. Co-Authored-By: Claude Opus 5.5 --- docs/fs.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/fs.md b/docs/fs.md index 337e31eb..0ec88876 100644 --- a/docs/fs.md +++ b/docs/fs.md @@ -447,7 +447,9 @@ warns once. `addr`, `dot` and `limit` read the pair of byte offsets they take, so copying one onto another (`cp $p/addr $p/dot`) is acme's `dot=addr`. A -write is a pair or an address expression. `addr` names where `data` reads +write is a pair or an address expression; a pair is checked as an address +is, `addresses out of order` (`5 2`) or `address out of range` (past the +text), never clamped. `addr` names where `data` reads (to the end of text) and the range `xdata` reads; `dot` is the selection (moving it scrolls the pane there); `limit` bounds the end of a forward search and reads empty until set. Truncating `dot` empties it, truncating -- cgit v1.3