Skip to content

Commit 61f9b37

Browse files
authored
Merge pull request #703 from larskanis/reg_address
Move VALUE address registration to before assignment
2 parents 5722d3b + 3dfad72 commit 61f9b37

3 files changed

Lines changed: 8 additions & 8 deletions

File tree

ext/pg_text_decoder.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -942,8 +942,8 @@ static VALUE
942942
init_pg_text_decoder_inet(VALUE rb_mPG_TextDecoder)
943943
{
944944
rb_require("ipaddr");
945+
rb_gc_register_address(&s_IPAddr);
945946
s_IPAddr = rb_funcall(rb_cObject, rb_intern("const_get"), 1, rb_str_new2("IPAddr"));
946-
rb_global_variable(&s_IPAddr);
947947
s_ivar_family = rb_intern("@family");
948948
s_ivar_addr = rb_intern("@addr");
949949
s_ivar_mask_addr = rb_intern("@mask_addr");
@@ -953,10 +953,10 @@ init_pg_text_decoder_inet(VALUE rb_mPG_TextDecoder)
953953

954954
use_ipaddr_alloc = RTEST(rb_eval_string("IPAddr.new.instance_variables.sort == [:@addr, :@family, :@mask_addr]"));
955955

956+
rb_gc_register_address(&s_vmasks4);
957+
rb_gc_register_address(&s_vmasks6);
956958
s_vmasks4 = rb_eval_string("a = [0]*33; a[0] = 0; a[32] = 0xffffffff; 31.downto(1){|i| a[i] = a[i+1] - (1 << (31 - i))}; a.freeze");
957-
rb_global_variable(&s_vmasks4);
958959
s_vmasks6 = rb_eval_string("a = [0]*129; a[0] = 0; a[128] = 0xffffffffffffffffffffffffffffffff; 127.downto(1){|i| a[i] = a[i+1] - (1 << (127 - i))}; a.freeze");
959-
rb_global_variable(&s_vmasks6);
960960

961961
/* dummy = rb_define_class_under( rb_mPG_TextDecoder, "Inet", rb_cPG_SimpleDecoder ); */
962962
pg_define_coder( "Inet", pg_text_dec_inet, rb_cPG_SimpleDecoder, rb_mPG_TextDecoder);
@@ -973,12 +973,12 @@ init_pg_text_decoder(void)
973973
s_id_utc = rb_intern("utc");
974974
s_id_getlocal = rb_intern("getlocal");
975975

976+
rb_gc_register_address(&s_nan);
977+
rb_gc_register_address(&s_pos_inf);
978+
rb_gc_register_address(&s_neg_inf);
976979
s_nan = rb_eval_string("0.0/0.0");
977-
rb_global_variable(&s_nan);
978980
s_pos_inf = rb_eval_string("1.0/0.0");
979-
rb_global_variable(&s_pos_inf);
980981
s_neg_inf = rb_eval_string("-1.0/0.0");
981-
rb_global_variable(&s_neg_inf);
982982

983983
/* This module encapsulates all decoder classes with text input format */
984984
rb_mPG_TextDecoder = rb_define_module_under( rb_mPG, "TextDecoder" );

ext/pg_text_encoder.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,8 @@ pg_text_enc_numeric(t_pg_coder *this, VALUE value, char *out, VALUE *intermediat
381381
static VALUE
382382
init_pg_text_encoder_numeric(VALUE rb_mPG_TextDecoder)
383383
{
384+
rb_gc_register_address(&s_str_F);
384385
s_str_F = rb_str_freeze(rb_str_new_cstr("F"));
385-
rb_global_variable(&s_str_F);
386386
rb_funcall(rb_mPG, rb_intern("require_bigdecimal_without_warning"), 0);
387387
s_cBigDecimal = rb_const_get(rb_cObject, rb_intern("BigDecimal"));
388388

ext/pg_type_map_all_strings.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,6 @@ init_pg_type_map_all_strings(void)
125125
rb_cTypeMapAllStrings = rb_define_class_under( rb_mPG, "TypeMapAllStrings", rb_cTypeMap );
126126
rb_define_alloc_func( rb_cTypeMapAllStrings, pg_tmas_s_allocate );
127127

128-
pg_typemap_all_strings = rb_obj_freeze( rb_funcall( rb_cTypeMapAllStrings, rb_intern("new"), 0 ));
129128
rb_gc_register_address( &pg_typemap_all_strings );
129+
pg_typemap_all_strings = rb_obj_freeze( rb_funcall( rb_cTypeMapAllStrings, rb_intern("new"), 0 ));
130130
}

0 commit comments

Comments
 (0)