[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:4511] try_window_ip and dirty window matrix.



堀口です. BTSが使えるようになるまでの備忘録..

 1.99a6 で全角半角変換を多用しているとかなり頻繁に assertion で落
ちるので追い詰めたら以下のようになりました.

 これの修正は 2.00b1 のブランチ(xdisp.c)に加えています.

再現方法:

Meadow -q して以下を実行
====
(set-language-environment "Japanese")
(mw32-ime-initialize)
(define-key global-map "\C-]" 'hoga)
(defun hoge (from to)
  (interactive "r")
    (goto-char from)
    (while (< (point) to)
      (insert-string "?")
      (delete-char 1)))

====

そしてたとえば *Scratch* なんかに

??????????????????????

 とかいて行頭から行末1文字を残してリージョンを設定して C-] とする
といい確率で症状が出ます.

  中を見ると xdisp.c:11905 で matrix の行末がバッファの最終点の後
ろにある状態になっているようです.

 これを呼び出している redisplay_window:10198 に来たときに 
current_matrix_up_to_date_p == 0 なときがあって, このときに症状が
出ることがあることがわかったのでそういう時は呼ばないようにしたと
ころ症状が出なくなりました.

 ちなみにここでは上の症状が出るとき以外の状況でも結構 matrix が 
ditry な状態で try_window_id が呼ばれていることがあったようです.
(運で動いていただけなのかわかっていやっていたのかは不明ですが)

-- 
ほりぐちきょうたろう