2012-09-01 161 views
1

我只是偶然發現了一個有趣的bug ...仍然試圖找出究竟發生了什麼。也許你可以幫忙。相同的腳本,不同的行爲

首先,上下文。我目前正在建立另一個人到html轉換器(出於某些原因,我不會在這裏激勵,但我需要它)。

因此,看看下面的截圖(請參閱鏈接),更確切地說在概述點。看到?在上殼上,我有& lt;和& gt;,即轉義了html。 雖然在下面的外殼我有<和>直接。

但是正如你所看到的(或者我真的需要看玻璃?),命令man 2 semget | webmanner兩邊是一樣的,which webmanner也是如此。這兩者大致在同一時刻執行,而不對腳本進行修改。

[哎呀,不能發佈圖片只是還沒有......這裏談到的鏈接]

http://aspyct.org/media/webmanner-bug.png

但低於殼是較舊的(打開前約1小時)。較新的shell全部打印出來& lt;。所以我的第一個猜測是,它以某種方式緩存了文件的舊索引節點,或舊的塊或其他內容。

因此,我修改了腳本部分,在開始時和結束時,打印不同的消息。而且,令人驚訝的是,兩個終端都顯示了這條消息。但仍然,& lt;和<。

我很困惑...如何解釋這種行爲?我正在使用OSX 10.8(Mountain Lion)

編輯:好的,有一個很大的區別:下面的shell使用紅寶石1.9.3,而上面的是1.8.7。這兩個版本之間的字符串處理是否有任何已知的區別?

回答

2

你使用的是htmlentities庫嗎?如果是的話這個Bug修正可能是你所看到的

的Ruby 1.9.3有所不同行爲1.9.2: 編碼的結果不是ASCII即使只包含ASCII字符。 這可能並不重要,但這種更改會使兩個版本產生 的結果相同。

https://github.com/threedaymonk/htmlentities/commit/46dafc959de03a02d0c1705bef7f1b157b350025

+0

嗯,這是它!在此期間我修正了這個錯誤,但這完全是同一個問題。 Thx爲你的幫助:) – aspyct

相關問題