fold: tab after an 8 KiB buffer flush exceeds the requested width
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Inizia da src/uu/fold/src/fold.rs, leggendo maybe_flush_unbroken_output e il ramo della tabulazione in process_ascii_line. Riproduci il problema con il comando nel report, quindi aggiungi un test di regressione per 8192 caratteri a seguiti da una tabulazione e X. Il lavoro è completato quando fold -w8192 mette la tabulazione sulla riga successiva, in linea con l’output previsto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
fold can exceed the requested column width when a tab immediately follows an output-buffer flush. With 8192 a characters followed by a tab and X, fold -w8192 keeps the tab on the first line, making that line 8200 columns wide. GNU puts the tab on the next line.
Reproduced on Linux x86_64 (Debian 13), LC_ALL=C, with uutils 0.13.0 built from main at 824cdb27175eb644973254dee1eb58fc25088c83. Compared with GNU coreutils 9.12 using the reference package linked in CONTRIBUTING.md; GNU 9.7 gives the same expected result.
From the repository root:
cargo build --no-default-features --features fold
export LC_ALL=C LANG=C
python3 -c 'import sys; sys.stdout.buffer.write(b"a" * 8192 + b"\tX\n")' > fold-input
target/debug/coreutils fold -w8192 fold-input | tail -c 6 | od -An -t x1
Actual last six bytes:
61 61 09 0a 58 0a
Expected last six bytes (GNU):
61 61 0a 09 58 0a
In full, expected output is 8192 a characters followed by \n\tX\n; actual output is 8192 a characters followed by \t\nX\n. Both implementations exit 0 with no stderr. The same failure occurs with piped input and with 16384 a characters at -w16384. Adding -s avoids it for these inputs.
The cause appears to be the interaction between maybe_flush_unbroken_output, which clears the output buffer without resetting the column count, and the tab branch in process_ascii_line, which only folds if !ctx.output.is_empty(). After a flush, an empty buffer does not mean the current output line is empty, so the required fold is skipped.
- Lingua principale
- Rust
- Stelle
- 24.3k
- Fork
- 2.1k
- Merge medio
- 1g 21h
- PR unite (30g)
- 363
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di uutils/coreutils
-
ls: `--block-size=0` is accepted when `--si` comes laterForse già presa @Logic769 l’ha presa 2 giorni fa. Apertagood first issue U - ls
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
uutils/coreutils#15962 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
B - high priority U - tr
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
U - df
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
mv: a failed cross-device move always reports "Permission denied"Forse già presa @afnan-mojumder l’ha presa 1 giorno fa. ApertaU - mv
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di uutils/coreutils
Issue simili
-
r-bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
servo/rust-smallvec#844 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
farion1231/cc-switch#9122 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
lbjlaq/Antigravity-Manager#3801 ·
I maintainer di solito rispondono entro 1 giorno
-
LIMIT inputs are named MIN/MAX instead of the standard MN/MX, so LIMIT(MN := ...) does not resolveAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Published SDL drops input-field default values: a non-null field with a default renders as requiredAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno