[Momonga-users.ja:00056] Re: ruby-newt


keitaです。
お返事ありがとうございます。

On Sun, 01 Sep 2002 22:51:41 +0900
Kenta MURATA <muraken2@xxxxxxxxx> wrote:

> むらけんです.
> 
> In message <20020831065419.79d8bffe.keita@xxxxxxxxxx> at Sat, 31 Aug 2002 06:54:19 +0900,
> keita yamaguchi <keita@xxxxxxxxxx> wrote:
> > 実際のところ、どうなんでしょう?
> 
> 別物です.

うーん、やっぱりそうなんですね。
これを踏まえて再度質問になりますが、
ruby-newtはなぜ新規に実装されたんでしょう?
純粋な興味からお聞きしますがその辺なにか理由があるのでしょうか。

また、これは希望ですけど、やはりRAAには登録して頂いておいた方が
色々と便利だなぁと思うのでいかがでしょう。
現在ruby-newtのソースはモモンガのCVSから取得するしかないわけで
これじゃちょっと他の人にポインタも示しづらいし、
Ruby/Newtと間違っちゃいそうだし。

以上ですが、質問とお願いだけではアレなので、
ついでにruby-newt-0.3.4のパッチをつくってみました。
newtListboxGetSelectionがNULLを返した場合とnewtPopWindowを呼んだ場合に
segmentation fault を起こすのを防ぐためのものです。


diff -cr ruby-newt-0.3.4.orig/newt.c ruby-newt-0.3.4/newt.c
*** ruby-newt-0.3.4.orig/newt.c	2002-04-24 20:33:24.000000000 +0900
--- ruby-newt-0.3.4/newt.c	2002-09-02 10:11:35.000000000 +0900
***************
*** 58,63 ****
--- 58,65 ----
    struct newtExitStruct es;
  } sForm;
  
+ static struct Window * currentWindow = NULL;
+ 
  static ID id_cb;
  static ID id_cbd;
  static ID id_pairs;
***************
*** 364,369 ****
--- 366,373 ----
  static VALUE rb_newt_PopWindow (obj)
       VALUE obj;
  {
+   if(!currentWindow)
+     return Qnil;
    newtPopWindow ();
    return Qnil;
  }
***************
*** 1051,1056 ****
--- 1055,1062 ----
  
    Data_Get_Struct (self, struct newtComponent_struct, l);
    p = (VALUE *)newtListboxGetSelection (l, &n);
+   if (!p)
+     return Qnil;
    ary = rb_ary_new ();
    rb_ary_push (ary, INT2FIX (n));
    for (i = 0; i < n; i ++)


---
Name: 山口 慶太 (keita yamaguchi)
Mail: keita@xxxxxxxxxx
URL : http://kyomu.info/