summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-12 00:36:54 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-12 00:36:54 +0000
commite585523a2b60a69befc1562fd4c79cfa688bb197 (patch)
tree767c941787dfe02766290b092d930237d7c386b6 /ext
parent62b75bcb283ae38ef769084f88bf4fec352fdc34 (diff)
* ext/digest/digest.c (rb_digest_base_s_digest): add volatile to
protect temporary context object. [ruby-dev:27979] * ext/iconv/iconv.c (Init_iconv): rb_gc_register_address() should be called before actual variable initialization. [ruby-dev:27986] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/digest/digest.c4
-rw-r--r--ext/etc/etc.c4
-rw-r--r--ext/iconv/iconv.c2
-rw-r--r--ext/win32ole/win32ole.c4
4 files changed, 7 insertions, 7 deletions
diff --git a/ext/digest/digest.c b/ext/digest/digest.c
index 70f986327a..ead9da3c10 100644
--- a/ext/digest/digest.c
+++ b/ext/digest/digest.c
@@ -91,7 +91,7 @@ rb_digest_base_s_digest(klass, str)
void *pctx;
size_t len;
unsigned char *digest;
- VALUE obj = rb_digest_base_alloc(klass);
+ volatile VALUE obj = rb_digest_base_alloc(klass);
algo = get_digest_base_metadata(klass);
Data_Get_Struct(obj, void, pctx);
@@ -120,7 +120,7 @@ rb_digest_base_s_hexdigest(klass, str)
void *pctx;
size_t len;
unsigned char *hexdigest;
- VALUE obj = rb_digest_base_alloc(klass);
+ volatile VALUE obj = rb_digest_base_alloc(klass);
algo = get_digest_base_metadata(klass);
Data_Get_Struct(obj, void, pctx);
diff --git a/ext/etc/etc.c b/ext/etc/etc.c
index 94196e066a..ac95735549 100644
--- a/ext/etc/etc.c
+++ b/ext/etc/etc.c
@@ -521,6 +521,7 @@ Init_etc()
rb_define_module_function(mEtc, "endgrent", etc_endgrent, 0);
rb_define_module_function(mEtc, "getgrent", etc_getgrent, 0);
+ rb_global_variable(&sPasswd);
sPasswd = rb_struct_define("Passwd",
"name", "passwd", "uid", "gid",
#ifdef HAVE_ST_PW_GECOS
@@ -546,14 +547,13 @@ Init_etc()
"expire",
#endif
NULL);
- rb_global_variable(&sPasswd);
#ifdef HAVE_GETGRENT
+ rb_global_variable(&sGroup);
sGroup = rb_struct_define("Group", "name",
#ifdef HAVE_ST_GR_PASSWD
"passwd",
#endif
"gid", "mem", NULL);
- rb_global_variable(&sGroup);
#endif
}
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index 98bef9610c..1c9d607de9 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -903,8 +903,8 @@ Init_iconv _((void))
rb_success = rb_intern("success");
rb_failed = rb_intern("failed");
- charset_map = rb_hash_new();
rb_gc_register_address(&charset_map);
+ charset_map = rb_hash_new();
rb_define_singleton_method(rb_cIconv, "charset_map", charset_map_get, 0);
}
diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c
index 875ac578a8..3f795c1647 100644
--- a/ext/win32ole/win32ole.c
+++ b/ext/win32ole/win32ole.c
@@ -6079,10 +6079,11 @@ fev_on_event_with_outargs(argc, argv, self)
void
Init_win32ole()
{
- ary_ole_event = rb_ary_new();
rb_global_variable(&ary_ole_event);
+ ary_ole_event = rb_ary_new();
id_events = rb_intern("events");
+ rb_global_variable(&com_hash);
com_vtbl.QueryInterface = QueryInterface;
com_vtbl.AddRef = AddRef;
com_vtbl.Release = Release;
@@ -6091,7 +6092,6 @@ Init_win32ole()
com_vtbl.GetIDsOfNames = GetIDsOfNames;
com_vtbl.Invoke = Invoke;
com_hash = Data_Wrap_Struct(rb_cData, rb_mark_hash, st_free_table, st_init_numtable());
- rb_global_variable(&com_hash);
cWIN32OLE = rb_define_class("WIN32OLE", rb_cObject);