diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ext/dl/sym.c | 3 |
2 files changed, 7 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Wed Dec 22 08:34:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * ext/dl/sym.c (rb_dlsym_initialize): extract internal pointers after + all argument conversion. fixed: [ruby-dev:25271] + Wed Dec 22 00:08:01 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp> * lib/soap/*, test/soap/*, sample/soap/authheader/*: eval cleanup. diff --git a/ext/dl/sym.c b/ext/dl/sym.c index c2f5434c61..59a618496f 100644 --- a/ext/dl/sym.c +++ b/ext/dl/sym.c @@ -154,8 +154,9 @@ rb_dlsym_initialize(int argc, VALUE argv[], VALUE self) rb_scan_args(argc, argv, "12", &addr, &name, &type); saddr = (void*)(DLNUM2LONG(rb_Integer(addr))); - sname = NIL_P(name) ? NULL : StringValuePtr(name); + if (!NIL_P(name)) StringValue(name); stype = NIL_P(type) ? NULL : StringValuePtr(type); + sname = NIL_P(name) ? NULL : RSTRING(name)->ptr; if( saddr ){ Data_Get_Struct(self, struct sym_data, data); |