1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

initialize made private

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@44 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 1998-01-22 08:32:48 +00:00
parent 6e8189235c
commit 8189c8146b
5 changed files with 23 additions and 15 deletions

View file

@ -1,3 +1,10 @@
Thu Jan 22 00:37:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* class.c (rb_define_method): `initialize' should always be
private, even if it defined by C extensions.
* eval.c (rb_eval): `initialize' should always be private.
Thu Jan 22 16:21:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* eval.c (rb_eval): some singleton class def cause SEGV.
@ -10,7 +17,8 @@ Wed Jan 21 01:43:42 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
* eval.c (PUSH_FRAME): do not use ALLOCA_N(). crash on some
platforms that use missing/alloca.c.
* regex.c (re_compile_pattern): too many pops for non register subexpr.
* regex.c (re_compile_pattern): too many pops for non register
subexpr.
* parse.y (yylex): open parentheses after identifiers are argument
list, even if whitespaces have seen.

20
class.c
View file

@ -419,15 +419,11 @@ rb_define_method(klass, name, func, argc)
VALUE (*func)();
int argc;
{
rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PUBLIC);
}
ID id = rb_intern(name);
void
rb_undef_method(klass, name)
VALUE klass;
char *name;
{
rb_add_method(klass, rb_intern(name), 0, NOEX_PUBLIC);
rb_add_method(klass, id, NEW_CFUNC(func, argc),
(name[0] == 'i' && id == rb_intern("initialize"))?
NOEX_PRIVATE:NOEX_PUBLIC);
}
void
@ -440,6 +436,14 @@ rb_define_private_method(klass, name, func, argc)
rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PRIVATE);
}
void
rb_undef_method(klass, name)
VALUE klass;
char *name;
{
rb_add_method(klass, rb_intern(name), 0, NOEX_PUBLIC);
}
VALUE
rb_singleton_class(obj)
VALUE obj;

5
eval.c
View file

@ -2117,7 +2117,7 @@ rb_eval(self, node)
rb_clear_cache_by_id(node->nd_mid);
}
if (FL_TEST(the_scope,SCOPE_PRIVATE)) {
if (FL_TEST(the_scope,SCOPE_PRIVATE) || node->nd_mid == init) {
noex = NOEX_PRIVATE;
}
else {
@ -2127,9 +2127,6 @@ rb_eval(self, node)
if (FL_TEST(the_scope,SCOPE_MODFUNC)) {
rb_add_method(rb_singleton_class(the_class),
node->nd_mid, node->nd_defn, NOEX_PUBLIC);
}
if (FL_TEST(the_scope, SCOPE_MODFUNC)) {
rb_funcall(the_class, rb_intern("singleton_method_added"),
1, INT2FIX(node->nd_mid));
}

View file

@ -10,4 +10,4 @@
#socket
#tkutil
#tcltklib
gtk
#gtk

View file

@ -5246,7 +5246,6 @@ Init_gtk()
/* GtkObject */
rb_define_method(gObject, "initialize", gobj_initialize, -1);
rb_define_method(gObject, "initialize", gobj_initialize, -1);
rb_define_method(gObject, "set_flags", gobj_set_flags, 1);
rb_define_method(gObject, "unset_flags", gobj_unset_flags, 1);
rb_define_method(gObject, "destroy", gobj_destroy, 0);