Skip to content

fix: 라운드35 후속 — 남겨 둔 4건 확정·수정 (JPEG 상한 우회 · RTF 병합 30초 멈춤) - #61

Merged
centwon merged 2 commits into
mainfrom
fix/round35-leftovers
Sep 30, 2026
Merged

centwon merged 2 commits into
mainfrom
fix/round35-leftovers

Conversation

@centwon

@centwon centwon commented Sep 30, 2026

Copy link
Copy Markdown
Owner

요약

라운드35에서 "남긴 것"으로 적어 둔 후보를 실측했다. 4건은 결함으로 확정해 고쳤고, 1건은 기각했다.

후보 실측 수정
JPEG 헤더 스캔 채움 바이트(FF FF) 뒤의 60000×50000 SOF를 (0, 0)으로 읽음 → 1억 픽셀 상한을 우회 채움 바이트와 길이 필드가 없는 마커를 건너뜀
RTF 세로 병합 병합 2만 개(1.4 MB, 200×200)가 29.6초 걸림 1×1 칸만 있는 범위에서는 MergeCells가 격자 전체 스캔을 건너뜀 → 0.38초(상한 끝 500×500은 2.7초)
병합 앵커가 중첩 표로 시작 병합한 글자가 중첩 표의 첫 셀로 들어감 앵커 셀 자신의 첫 문단에 붙임
RTF 글꼴명의 ; 글꼴 표 항목이 중간에서 끊김 이름에서 ;를 뺌
구분선 Indent의 JSON 누락 메뉴로 바꿀 수 없고 렌더링도 이 값을 쓰지 않음 → 보이는 차이 없음 기각

빠른 경로의 근거는 이렇다. 기존 병합이 범위에 걸치려면 범위 안에 가려진 칸이나 1보다 큰 앵커가 있어야 한다. 그래서 1×1 칸만 있는 범위는 어떤 병합에도 걸칠 수 없다. 이 전제도 테스트로 지킨다(병합 옆에 있는 1×1 범위는 그 병합을 흡수하지 않고, 병합에 닿는 범위는 연쇄로 확장된다).

PR #60(문서)의 커밋을 포함한다. 같은 로드맵 줄을 갱신하므로, 두 PR 중 어느 쪽이 먼저 머지돼도 충돌이 없다.

검증

  • 빌드 경고 0 · unit 1293 + render 55 그린 · 퍼즈 500시드 1회 그린(병합 축 포함)
  • 수정마다 되돌려 해당 테스트가 빨개지는지 확인했고(6건), 빠른 경로를 "항상 켬"으로 바꿨을 때 전제 테스트가 빨개지는 것도 확인했다.
  • 시간 단정은 CI 기기 편차를 고려해 10초로 느슨하게 잡았다. 잡아야 할 것은 제곱 시간이라 이 여유로 충분하다.

🤖 Generated with Claude Code

centwon and others added 2 commits October 1, 2026 06:44
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- JPEG 채움 바이트(FF FF)·길이 없는 마커를 세그먼트 길이로 읽어 프레임 헤더를 건너뜀
  -> 크기 (0,0) -> 1억 픽셀 상한 우회. 채움 바이트와 길이 없는 마커를 건너뜀
- RTF 세로 병합 2만 개(1.4 MB)에 29.6 s 멈춤: MergeCells가 매번 격자 전체 스캔.
  1x1 칸만인 범위는 기존 병합에 걸칠 수 없으므로 스캔 생략 -> 0.38 s (500x500 상한 끝 2.7 s)
- 앵커 셀이 중첩 표로 시작하면 병합한 글자가 그 표 안으로(TableCell.Para가 내려감)
- RTF 글꼴명의 ';'가 글꼴 표 항목을 끊음 -> 이름에서 뺌
- 기각: 구분선 Indent의 JSON 누락(메뉴로 못 바꾸고 렌더링도 안 씀)

반증: 수정마다 되돌려 빨강, 빠른 경로의 전제(병합 옆 1x1 범위·병합에 닿는 범위의 확장)도 반증.
unit 1293 + render 55, 퍼즈 500시드 그린.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@centwon
centwon enabled auto-merge (squash) September 30, 2026 22:00
@centwon
centwon merged commit 0d945d1 into main Sep 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant