도구레지스트리.한선 — 파일스캔 버퍼바이트스캔 전환 (문자열풀 90% 함정 제거)
개요
/Users/ef/crowny-word/연결/도구레지스트리.한선의
파일스캔()이
읽기()로 도구/*.한선
전문을 문자열 적재 후
줄분할()이
글자(내용,i)를 전체 바이트수만큼 호출 — 호출 1회당
1글자 문자열핸들 생성 구조라, 65도메인 합계 ~127만 바이트 스캔 시 문자열풀(48만 캡)이
90%(432000/480000)까지 찼다(실측 경고 발생). 버퍼 기반 바이트 스캔으로 재작성해 제거.
무엇을 했는지
파일스캔()을 버퍼파일읽기(BUF_FILE_READ, opcode874) + 버퍼바이트읽기(BUF_GETBYTE,
opcode851) 바이트 스캔으로 전환. 개행(10)만 찾아 줄 경계를 세되, 줄 시작 7바이트를
"함수 " UTF-8 프리픽스([237,149,168,236,136,152,32])와 바이트 비교해 매치한 줄만
버퍼잘라+
버퍼문자열로 소형 문자열 1개 생성(비매치 줄은 문자열 생성 0). 조각버퍼는
즉시
버퍼해제(슬롯 128캡 회피).
- 잔여 함정 확인:
파일스캔만 고쳐도 도메인함수수/도메인카운트맵/레지스트리요약이
여전히
읽기()+줄분할()+분할()로 (작아진) PSV 레지스트리 파일을 문자별 누적concat
방식으로 3회 재스캔해 문자열풀 90% 경고가 재현됨 → 공용 헬퍼
줄분할()/
분할() 자체를
문자열버퍼()+
버퍼바이트읽기 방식으로 재작성(줄/필드 경계당 1문자열만 생성, 문자별
누적
현재=현재+c 패턴 제거).
- 함정 발견:
코드값(c)는 1인자 전용 특수구문(내부적으로 인덱스 0을 자동 첨부) —
코드값(구분, 0)처럼 2인자로 호출하면 파싱 에러(
) 기대, ',' 발견). 1인자
코드값(구분)로
수정.
- 함정 발견 #2:
확인(문자열리터럴, 중첩함수호출, 기대값) 형태에서 중첩호출 체인이
깊어지면(버퍼바이트스캔처럼 다단 함수콜) "이름" 문자열 인자가 손상되어
PASS: 0으로
출력됨(수치 판정 자체는 정확, 라벨만 오염). 해당 시험 5건을 "결과를 임시변수에 먼저
담고 확인()엔 변수만 넘기는" 기존 파일 관례로 리팩터해 해결(누산+함수 인라인 금지
패턴과 동일 계열의 새로운 사례 — 가드레일에 추가 검토 필요).
- 실측 발견: 재스캔 결과가 기존 PSV(1635행)와 달리 1639행(+4)으로 나옴. 원인 추적
결과 구버전이 실제로 존재하는 함수 4개(렌더명령생성.한선의 파이프이스케이프/
파이프언이스케이프, 편집연산.한선의 레코드이스케이프/레코드역이스케이프)를 누락시켰던
것으로 확인(구현 결함 소산으로 추정, grep으로 소스 실존 확인). 신버전이 더 정확하므로
테스트 기준선을 1639로 갱신.
검증
- 컴파일:
hanseonc_high 성공, 경고 없음.
- 실행:
crownyc run 23/23 PASS (기존 20건 유지 + 1635행 동일성 목적의 신규 assert 1건
→ 1639행 확정 assert로 정정 + 관련 보강 assert들).
- 문자열 핸들 경고: 수정 전 90%(432000/480000) 경고 실측 → 수정 후 동일 실행에서 경고
0회(전체 출력에
[STR] 라인 없음, exit=0). 반복 실행 2회 모두 재현.
- 하위 연동 회귀:
/Users/ef/crowny-word/연결/워드셀통합.한선(도구레지스트리.psv를
임계값 기반으로 읽는 연결완전성검사 포함) 22/22 PASS 유지 확인.
- PSV 산출물:
/Users/ef/crowny-word/데이터/도구레지스트리.psv 1639행·65도메인(유니크).
관련 파일
/Users/ef/crowny-word/연결/도구레지스트리.한선 (수정본)
/Users/ef/crowny-word/데이터/도구레지스트리.psv (재생성됨, 1639행)
/Users/ef/crowny-word/연결/워드셀통합.한선 (회귀 검증만, 미수정)
- 학습DB:
파일스캔_버퍼바이트스캔 intent 등록
잔여 이슈
- "확인(literal, 중첩함수호출, 기대)" 패턴에서 중첩호출이 깊을 때 literal 인자가 손상되는
VM 함정은 이번 세션에서 국소 회피(임시변수 분리)만 했고 근본 원인(프레임/스택 처리)은
미조사 — 재발 시
hanseonc_high.c의 지역변수 프레임 오프셋(
frame_offset, add_var)
경로 조사 필요. 가드레일 템플릿에 신규 함정으로 추가 검토 권장.