Mono CP949 코덱 무려 2년 묵은 버그 수정

2003년 10월에 Mono에 CP949
코덱을 넣고서는 C# 문법도 다 까먹고 그냥 무관심하게 있었는데,
얼마 전에 어떤 한국분이 영어로 잘 안 돌아간다고 메일을 보내셔서
2년만에 오래간만에 C# 코드를 좀 보게 되었습니다.

아직 디버거에 익숙하지 않아서 그냥 System.Console.WriteLine 으로
열심히 돌아다녀보니까, 으하하하. copy & paste 버그를 하나
발견했습니다. Mono CJK 코덱들은 공유 dll에 들어가 있는 정적 바이트
배열 데이터를 가지고 디코드를 하는데, 한국어 코드페이지인 CP949는 데이터를 쓰는 영역이
KSX1001 영역, UHC 레벨 1 영역, UHC 레벨 2 영역 이렇게 3가지로
나뉘어 있습니다. 그런데, UHC 레벨 2 영역이 첫 번째 바이트가
0xA1로 시작하는 것으로 돼 있는데, 코드 안에서는 레벨 1 것을
붙여넣기 해서 수정하다보니 0x81에서 시작하는 계산식이
그대로 남아있어서;; -ㅇ-;;;

아마 그때 테스트해 봤을 때는 인코딩 하는 것은 열심히 다
테스트를 했는데, 디코드는 확장완성형 부분은 글자가 터미널에서
안 써져서 귀찮아서 테스트를 안 했더니만 이렇게 돼 버렸네요;;
흐흐.. 그래서 방금 패치를 제출했습니다.
간단한 문제이니까 Mono 다음 버전에는 아무래도 고쳐지겠죠?

참, 그리고 11월 1일에 지미안의 에노모토 아쯔시씨가 CP949에서
EUC-KR도 제대로 지원하게 수정했더군요~ 다음 버전엔 EUC-KR도
쓸 수 있게 되었습니다. 🙂

5 thoughts on “Mono CP949 코덱 무려 2년 묵은 버그 수정”

  1. 오오.. 2년만에 보는 소스를 순식간에;

    아참 포스팅에 대한 버그보고를 하자면, 아마 그 일본인 개발자의 이름은 에노모토 아쯔시일거에요. 일본사람들이 영어식으로 쓸때는 항상 이름을 앞에 빼고 성을 뒤로 돌리지만 한국식으로는 성이 앞이니까요.

  2. 코덱 개발자는 다른 나라 언어를 조금이라도 읽고 쓸줄 알아야 겠네요. 일본 사람이 한국어 코덱을 고친다든가.. 그쵸?

  3. 에이 왜그러세요~ 일본어 몇년 배우고 중국어도 한학기 배웠어도 말도 잘 모르고 코덱같은것도 못만드는 사람도 있는데~ ….. ( ”);;;

Comments are closed.