Theppitak's blog

My personal blog.

18 กรกฎาคม 2551

Thai XIM and Conversion Bug on UTF-8 Locale

อีกบั๊กหนึ่งที่ทีมสุริยันจับได้ คือ XIM ไทยไม่รับสระบน-ล่างใน UTF-8 locale ซึ่งมีสาเหตุมาจากโค้ดของผมใน Xlib ที่ทำไว้ตั้งแต่สมัยที่ยังไม่มี UTF-8 locale เกิดขึ้น โดยไปทึกทักเอาว่า ถ้า string conversion callback ที่ไปอ่าน text input buffer ของ app มานั้น ได้ string มาในรูป multi-byte ก็แปลว่าเป็น TIS-620 เสมอ ซึ่งใช้ไม่ได้กับ UTF-8 locale

ตอนนั้น หลังจากทำแพตช์สำหรับสุริยันไปแล้ว ก็ file Freedesktop #12759 เสนอแพตช์ไว้ ตอนนี้จะกลับมาตามอีกครั้ง ก็พบว่าสามารถเขียนแพตช์ให้สะอาดกว่ามาไล่เช็ก codeset ของโลแคลปัจจุบัน เลยเสนอ แพตช์ใหม่ ไปแทนที่แพตช์เดิม

ยังต้องรอรีวิวเพื่อ check-in ต่อไปครับ แต่โพสต์ไว้เผื่อใครจะเอาไปใช้หรือช่วยทดสอบในระหว่างนี้

ก่อนหน้าจะ file bug นั้น ก็ได้ file GNOME #484653 เพื่อแก้ให้ imxim immodule ของ GTK+ ส่ง surrounding text กลับให้ XIM ในรูป wide char แทน multi-byte ไปพลาง แต่ปรากฏว่า การใช้ wide char เองก็มีปัญหาของมัน เนื่องจากขนาด wide char เองก็เริ่มไม่คงที่ คือเป็น multi-word ในบางแพลตฟอร์มที่ใช้ wide char 16 บิต โดย encode ในรูป UTF-16 แทนที่จะเป็น UCS ตรง ๆ หลังจากคิดตลบสอง ก็คิดว่าแก้ที่ XIM เองให้อ่าน multi-byte ให้ถูกต้อง น่าจะตรงประเด็นกว่า แล้วก็ใช้ multi-byte เหมือนเดิมต่อไป

สรุปบั๊กใน Xlib ที่ผ่านมา:

เพิ่งได้ check-in แค่หนึ่งในสี่แพตช์ครับ

ป้ายกำกับ:

0 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem