[Gauche-devel-jp] Re: gosh の開発で行き詰まった

アーカイブの一覧に戻る

Shiro Kawai shiro****@lava*****
2004年 7月 12日 (月) 06:36:33 JST


From: shelarcy <shela****@capel*****>
Subject: [Gauche-devel-jp] Re: gosh の開発で行き詰まった
Date: Mon, 12 Jul 2004 00:57:01 +0900

> しかし、それでは私が困るので書かせてもらいます。
> 
> --- gauche.h.1~	Sun Jul 11 11:01:37 2004
> +++ gauche.h	Mon Jul 12 00:41:07 2004
> @@ -1430,7 +1430,10 @@
> 
>   SCM_EXTERN ScmObj Scm_DefineReaderCtor(ScmObj symbol, ScmObj proc,
>                                          ScmObj finisher);
> -
> +
> +SCM_EXTERN ScmObj (*Scm_ReadUvectorHook)(ScmPort *port, const char *tag,
> +                              ScmReadContext *ctx);
> +
>   /*--------------------------------------------------------
>    * HASHTABLE
>    */

Scm_ReadUvectorHookがgauche.hに書いてないのは意味があります。
ちゃんとやるなら、gauche/read.hみたいな別ヘッダにわけることに
なると思います。

> > dl_win.c の方ですが、
> >
> > ......
> >
> > DWORD というのはきっと windows.h で typedef されてるものと仮定すると
> > 52 行めは auto 変数の初期化をしてる様に見えます。で初期値を作るのに
> > GetLastError () に変数 void を渡して...  えっ? void?!?!.... って予約語
> > じゃないのよ。
> > バグじゃないかな。
> >
> > diff -u -d -b -w -r1.3 dl_win.c
> > --- dl_win.c    5 Jul 2003 03:29:12 -0000       1.3
> > +++ dl_win.c    11 Jul 2004 14:38:27 -0000
> > @@ -49,9 +49,9 @@
> >   static const char *dl_error(void)
> >   {
> >       char buf[80], *p;
> > -    DWORD code = GetLastError(void);
> > +    DWORD code = GetLastError();
> >       sprintf(buf, "error code %d", code);
> > -    p = SCM_NEW_ATOMIC2(strlen(buf)+1, char *);
> > +    p = SCM_NEW_ATOMIC2(char *, strlen(buf)+1);
> >       strcpy(p, buf);
> >       return p;
> >   }

dl_winは書いたは書いたが今まで使ってなかったので。
これはdlopen()が無いプラットフォームのために書いたのですが、
実はgcの方でdlopen()を呼んでしまっているので意味が無かったのです。
gc.dllのビルドで問題が出ていないということは、WIN32_NATIVEでは
gcのdlopen()を呼ぶ箇所が#ifdef-outされてるのかもしれません。

それで思い出したのですが、最終的にはgc.dllをリネームするかlibgauche.dllと
マージする必要があります。gcのコンパイル時のオプションをGauche向けに
若干変えてあるので、別にコンパイルされたBoehm GCとぶつかると困るので。

--shiro




Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る