summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rdoc/parser/c.rb1
-rw-r--r--test/rdoc/test_rdoc_parser_c.rb13
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/rdoc/parser/c.rb b/lib/rdoc/parser/c.rb
index 183538d54b..425ea11f63 100644
--- a/lib/rdoc/parser/c.rb
+++ b/lib/rdoc/parser/c.rb
@@ -217,6 +217,7 @@ class RDoc::Parser::C < RDoc::Parser
def deduplicate_call_seq
@methods.each do |var_name, functions|
class_name = @known_classes[var_name]
+ next unless class_name
class_obj = find_class var_name, class_name
functions.each_value do |method_names|
diff --git a/test/rdoc/test_rdoc_parser_c.rb b/test/rdoc/test_rdoc_parser_c.rb
index b8bdbca7fd..3d30d767df 100644
--- a/test/rdoc/test_rdoc_parser_c.rb
+++ b/test/rdoc/test_rdoc_parser_c.rb
@@ -1630,6 +1630,19 @@ Init_IO(void) {
assert read_method.singleton
end
+ def test_define_method_dynamically
+ content = <<-EOF
+void
+Init_foo(void)
+{
+ rb_define_singleton_method(obj, "foo", foo, -1);
+}
+ EOF
+
+ klass = util_get_class content, 'obj'
+ assert_nil klass
+ end
+
def test_define_method_with_prototype
content = <<-EOF
static VALUE rb_io_s_read(int, VALUE*, VALUE);