summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-09-09 14:25:56 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-09-09 14:25:56 +0000
commit83a827ac9be0249471b23ee56980bc33a542a0fa (patch)
tree0fb9267177d477b00bb78ee7f331f45071885046
parenteb0c31b1adaa23051b952b3c0de0640a5283afd4 (diff)
* vm.c (vm_backtrace_each): skip allocator frames which have no
name. [ruby-core:32231] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rwxr-xr-xtest/digest/test_digest.rb7
-rw-r--r--vm.c3
3 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b077ba57f6..335f56005d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): skip allocator frames which have no
+ name. [ruby-core:32231]
+
Thu Sep 9 22:39:08 2010 Tanaka Akira <akr@fsij.org>
* ext/pathname/pathname.c (path_size): Pathname#size translated from
diff --git a/test/digest/test_digest.rb b/test/digest/test_digest.rb
index 9f95afa1de..e35047e979 100755
--- a/test/digest/test_digest.rb
+++ b/test/digest/test_digest.rb
@@ -125,4 +125,11 @@ module TestDigest
Data2 => "12a053384a9c0c88e405a06c27dcf49ada62eb2b",
}
end if defined?(Digest::RMD160)
+
+ class TestBase < Test::Unit::TestCase
+ def test_base
+ bug3810 = '[ruby-core:32231]'
+ assert_raise(NotImplementedError, bug3810) {Digest::Base.new}
+ end
+ end
end
diff --git a/vm.c b/vm.c
index 5d249e584e..898bee8613 100644
--- a/vm.c
+++ b/vm.c
@@ -741,7 +741,8 @@ vm_backtrace_each(rb_thread_t *th, int lev, void (*init)(void *), rb_backtrace_i
id = cfp->me->def->original_id;
else
id = cfp->me->called_id;
- if ((*iter)(arg, file, line_no, rb_id2str(id))) break;
+ if (id != ID_ALLOCATOR && (*iter)(arg, file, line_no, rb_id2str(id)))
+ break;
}
cfp = RUBY_VM_NEXT_CONTROL_FRAME(cfp);
}