顯示具有 中文路徑 標籤的文章。 顯示所有文章
顯示具有 中文路徑 標籤的文章。 顯示所有文章

2008年7月13日 星期日

Firefox Portable 視窗炸彈調查報告

Firefox Portable 的中文路徑怎麼又壞了?之前,還在想說不想管 Firefox Portable 的更新,把主力放到 Feuerfuchs Portable Wir 身上。不過前一陣子因為需要用 Firefox Portable,我懶得自己打包,所以我直接用 John T. Haller 前輩所打包的 Firefox Portable 3,結果很精彩地看到視窗炸彈,這下可好! OTZ

我本來還以為問題是新加入的程式碼所產生,不過看來看去,看不出所以然,我還有想過是不是二個 Launcher 的 Race Condition,不過似乎也不是。在看程式碼的途中陸陸續續找到一些小錯,不過都無傷大雅。

我迷失在一行又一行 Code 之間,毫無頭緒,也找不出 Solution。我一直在幽暗的 Source 裡面排徊,忖度著:這些程式碼之中一定有一些晦澀難以理解的錯誤。突然,有一道光照向我......,我似乎找到答案了。

接下來是一陣頭暈目眩。時光回到了二年前,這種感覺好熟悉。不,不可能,之前 Firefox Portable 的中文路徑不是早就修好了嗎?但是,擺在我眼前的事實讓我不得不接受。咳...,我發出了一聲長嘆。接下來又是一陣頭暈目眩,伴隨著一大堆髒話。

(消音)
!# $ %@ #$^$%&~ #~%$ #%^#@% #$^$%&$ #%^$#!@ $~@!$# @#%$#@^ @%#$@ %^$ #%$#@%^%^@#$% $@#% @#$ %@#$%@$#% @#%@#% $@# %@#$%@$ # %$@#% $

結果,我發現 Firefox Portable 3.0 的問題在於:GetParameters 函式又出事了,GetParameters 函式又被改成有問題的版本了(殘念)。不過我必需把責任釐清,這一次的問題出在 NSIS Team,和 John T. Haller 前輩無關,不過為了盡快修正,我已經發 Bug Report 和 Workaround 到 PortableApps。

問題是這樣的,不知道為什麼 NSIS 放在標準函式庫的 GetParameters 函式是有問題的版本,這個函式在處理 ASCII 字元的時候都可以處理得很好,不過處理中日韓表意字元的時候,就會出狀況。

而 John T. Haller 前輩依據 NSIS Manual 的建議,將原本自己寫得 GetParameters 改用標準函式庫中的版本,不過標準函式庫中的版本有問題,GetParameters 函式的回傳值根本就不對,所以 Firefox Portable 一直無法進入「授權頁、階段管理設定頁」,Firefox Portable 因而會一直自我執行(即視窗炸彈)。


我無言了!為何外國人寫得程式處理起中文常常會有問題呢?