summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-02-04 16:05:40 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-02-04 16:05:40 +0000
commit034540dbc1f761221c1977465b13b00b4f558108 (patch)
treef2f20b4467573142a8f2fc676384eda1eb7881b3
parent113de0083e58282e1a411e8364951c98c3dddaaf (diff)
* vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
CoreDataFromValue() because we need type check. Otherwise, type mismatch can cause segmentation fault crash. [ruby-core:35086] [Ruby 1.9-Bug#4367] * vm.c (thread_data_type): remove static. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--vm.c2
-rw-r--r--vm_core.h4
3 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 8c25b92c94..a20eb74a86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Sat Feb 5 00:59:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
+ CoreDataFromValue() because we need type check. Otherwise,
+ type mismatch can cause segmentation fault crash.
+ [ruby-core:35086] [Ruby 1.9-Bug#4367]
+
+ * vm.c (thread_data_type): remove static.
+
Fri Feb 4 19:14:27 2011 Tanaka Akira <akr@fsij.org>
* enc/trans/utf8_mac.trans: parenthesize macro arguments.
diff --git a/vm.c b/vm.c
index 130ca64160..1dbf2ecabb 100644
--- a/vm.c
+++ b/vm.c
@@ -1756,7 +1756,7 @@ thread_memsize(const void *ptr)
}
}
-static const rb_data_type_t thread_data_type = {
+const rb_data_type_t thread_data_type = {
"VM/thread",
{
rb_thread_mark,
diff --git a/vm_core.h b/vm_core.h
index a0b60b5074..f20dfb02f3 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -347,8 +347,10 @@ typedef struct rb_block_struct {
VALUE proc;
} rb_block_t;
+extern const rb_data_type_t thread_data_type;
+
#define GetThreadPtr(obj, ptr) \
- GetCoreDataFromValue((obj), rb_thread_t, (ptr))
+ TypedData_Get_Struct((obj), rb_thread_t, &thread_data_type, (ptr))
enum rb_thread_status {
THREAD_TO_KILL,