[#16732] sharing sub-regexp — Tanaka Akira <akr@...17n.org>

Oniguruma についてひとつ要望があります。

51 messages 2002/04/03
[#16744] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/04

Tanaka Akiraさんの<hvopu1hxfyd.fsf@coulee.a02.aist.go.jp>から

[#16746] Re: sharing sub-regexp — matz@... (Yukihiro Matsumoto) 2002/04/04

まつもと ゆきひろです

[#16753] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/04

In article <1017890618.302241.17865.nullmailer@ev.netlab.jp>,

[#16755] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/05

Tanaka Akiraさんの<hvo7knn93ug.fsf@coulee.a02.aist.go.jp>から

[#16756] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/05

In article <20020405044506.D4784349@helium.ruby-lang.org>,

[#16822] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/10

Tanaka Akiraさんの<hvopu1e4omy.fsf@coulee.a02.aist.go.jp>から

[#16831] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/10

In article <20020410025054.C8DF0915@helium.ruby-lang.org>,

[#16863] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/11

In article <hvor8lnchak.fsf@coulee.a02.aist.go.jp>,

[#16877] Re: sharing sub-regexp — Shugo Maeda <shugo@...> 2002/04/12

前田です。

[#16887] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/12

In article <87pu15z80q.wl@studly.priv.netlab.jp>,

[#16909] Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/15

前田です。

[#16912] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/15

In article <87g01x1e6m.wl@studly.priv.netlab.jp>,

[#16931] Re: Regexp#to_s — Kazuhiro NISHIYAMA <zn@...> 2002/04/16

西山和広です。

[#16934] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/16

In article <20020416180631.988E.ZN@mbf.nifty.com>,

[#16938] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/17

前田です。

[#16939] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/17

In article <87u1qaj0xe.wl@studly.priv.netlab.jp>,

[#16947] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/18

前田です。

[#16950] Re: Regexp#to_s — matz@... (Yukihiro Matsumoto) 2002/04/18

まつもと ゆきひろです

[#16951] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/18

In article <1019116103.420173.12691.nullmailer@picachu.netlab.jp>,

[#16960] Re: Regexp#to_s — nobu.nakada@... 2002/04/18

なかだです。

[#16761] StringIO — tadf@...

ふなばです。

43 messages 2002/04/05
[#16786] Re: StringIO — nobu.nakada@... 2002/04/08

なかだです。

[#16802] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#16803] Re: StringIO — nobu.nakada@... 2002/04/09

なかだです。

[#16804] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#17221] Re: StringIO — Wakou Aoyama <wakou@...> 2002/05/30

青山です。

[#17230] Re: StringIO — matz@... (Yukihiro Matsumoto) 2002/05/30

まつもと ゆきひろです

[#17231] Re: StringIO — Tanaka Akira <akr@...17n.org> 2002/05/30

In article <1022740594.117106.6073.nullmailer@picachu.netlab.jp>,

[#17233] IO#size — Shugo Maeda <shugo@...> 2002/05/30

前田です。

[#17239] Re: IO#size — Tanaka Akira <akr@...17n.org> 2002/05/31

In article <874rgqdt3x.wl@studly.priv.netlab.jp>,

[#17253] Re: IO#size — Wakou Aoyama <wakou@...> 2002/05/31

青山です。

[#16790] Ruby Shim — "Akinori MUSHA" <knu@...>

 1.7 early access kit という仮称で提案した構想ですが、先ほど

27 messages 2002/04/08
[#16796] Re: Ruby Shim — Koji Arai <JCA02266@...> 2002/04/08

新井です。

[#16833] math.c 1.10 — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

23 messages 2002/04/11
[#16834] Re: math.c 1.10 — matz@... (Yukihiro Matsumoto) 2002/04/11

まつもと ゆきひろです

[#16869] Makefiles dependency — nobu.nakada@...

なかだです。

17 messages 2002/04/12

[ruby-dev:16729] Re: ライブラリ拡大計画

From: nobu.nakada@...
Date: 2002-04-03 08:11:43 UTC
List: ruby-dev #16729
なかだです。

At Tue, 2 Apr 2002 20:11:41 +0900,
Takaaki Tateishi wrote:
> ext/dlを追加しました.

-fno-defer-pop -fno-omit-frame-pointerは、Windowsだけではなくて
gccなら必要です。それにvoid*の演算はgcc拡張なので他の処理系では
コンパイルが通りません。

testのほうでは、DOSやWindowsではオープンしているファイルは削除
できないため、途中でエラーになります。また、dl.defを使ってるの
はWindows用だと思いますが、mswin32版というかnmakeでは``は使えま
せん。その他VPATHの指定が特殊だったり特殊マクロが暗黙のルールで
ないと使えなかったりと、nmakeで通そうと思うとかなり苦しいです。

# ext/extmk.rb.inから(というかlib/mkmf.rbも含めて)見直したほう
# が楽かも知れないくらい。


Index: ext/dl/depend
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/depend,v
retrieving revision 1.2
diff -u -2 -p -r1.2 depend
--- ext/dl/depend	2002/04/02 12:06:23	1.2
+++ ext/dl/depend	2002/04/03 08:06:24
@@ -2,4 +2,5 @@ CLEANFILES = test/test.o
 DISTCLEANFILES = call.func callback.func cbtable.func dlconfig.rb dlconfig.h \
                  test/libtest.so test/*~ *~ mkmf.log
+LDSHARED_TEST = $(LDSHARED) $(LDFLAGS) test/test.o -o test/libtest.so $(LOCAL_LIBS)
 
 libtest.so: test/libtest.so
@@ -7,9 +8,9 @@ libtest.so: test/libtest.so
 test/libtest.so: test/test.o test/libtest.def
 	$(RUBY) -rftools -e 'ARGV.each{|d|File.mkpath(File.dirname(d))}' $@
-	`$(RUBY) -e 'print ARGV.join(" ").gsub(/dl\\.def/,"test/libtest.def")' $(LDSHARED)` $(LDFLAGS) test/test.o -o test/libtest.so
+	$(LDSHARED_TEST:dl.def=test/libtest.def)
 
-test/test.o: test/test.c
+test/test.o: $(srcdir)/test/test.c
 	@$(RUBY) -rftools -e 'File.mkpath(*ARGV)' test
-	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+	$(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/test/test.c -o $@
 
 test:: dl.so libtest.so .force
@@ -23,5 +24,5 @@ allclean: distclean
 	@rm -f $(CLEANFILES) $(DISTCLEANFILES)
 
-$(OBJS): dlconfig.h
+$(OBJS): ./dlconfig.h
 
 sym.o: call.func
@@ -29,15 +30,15 @@ sym.o: call.func
 dl.o: callback.func cbtable.func
 
-call.func: mkcall.rb dlconfig.rb
+call.func: $(srcdir)/mkcall.rb ./dlconfig.rb
 	@echo "Generating call.func"
-	@$(RUBY) $< > $@
+	@$(RUBY) $(srcdir)/mkcall.rb > $@
 
-callback.func: mkcallback.rb dlconfig.rb
+callback.func: $(srcdir)/mkcallback.rb ./dlconfig.rb
 	@echo "Generating callback.func"
-	@$(RUBY) $< > $@
+	@$(RUBY) $(srcdir)/mkcallback.rb > $@
 
-cbtable.func: mkcbtable.rb dlconfig.rb
+cbtable.func: $(srcdir)/mkcbtable.rb ./dlconfig.rb
 	@echo "Generating cbtable.func"
-	@$(RUBY) $< > $@
+	@$(RUBY) $(srcdir)/mkcbtable.rb > $@
 
 debug:
Index: ext/dl/dl.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/dl.c,v
retrieving revision 1.1
diff -u -2 -p -r1.1 dl.c
--- ext/dl/dl.c	2002/04/02 10:56:13	1.1
+++ ext/dl/dl.c	2002/04/03 04:19:04
@@ -324,5 +324,5 @@ c_parray(VALUE v, long *size)
       {
 	char *str, *src;
-	src = STR2CSTR(e);
+	src = StringValuePtr(e);
 	str = dlstrdup(src);
 	ary[i] = (void*)str;
@@ -414,5 +414,5 @@ rb_str_to_ptr(VALUE self)
   len = RSTRING(self)->len;
   ptr = (char*)dlmalloc(len + 1);
-  memcpy(ptr, STR2CSTR(self), len);
+  memcpy(ptr, RSTRING(self)->ptr, len);
   ptr[len] = '\0';
   return rb_dlptr_new((void*)ptr,len,dlfree);
@@ -428,5 +428,5 @@ rb_ary_to_ptr(int argc, VALUE argv[], VA
   switch( rb_scan_args(argc, argv, "01", &t) ){
   case 1:
-    ptr = rb_ary2cary(STR2CSTR(t)[0], self, &size);
+    ptr = rb_ary2cary(StringValuePtr(t)[0], self, &size);
     break;
   case 0:
@@ -473,5 +473,5 @@ rb_dl_strdup(VALUE self, VALUE str)
 
   str = rb_String(str);
-  return rb_dlptr_new(strdup(STR2CSTR(str)), RSTRING(str)->len, dlfree);
+  return rb_dlptr_new(strdup(StringValuePtr(str)), RSTRING(str)->len, dlfree);
 };
 
@@ -479,5 +479,5 @@ static VALUE
 rb_dl_sizeof(VALUE self, VALUE str)
 {
-  return INT2NUM(dlsizeof(STR2CSTR(str)));
+  return INT2NUM(dlsizeof(StringValuePtr(str)));
 };
 
@@ -491,5 +491,5 @@ rb_dl_callback_type(VALUE str)
 
   ftype = 0;
-  type = STR2CSTR(str);
+  type = StringValuePtr(str);
   len  = RSTRING(str)->len;
 
@@ -579,5 +579,5 @@ rb_dl_set_callback(int argc, VALUE argv[
     rb_hash_aset(entry, num, proc);
     snprintf(func_name, 1023, "rb_dl_func%d_%d", NUM2INT(key), NUM2INT(num));
-    return rb_dlsym_new(func, func_name, STR2CSTR(types));
+    return rb_dlsym_new(func, func_name, StringValuePtr(types));
   }
   else{
Index: ext/dl/dl.h
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/dl.h,v
retrieving revision 1.1
diff -u -2 -p -r1.1 dl.h
--- ext/dl/dl.h	2002/04/02 10:56:13	1.1
+++ ext/dl/dl.h	2002/04/03 04:19:04
@@ -204,5 +204,5 @@ typedef struct { char c; double x; } s_d
 
 #define DLALIGN(ptr,offset,align) {\
-  while( (((unsigned long)(ptr + offset)) % align) != 0 ) offset++;\
+  while( (((unsigned long)((char *)ptr + offset)) % align) != 0 ) offset++;\
 }
 
Index: ext/dl/extconf.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/extconf.rb,v
retrieving revision 1.1
diff -u -2 -p -r1.1 extconf.rb
--- ext/dl/extconf.rb	2002/04/02 10:56:13	1.1
+++ ext/dl/extconf.rb	2002/04/02 17:11:16
@@ -21,6 +21,5 @@ end
 ($CPPFLAGS || $CFLAGS) << " -I."
 
-case RUBY_PLATFORM  # from Win32API
-when /cygwin/,/mingw/
+if (Config::CONFIG['CC'] =~ /gcc/)  # from Win32API
   $CFLAGS << " -fno-defer-pop -fno-omit-frame-pointer"
 end
@@ -57,9 +56,9 @@ $with_type_voidp &= DLTYPE[VOIDP][:sym]
 $with_cbtype_voidp = DLTYPE[VOIDP][:cb]
 
-$with_type_char  = with_config("type-char")  ? true : false
-$with_type_short = with_config("type-short") ? true : false 
-$with_type_float = with_config("type-float") ? true : false
+$with_type_char  = enable_config("type-char", $with_type_char)
+$with_type_short = enable_config("type-short", $with_type_short)
+$with_type_float = enable_config("type-float", $with_type_float)
 
-$with_asm        = with_config("asm") ? true : $with_asm
+$with_asm        = enable_config("asm", $with_asm)
 
 args = with_config("args")
Index: ext/dl/handle.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/handle.c,v
retrieving revision 1.1
diff -u -2 -p -r1.1 handle.c
--- ext/dl/handle.c	2002/04/02 10:56:13	1.1
+++ ext/dl/handle.c	2002/04/03 04:19:04
@@ -39,9 +39,9 @@ rb_dlhandle_s_new(int argc, VALUE argv[]
   switch( rb_scan_args(argc, argv, "11", &lib, &flag) ){
   case 1:
-    clib = STR2CSTR(lib);
+    clib = StringValuePtr(lib);
     cflag = RTLD_LAZY | RTLD_GLOBAL;
     break;
   case 2:
-    clib = STR2CSTR(lib);
+    clib = StringValuePtr(lib);
     cflag = NUM2INT(flag);
     break;
@@ -135,6 +135,5 @@ rb_dlhandle_sym(int argc, VALUE argv[], 
 
   if( rb_scan_args(argc, argv, "11", &sym, &type) == 2 ){
-    Check_Type(type, T_STRING);
-    stype = STR2CSTR(type);
+    stype = StringValuePtr(type);
   }
   else{
@@ -150,6 +149,5 @@ rb_dlhandle_sym(int argc, VALUE argv[], 
   }
   else{
-    Check_Type(sym, T_STRING);
-    name = STR2CSTR(sym);
+    name = StringValuePtr(sym);
   };
 
Index: ext/dl/ptr.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/ptr.c,v
retrieving revision 1.1
diff -u -2 -p -r1.1 ptr.c
--- ext/dl/ptr.c	2002/04/02 10:56:13	1.1
+++ ext/dl/ptr.c	2002/04/03 04:19:04
@@ -150,5 +150,5 @@ rb_dlptr_s_new(int argc, VALUE argv[], V
   VALUE ptr, sym, obj, size;
   void *p = NULL;
-  void  (*f)() = NULL;
+  freefunc_t f = NULL;
   long s = 0;
 
@@ -182,5 +182,5 @@ rb_dlptr_s_alloc(int argc, VALUE argv[],
   VALUE size, sym, obj;
   int   s;
-  void  (*f)() = NULL;
+  freefunc_t f = NULL;
 
   switch( rb_scan_args(argc, argv, "11", &size, &sym) ){
@@ -320,9 +320,9 @@ rb_dlptr_to_array(int argc, VALUE argv[]
   switch( rb_scan_args(argc, argv, "11", &type, &size) ){
   case 2:
-    t = STR2CSTR(type)[0];
+    t = StringValuePtr(type)[0];
     n = NUM2INT(size);
     break;
   case 1:
-    t = STR2CSTR(type)[0];
+    t = StringValuePtr(type)[0];
     switch( t ){
     case 'C':
@@ -507,5 +507,5 @@ rb_dlptr_plus(VALUE self, VALUE other)
   size = RDLPTR(self)->size;
   num = DLNUM2LONG(other);
-  return rb_dlptr_new((void*)(ptr + num), size - num, 0);
+  return rb_dlptr_new((char *)ptr + num, size - num, 0);
 };
 
@@ -519,5 +519,5 @@ rb_dlptr_minus(VALUE self, VALUE other)
   size = RDLPTR(self)->size;
   num = DLNUM2LONG(other);
-  return rb_dlptr_new((void*)(ptr - num), size + num, 0);
+  return rb_dlptr_new((char *)ptr - num, size + num, 0);
 };
 
@@ -554,8 +554,7 @@ rb_dlptr_define_data_type(int argc, VALU
   };
 
-  Check_Type(data_type, T_FIXNUM);
-  Check_Type(type, T_STRING);
+  t = NUM2INT(data_type);
+  StringValue(type);
   Check_Type(rest, T_ARRAY);
-  t = FIX2INT(data_type);
   num = RARRAY(rest)->len;
   for( i=0; i<num; i++ ){
@@ -576,5 +575,5 @@ rb_dlptr_define_data_type(int argc, VALU
   data->ids  = (ID*)dlmalloc(sizeof(ID) * data->ids_num);
 
-  ctype = STR2CSTR(type);
+  ctype = StringValuePtr(type);
   for( i=0; i<num; i++ ){
     vid = rb_ary_entry(rest,i);
@@ -601,5 +600,5 @@ rb_dlptr_define_data_type(int argc, VALU
 
   if( !data->size )
-    data->size = dlsizeof(STR2CSTR(type));
+    data->size = dlsizeof(RSTRING(type)->ptr);
 
   return Qnil;
@@ -663,29 +662,29 @@ cary2ary(void *ptr, char t, int len)
     case 'I': case 'i':
       elem = INT2NUM(*((int*)ptr));
-      ptr += sizeof(int);
+      ptr = (char *)ptr + sizeof(int);
       break;
     case 'L': case 'l':
       elem = DLLONG2NUM(*((long*)ptr));
-      ptr += sizeof(long);
+      ptr = (char *)ptr + sizeof(long);
       break;
     case 'P': case 'p':
       elem = rb_dlptr_new(*((void**)ptr),0, 0);
-      ptr += sizeof(void*);
+      ptr = (char *)ptr + sizeof(void*);
       break;
     case 'F': case 'f':
       elem = rb_float_new(*((float*)ptr));
-      ptr += sizeof(float);
+      ptr = (char *)ptr + sizeof(float);
       break;
     case 'D': case 'd':
       elem = rb_float_new(*((float*)ptr));
-      ptr += sizeof(double);
+      ptr = (char *)ptr + sizeof(double);
       break;
     case 'C': case 'c':
       elem = INT2NUM(*((char*)ptr));
-      ptr += sizeof(char);
+      ptr = (char *)ptr + sizeof(char);
       break;
     case 'H': case 'h':
       elem = INT2NUM(*((short*)ptr));
-      ptr += sizeof(short);
+      ptr = (char *)ptr + sizeof(short);
     default:
       raise(rb_eDLTypeError, "unsupported type '%c'", t);
@@ -699,29 +698,29 @@ cary2ary(void *ptr, char t, int len)
     case 'I': case 'i':
       elem = INT2NUM(*((int*)ptr));
-      ptr += sizeof(int);
+      ptr = (char *)ptr + sizeof(int);
       break;
     case 'L': case 'l':
       elem = DLLONG2NUM(*((long*)ptr));
-      ptr += sizeof(long);
+      ptr = (char *)ptr + sizeof(long);
       break;
     case 'P': case 'p':
       elem = rb_dlptr_new(*((void**)ptr), 0, 0);
-      ptr += sizeof(void*);
+      ptr = (char *)ptr + sizeof(void*);
       break;
     case 'F': case 'f':
       elem = rb_float_new(*((float*)ptr));
-      ptr += sizeof(float);
+      ptr = (char *)ptr + sizeof(float);
       break;
     case 'D': case 'd':
       elem = rb_float_new(*((float*)ptr));
-      ptr += sizeof(double);
+      ptr = (char *)ptr + sizeof(double);
       break;
     case 'C': case 'c':
       elem = INT2NUM(*((char*)ptr));
-      ptr += sizeof(char);
+      ptr = (char *)ptr + sizeof(char);
       break;
     case 'H': case 'h':
       elem = INT2NUM(*((short*)ptr));
-      ptr += sizeof(short);
+      ptr = (char *)ptr + sizeof(short);
     default:
       raise(rb_eDLTypeError, "unsupported type '%c'", t);
@@ -758,7 +757,7 @@ rb_dlptr_aref(int argc, VALUE argv[], VA
   id = rb_to_id(key);
   Data_Get_Struct(self, struct ptr_data, data);
+  offset = 0;
   switch( data->ctype ){
   case DLPTR_CTYPE_STRUCT:
-    offset = 0;
     for( i=0; i < data->ids_num; i++ ){
       if( data->ids[i] == id ){
@@ -786,5 +785,5 @@ rb_dlptr_aref(int argc, VALUE argv[], VA
 	  raise(rb_eDLTypeError, "unsupported type '%c'", data->stype[i]);
 	};
-	return cary2ary(data->ptr + offset, data->stype[i], data->ssize[i]);
+	return cary2ary((char *)data->ptr + offset, data->stype[i], data->ssize[i]);
       };
       switch( data->stype[i] ){
@@ -825,5 +824,5 @@ rb_dlptr_aref(int argc, VALUE argv[], VA
     for( i=0; i < data->ids_num; i++ ){
       if( data->ids[i] == id ){
-	return cary2ary(data->ptr + offset, data->stype[i], data->ssize[i]);
+	return cary2ary((char *)data->ptr + offset, data->stype[i], data->ssize[i]);
       };
     };
@@ -873,8 +872,8 @@ rb_dlptr_aset(int argc, VALUE argv[], VA
     int len;
     
-    Check_Type(val, T_STRING);
+    StringValue(val);
     Data_Get_Struct(self, struct ptr_data, data);
     dst = (void*)((long)(data->ptr) + DLNUM2LONG(key));
-    src = STR2CSTR(val);
+    src = RSTRING(val)->ptr;
     if( num == Qnil ){
       len = RSTRING(val)->len;
@@ -923,5 +922,5 @@ rb_dlptr_aset(int argc, VALUE argv[], VA
 	};
 	memimg = ary2cary(data->stype[i], val, &memsize);
-	memcpy(data->ptr + offset, memimg, memsize);
+	memcpy((char *)data->ptr + offset, memimg, memsize);
 	return val;
       };
@@ -1008,8 +1007,8 @@ rb_dlptr_size(int argc, VALUE argv[], VA
   VALUE size;
 
-  switch( rb_scan_args(argc, argv, "01", &size) ){
-  case 0:
+  if( rb_scan_args(argc, argv, "01", &size) == 0){
     return DLLONG2NUM(RDLPTR(self)->size);
-  case 1:
+  }
+  else{
     RDLPTR(self)->size = DLNUM2LONG(size);
     return size;
Index: ext/dl/sym.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/sym.c,v
retrieving revision 1.1
diff -u -2 -p -r1.1 sym.c
--- ext/dl/sym.c	2002/04/02 10:56:13	1.1
+++ ext/dl/sym.c	2002/04/03 04:19:04
@@ -119,5 +119,5 @@ rb_dlsym2csym(VALUE val)
 {
   struct sym_data *data;
-  void (*func)();
+  freefunc_t func;
 
   if( rb_obj_is_kind_of(val, rb_cDLSymbol) ){
@@ -155,6 +155,6 @@ rb_dlsym_s_new(int argc, VALUE argv[], V
 
   saddr = (void*)(DLNUM2LONG(rb_Integer(addr)));
-  sname = (name == Qnil) ? NULL : STR2CSTR(name);
-  stype = (type == Qnil) ? NULL : STR2CSTR(type);
+  sname = NIL_P(name) ? NULL : StringValuePtr(name);
+  stype = NIL_P(type) ? NULL : StringValuePtr(type);
 
   val = rb_dlsym_new(saddr, sname, stype);
@@ -178,5 +178,5 @@ rb_s_dlsym_char2type(VALUE self, VALUE c
   const char *type;
 
-  type = char2type(STR2CSTR(ch)[0]);
+  type = char2type(StringValuePtr(ch)[0]);
 
   if (type == NULL)
@@ -271,5 +271,5 @@ rb_dlsym_inspect(VALUE self)
   snprintf(str, str_size - 1,
 	   "#<DL::Symbol:0x%x func=0x%x '%s'>",
-	   sym, sym->func, STR2CSTR(proto));
+	   sym, sym->func, StringValuePtr(proto));
   val = rb_tainted_str_new2(str);
   dlfree(str);
@@ -419,5 +419,5 @@ rb_dlsym_call(int argc, VALUE argv[], VA
       }
       else{
-	ANY2S(args[i]) = DLSTR(STR2CSTR(argv[i]));
+	ANY2S(args[i]) = DLSTR(StringValuePtr(argv[i]));
       };
       PUSH_P(ftype);
@@ -428,5 +428,5 @@ rb_dlsym_call(int argc, VALUE argv[], VA
       };
       ANY2S(args[i]) = DLSTR(dlmalloc(RSTRING(argv[i])->len + 1));
-      memcpy((char*)(ANY2S(args[i])), STR2CSTR(argv[i]), RSTRING(argv[i])->len + 1);
+      memcpy((char*)(ANY2S(args[i])), StringValuePtr(argv[i]), RSTRING(argv[i])->len + 1);
       dtypes[i] = 's';
       PUSH_P(ftype);
Index: ext/dl/test/test.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/test/test.c,v
retrieving revision 1.1
diff -u -2 -p -r1.1 test.c
--- ext/dl/test/test.c	2002/04/02 10:56:13	1.1
+++ ext/dl/test/test.c	2002/04/03 04:19:27
@@ -222,5 +222,6 @@ test_data_add(struct test_data *list, co
 
   data = (struct test_data *)malloc(sizeof(struct test_data));
-  strcpy(data->name, name);
+  memset(data->name, 0, 1024);
+  strncpy(data->name, name, 1024);
   data->next = list->next;
   list->next = data;
@@ -237,5 +238,5 @@ test_data_print(struct test_data *list)
 };
 
-struct data *
+struct test_data *
 test_data_aref(struct test_data *list, int i)
 {
Index: ext/dl/test/test.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/dl/test/test.rb,v
retrieving revision 1.1
diff -u -2 -p -r1.1 test.rb
--- ext/dl/test/test.rb	2002/04/02 10:56:13	1.1
+++ ext/dl/test/test.rb	2002/04/03 04:52:06
@@ -185,8 +185,10 @@ if( fp )
   debug r,rs
   assert("open,gets", :must, rs[0] == line)
+  ObjectSpace.define_finalizer(fp) {File.unlink("tmp.txt")}
+  fp = nil
 else
   assert("open,gets", :must, line == nil)
+  File.unlink("tmp.txt")
 end
-File.unlink("tmp.txt")
 
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread