apply_patch drops the BOM when line 1 is replaced, and write_file rewrites CRLF and BOM files as LF without a BOM
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
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- tooling
Direzione di ricerca
Inizia con applyHunks in src/main/tools/apply_patch.ts e write_file in src/main/tools/files.ts, poi leggi i test di regressione indicati nell’issue: apply_patch.test.ts e tools.test.ts. Controlla come vengono gestiti BOM e terminatori di riga per i file esistenti. Il lavoro è concluso quando la sostituzione della prima riga conserva il BOM e la sovrascrittura di un file con CRLF e BOM conserva entrambi, e i casi di regressione passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Found in the Oct 11 audit (at c5f5641). Follow-up to #246.
Where: src/main/tools/apply_patch.ts:133-157 (applyHunks); src/main/tools/files.ts:229-242 (write_file).
Cause:
- The BOM is part of line 1's text.
normalizeLoosetrims it, so-Write-Host …matches\uFEFFWrite-Host …, and the replacement comes entirely from the+line. The #246 fix keeps the BOM only when line 1 is a context line. write_filewritesBuffer.from(content)as given; unlikeapplyEditandapplyHunksit keeps neither line endings nor the BOM.
Reproduction (confirmed on Windows):
b.ps1=\uFEFFWrite-Host "héllo"\r\nline2\r\n, a patch replacing line 1 →Write-Host "hällo"\r\nline2\r\n(BOM gone).- Overwriting a BOM+CRLF file with
write_file→ LF only, no BOM.
Impact: Windows PowerShell 5.1 reads a .ps1 without a BOM as ANSI, so non-ASCII text becomes mojibake when the script runs; CRLF files show as entirely changed in diffs.
Fix: in applyHunks, add the BOM back when the original had one and the result does not. In write_file, when overwriting an existing file, convert to detectEol(before) and keep its BOM.
Regression test: "first line replaced in a BOM file" in apply_patch.test.ts; a CRLF+BOM overwrite in tools.test.ts.
- Lingua principale
- TypeScript
- Stelle
- 2
- Fork
- 2
- Merge medio
- 5h 28m
- PR unite (30g)
- 24
Preparare l'ambiente
- 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 PierrunoYT/patch
-
Claude Code chats: tool calls made inside Claude Code subagents leave cards that end as "(stopped)"Apertabug priority: low severity: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
PierrunoYT/patch#289 ·
I maintainer di solito rispondono entro 1 giorno
-
priority: medium security severity: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
PierrunoYT/patch#283 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement priority: medium security severity: medium
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
PierrunoYT/patch#294 ·
I maintainer di solito rispondono entro 1 giorno
-
priority: low security severity: low
Difficoltà 4/5 1-2 giorni Idoneità per principianti 38/100
PierrunoYT/patch#293 ·
I maintainer di solito rispondono entro 1 giorno
-
priority: low security severity: low
Difficoltà 3/5 1-2 giorni Idoneità per principianti 67/100
PierrunoYT/patch#292 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di PierrunoYT/patch
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: [A11y] Missing accessible name on icon-only standalone links (WCAG 2.1 SC 2.4.4, 4.1.2)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
jaegertracing/jaeger-ui#4596 ·
I maintainer di solito rispondono entro 1 giorno
-
area:tui enhancement platform:macos
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
anthropics/claude-code#101490 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
netlify/netlify-mcp#75 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno