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