summaryrefslogtreecommitdiff
path: root/ext/dl/lib/dl
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-28 12:13:24 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-28 12:13:24 +0000
commit28001c849d8823c8bac79b9e53705cf247b99e65 (patch)
tree43f5dcab38628051ea6a1b1ccea7411bff878be3 /ext/dl/lib/dl
parent00cb692395f97ee180342be2f768e8e49b42c2f9 (diff)
* ext/dl/lib/dl/import.rb (DL::Importer#extern): adds filename and
line number to module_eval'ing for readability of backtrace. (DL::Importer#bind): ditto. * ext/dl/lib/dl/struct.rb (DL::CStructBuilder#create): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dl/lib/dl')
-rw-r--r--ext/dl/lib/dl/import.rb16
-rw-r--r--ext/dl/lib/dl/struct.rb2
2 files changed, 15 insertions, 3 deletions
diff --git a/ext/dl/lib/dl/import.rb b/ext/dl/lib/dl/import.rb
index f6fb35944d..aab0a38d52 100644
--- a/ext/dl/lib/dl/import.rb
+++ b/ext/dl/lib/dl/import.rb
@@ -119,7 +119,13 @@ module DL
name = symname.gsub(/@.+/,'')
@func_map[name] = f
# define_method(name){|*args,&block| f.call(*args,&block)}
- module_eval(<<-EOS)
+ begin
+ /^(.+?):(\d+)/ =~ caller.first
+ file, line = $1, $2.to_i
+ rescue
+ file, line = __FILE__, __LINE__+3
+ end
+ module_eval(<<-EOS, file, line)
def #{name}(*args, &block)
@func_map['#{name}'].call(*args,&block)
end
@@ -143,7 +149,13 @@ module DL
end
@func_map[name] = f
#define_method(name){|*args,&block| f.call(*args,&block)}
- module_eval(<<-EOS)
+ begin
+ /^(.+?):(\d+)/ =~ caller.first
+ file, line = $1, $2.to_i
+ rescue
+ file, line = __FILE__, __LINE__+3
+ end
+ module_eval(<<-EOS, file, line)
def #{name}(*args,&block)
@func_map['#{name}'].call(*args,&block)
end
diff --git a/ext/dl/lib/dl/struct.rb b/ext/dl/lib/dl/struct.rb
index 4272b3960c..dc116f3be5 100644
--- a/ext/dl/lib/dl/struct.rb
+++ b/ext/dl/lib/dl/struct.rb
@@ -29,7 +29,7 @@ module DL
}
}
size = klass.entity_class.size(types)
- new_class.module_eval(<<-EOS)
+ new_class.module_eval(<<-EOS, __FILE__, __LINE__+1)
def new_class.size()
#{size}
end