[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:6294] Meadow-2.20 の現状
- X-ml-count: 6299
- Subject: Re: [MD:6294] Meadow-2.20 の現状
- From: "M.Fujii" <boochang@xxxxxxxxxxxx>
- Date: Sat, 12 Feb 2005 21:13:32 +0900 (JST)
- X-mailer: Mew version 4.1 on Emacs 22.0.50 / Mule 5.0 (SAKAKI)
藤井です。
From: MIYOSHI Masanori <miyoshi@xxxxxxxxxxx>
Subject: [MD:6294] Meadow-2.20 の現状
Date: Sat, 12 Feb 2005 10:39:21 +0900
> Emacs-21.4 のリリースを受けて、Emacs CVS HEAD のバージョンが
> 21.3.50 から 22.0.50 に変更になりました。
> おそらく、Emacs-22.1 としてリリースされるのだと思います。
>
> このように Emacs CVS HEAD で大きな変更があったので、2005/2/10時点
> のスナップショット
> http://svn.meadowy.org/Meadow/tags/emacs-22_0_50-20050210/
> を保存し、これを当面のターゲットとして Meadow-2.20-dev に取り込む
> ことにしたいと思います。
>
> elisp 部分については、一部を除きマージを完了しました。
subversion で Meadow 2.20-dev の最新コードを取得し、cygwin でビルドする
と、起動後フレームも表示されることなく終了します。
GDB でバックトレースをとると以下のようになります。
------------------------------------------------------------
(gdb) where
#0 0x01138954 in MW32_update_end (f=0x1c10c00) at mw32term.c:761
#1 0x01081f12 in update_end (f=0x1c10c00) at term.c:532
#2 0x01075976 in Fredraw_frame (frame=1103170560) at dispnew.c:3346
#3 0x0101b608 in Ffuncall (nargs=2, args=0x82f6a0) at eval.c:2778
#4 0x010f1f62 in Fbyte_code (bytestr=829190820, vector=1098803252, maxdepth=2)
at bytecode.c:713
#5 0x0101ba59 in funcall_lambda (fun=1098803220, nargs=1, arg_vector=0x82f7c4)
at eval.c:2965
#6 0x0101b4dd in Ffuncall (nargs=2, args=0x82f7c0) at eval.c:2835
(略)
(gdb) xbacktrace
"redraw-frame"
"set-terminal-coding-system"
"set-display-table-and-terminal-coding-system"
"set-locale-environment"
"command-line"
"normal-top-level"
------------------------------------------------------------
command-line() 内で set-locale-environment() が呼ばれている段階では
MW32 のフレームが作成されていないので、MW32_update_end@xxxxxxxxxx が呼
ばれている段階で落ちる模様です。
末尾のパッチのように、冒頭でのチェックを追加すると落ちなくなります。
で、どうしてこれまで起動時に MW32_update_end で落ちることがなかったかを
検討してみました。以前のソースを確認したところ、Meadow ではこれまで
command-line() 内での set-locale-enviroment() の呼び出し部分がコメント
になっていました。このため、MW32 のフレームが作成される前での
MW32_update_end の呼び出しがなかったのだと考えられます。
なぜ、set-locale-enviroment の呼び出しがコメントになっているかの理由が
分からないので何とも言えないのですが、MW32_update_end を修正する対応よ
りも、set-locale-enviroment を今までどおりコメントにする対応の方が良い
のかもしれません。
command-line() を修正すべきか、MW32_update_end を修正すべきか、あるいは
その両方が良いのかは、私には分かりませんが、とりあえずご報告まで。
Index: src/mw32term.c
===================================================================
--- src/mw32term.c (revision 3609)
+++ src/mw32term.c (working copy)
@@ -757,6 +757,9 @@
static void
MW32_update_end (struct frame *f)
{
+ if (!FRAME_MW32_P (f))
+ return;
+
/* Mouse highlight may be displayed again. */
FRAME_MW32_DISPLAY_INFO (f)->mouse_face_defer = 0;
}
--
藤井 正行 / Masayuki FUJII ( boochang@xxxxxxxxxxxx )