diff options
author | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-05 23:38:35 +0000 |
---|---|---|
committer | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-05 23:38:35 +0000 |
commit | ff10d93563e740d02a7a9815df9bd7b7d4b6d3d5 (patch) | |
tree | b912b3d1fe7e47b3bcbfa4efc673604c2376792d | |
parent | c27e0ebab690d2a6c709a5a2c83af2d7a4968492 (diff) | |
download | ruby-ff10d93563e740d02a7a9815df9bd7b7d4b6d3d5.tar.gz |
* 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
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ext/dl/lib/dl/import.rb | 8 | ||||
-rw-r--r-- | test/dl/test_import.rb | 9 |
3 files changed, 21 insertions, 2 deletions
@@ -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 diff --git a/ext/dl/lib/dl/import.rb b/ext/dl/lib/dl/import.rb index fd23bc9676..f9e8faf5f0 100644 --- a/ext/dl/lib/dl/import.rb +++ b/ext/dl/lib/dl/import.rb @@ -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 diff --git a/test/dl/test_import.rb b/test/dl/test_import.rb index 56a417f9ab..64cbf53fbc 100644 --- a/test/dl/test_import.rb +++ b/test/dl/test_import.rb @@ -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() |