*プレビュー表示後、衝突を検出できなくなることがある [#v1771587] -ページ: BugTrack -投稿者: [[くさかべ]] -優先順位: 重要 -状態: 完了 -カテゴリー: 本体バグ -投稿日: 2004-05-28 (金) 00:18:23 -バージョン: 1.4.3 **メッセージ [#n6afaf57] プレビュー表示後、衝突を検出できなくなることがあります -再現 +ページ名はなんでもいいので"wiki"とだけ書いて、ページを作成する。 +作成したページを編集するウィンドウを2個開く。~ (この時、ページのHTMLソースを見てhiddenのdigestの値がf97581f30de2b54d6d34330630b44657になってることを確認する) +片方のWindowで"wiki"を"wiki2"にして、直ぐ「ページの更新」ボタンを押し、ページを書き換える。 +もう片方のWindowで"wiki"を"wiki3"にして、「プレビュー」 ボタンを押し、プレビュー画面から「ページの更新」ボタンを押すと、衝突検出の画面が表示されずに、ページを上書きしてしまう。~ (プレビュー時、ページのHTMLソースを見てhiddenのdigestの値がbbd593b29af1d6a066fceb9893ee193aに変わっていることを確認する) --"wiki"ではなく、"pukiwiki"という文字列で同じことをやると衝突が検出されます。 -原因 --html.php:135行目の比較式にバグがあるため??~ "997581f30de2b54d6d34330630b44657" == 0は偽だが、~ "f97581f30de2b54d6d34330630b44657" == 0は真になる。 http://jp.php.net/manual/ja/language.types.string.php#language.types.string.conversion --md5の値から考えると40%くらいの確率で発生するようです。 -パッチ --↓これで直ったように見えます。 --- html.php.org 2004-05-27 23:36:35.000000000 +0900 +++ html.php 2004-05-28 00:12:48.000000000 +0900 @@ -132,7 +132,7 @@ $refer = $template = $addtag = $add_top = ''; - if ($digest == 0) { + if ($digest === 0) { $digest = md5(join('',get_source($page))); } ---- -「プレビュー」→「更新」の間に別の誰かがページを更新した場合、気付かずに上書きしてしまう可能性がある、ということです。パッチを当てて様子をみていますが、いまのところ問題は起きていません。 -- [[くさかべ]] &new{2004-06-06 (日) 06:17:42}; -1.4.4でも修正されていないため、優先順位を一つ上げて"重要"としておきます。1.4.4用の差分をおいておきます。 -- [[Ratbeta]] &new{2004-09-20 (月) 10:08:36}; --- html.php 2004-08-07 00:41:41.000000000 +0900 +++ html.php 2004-09-20 14:00:58.262364800 +0900 @@ -132,7 +132,7 @@ $refer = $template = $addtag = $add_top = ''; - if ($digest == 0) { + if ($digest === 0) { $digest = md5(join('',get_source($page))); } - 完了にしときます。[[BugTrack2/59]] にて修正済。 -- [[にぶんのに]] &new{2006-01-17 (火) 02:45:29}; -- [[cvs:lib/html.php]] (1.31) #comment //#comment