summaryrefslogtreecommitdiff
path: root/ext/dl/sym.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-21 23:35:11 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-21 23:35:11 +0000
commitbf48e2286965c53e1d083113c7d2b4d4eb9a0f13 (patch)
tree676343b4c9954419be5d5f8e3567301949cfa74d /ext/dl/sym.c
parente537aaba91ac5ad8a554b155afbcc2d0efb50f66 (diff)
* ext/dl/sym.c (rb_dlsym_initialize): extract internal pointers after
all argument conversion. fixed: [ruby-dev:25271] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dl/sym.c')
-rw-r--r--ext/dl/sym.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/dl/sym.c b/ext/dl/sym.c
index 751b2be39f..7151d3c04e 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);