зеркало из https://github.com/github/ruby.git
Use public allocators for creating new T_OBJECT objects
This way the header flags and object internals are set correctly
This commit is contained in:
Родитель
d8b0f1f7a8
Коммит
9f3adaf529
|
@ -88,9 +88,9 @@ ancillary_initialize(VALUE self, VALUE vfamily, VALUE vlevel, VALUE vtype, VALUE
|
||||||
static VALUE
|
static VALUE
|
||||||
ancdata_new(int family, int level, int type, VALUE data)
|
ancdata_new(int family, int level, int type, VALUE data)
|
||||||
{
|
{
|
||||||
NEWOBJ_OF(obj, struct RObject, rb_cAncillaryData, T_OBJECT);
|
VALUE obj = rb_obj_alloc(rb_cAncillaryData);
|
||||||
StringValue(data);
|
StringValue(data);
|
||||||
ancillary_initialize((VALUE)obj, INT2NUM(family), INT2NUM(level), INT2NUM(type), data);
|
ancillary_initialize(obj, INT2NUM(family), INT2NUM(level), INT2NUM(type), data);
|
||||||
return (VALUE)obj;
|
return (VALUE)obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,9 +106,9 @@ sockopt_initialize(VALUE self, VALUE vfamily, VALUE vlevel, VALUE voptname, VALU
|
||||||
VALUE
|
VALUE
|
||||||
rsock_sockopt_new(int family, int level, int optname, VALUE data)
|
rsock_sockopt_new(int family, int level, int optname, VALUE data)
|
||||||
{
|
{
|
||||||
NEWOBJ_OF(obj, struct RObject, rb_cSockOpt, T_OBJECT);
|
VALUE obj = rb_obj_alloc(rb_cSockOpt);
|
||||||
StringValue(data);
|
StringValue(data);
|
||||||
sockopt_initialize((VALUE)obj, INT2NUM(family), INT2NUM(level), INT2NUM(optname), data);
|
sockopt_initialize(obj, INT2NUM(family), INT2NUM(level), INT2NUM(optname), data);
|
||||||
return (VALUE)obj;
|
return (VALUE)obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
5
range.c
5
range.c
|
@ -1676,10 +1676,7 @@ r_cover_p(VALUE range, VALUE beg, VALUE end, VALUE val)
|
||||||
static VALUE
|
static VALUE
|
||||||
range_dumper(VALUE range)
|
range_dumper(VALUE range)
|
||||||
{
|
{
|
||||||
VALUE v;
|
VALUE v = rb_obj_alloc(rb_cObject);
|
||||||
NEWOBJ_OF(m, struct RObject, rb_cObject, T_OBJECT | (RGENGC_WB_PROTECTED_OBJECT ? FL_WB_PROTECTED : 1));
|
|
||||||
|
|
||||||
v = (VALUE)m;
|
|
||||||
|
|
||||||
rb_ivar_set(v, id_excl, RANGE_EXCL(range));
|
rb_ivar_set(v, id_excl, RANGE_EXCL(range));
|
||||||
rb_ivar_set(v, id_beg, RANGE_BEG(range));
|
rb_ivar_set(v, id_beg, RANGE_BEG(range));
|
||||||
|
|
Загрузка…
Ссылка в новой задаче