* ext/dl/lib/dl/import.rb (handler): add a more helpful error message

when calling import_symbol or import_function without calling
  dlload.  Thanks nobu! [ruby-core:30996]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2010-07-05 23:38:35 +00:00
parent c27e0ebab6
commit ff10d93563
3 changed files with 21 additions and 2 deletions

View File

@ -1,3 +1,9 @@
Tue Jul 6 08:35:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/dl/lib/dl/import.rb (handler): add a more helpful error message
when calling import_symbol or import_function without calling
dlload. Thanks nobu! [ruby-core:30996]
Tue Jul 6 00:34:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
* vm.c (thread_free): free altstack to prevent memory leak. a patch

View File

@ -194,8 +194,12 @@ module DL
return ptr
end
def handler
@handler or raise "call dlload before importing symbols and functions"
end
def import_symbol(name)
addr = @handler.sym(name)
addr = handler.sym(name)
if( !addr )
raise(DLError, "cannot find the symbol: #{name}")
end
@ -203,7 +207,7 @@ module DL
end
def import_function(name, ctype, argtype, call_type = nil)
addr = @handler.sym(name)
addr = handler.sym(name)
if( !addr )
raise(DLError, "cannot find the function: #{name}()")
end

View File

@ -41,6 +41,15 @@ module DL
end
class TestImport < TestBase
def test_ensure_call_dlload
err = assert_raises(RuntimeError) do
Class.new do
extend DL::Importer
extern "void *strcpy(char*, char*)"
end
end
end
def test_malloc()
s1 = LIBC::Timeval.malloc()
s2 = LIBC::Timeval.malloc()