Ticket #305 (new 不具合)

Opened 2 years ago

Last modified 2 years ago

meadow3が異常終了する

Reported by: anonymous Assigned to:
Priority: major Milestone:
Component: その他/一般 Version: 3.00 (開発中)
Keywords: Cc:

Description

Meadow3で下記のように設定して

(1)フレームが2つ以上あるときはフレームの消去
(2)最後のフレームの場合はMeadowを終了
としたいと思っています.

ですが,2つ以上フレームがあるときに実行するとMeadow3が異常終了してしまいます.

(defun delete-frame-or-mule (arg)
  "If any other frame do not exists, call save-buffers-kill-emacs"
  (interactive "p")
  (setq frame (selected-frame))
  (other-frame 1)
  (cond ((eq frame (selected-frame))
         (save-buffers-kill-emacs 1))
        (t
         (delete-frame frame))
)
  )

Attachments

del_frame.patch (2.7 kB) - added by anonymous on 06/10/06 01:25:32.
パッチ

Change History

06/09/06 11:42:17 changed by shirai

落ちるのを確認しました。トレースは以下のようになっていて、x_destroy_window で消した Frame に対して update_cursor_in_window_tree() をして死んでいるようです。

update_cursor_in_window_tree() line 21706
x_update_cursor(frame * 0x03b6a400, int 0x00000001) line 21726 + 46 bytes
mw32_process_main_thread_message(tagMSG * 0x0114502d {msg=0x894804c4 wp=0x5e5f0c46 lp=0xc31cc483}) line 4214 + 12 bytes
x_destroy_window(frame * 0x03b6a400) line 6033
Fdelete_frame(int 0x01066afc, int 0x43b6a400) line 1322 + 6 bytes
Feval(int) line 2255 + 17 bytes

と、ここまではわかったんですが、ぼくには直せないのでどなたかよろしく (__)

P.S.

  (cond ((eq frame (selected-frame))
         (save-buffers-kill-emacs 1))
        (t
	 (sit-for 0)
         (delete-frame frame))))

とすると落ちませんので、これでしのいでおいてくださいませ。

06/10/06 01:24:39 changed by anonymous

とりあえずパッチを作ってみました(del_frame.patch)。

x_update_cursorでf->root_windowがQnilでないことのチェックと、mw32_clear_mouseを呼ぶ際にframeがnullでないことのチェックを追加しています。 私の環境では、片方だけでは効果はありませんでした。

06/10/06 01:25:32 changed by anonymous

  • attachment del_frame.patch added.

パッチ

06/10/06 08:58:36 changed by miyoshi

ありがとうございます。 ちょっとだけ変更してr4092に取り込みました。

なお、WM_NCMOUSEMOVE の変更の必要性がよく分からなかったので、 この部分は取り込んでいません。


Add/Change #305 (meadow3が異常終了する)




Change Properties
Action