mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
2000-06-23
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
44cf56d6e7
commit
552fb72159
9 changed files with 59 additions and 25 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
Fri Jun 23 01:11:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* string.c (rb_str_substr): should return empty string (""),
|
||||
if beg == str.size and len == zero, mostly for convenience and
|
||||
backward compatibility.
|
||||
|
||||
* parse.y (new_super): should tweak block_pass node for super too.
|
||||
|
||||
* string.c (rb_str_split_m): last split element should not be nil,
|
||||
but "" when limit is specified.
|
||||
|
||||
Thu Jun 22 17:27:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* string.c (rb_str_substr): str[n,m] now returns nil when n equals
|
||||
|
|
9
bignum.c
9
bignum.c
|
@ -899,13 +899,8 @@ bigdivmod(x, y, div, mod, modulo)
|
|||
RBIGNUM(*mod)->len = ny;
|
||||
RBIGNUM(*mod)->sign = RBIGNUM(x)->sign;
|
||||
if (modulo && RBIGNUM(x)->sign != RBIGNUM(y)->sign) {
|
||||
long len = ny;
|
||||
zds = BDIGITS(*mod);
|
||||
while (len && !zds[len]) len--;
|
||||
if (len > 0) {
|
||||
*mod = bigadd(*mod, y, 1);
|
||||
return;
|
||||
}
|
||||
*mod = bigadd(*mod, y, 1);
|
||||
return;
|
||||
}
|
||||
*mod = bignorm(*mod);
|
||||
}
|
||||
|
|
2
eval.c
2
eval.c
|
@ -4850,7 +4850,7 @@ rb_load(fname, wrap)
|
|||
PUSH_FRAME();
|
||||
ruby_frame->last_func = 0;
|
||||
ruby_frame->last_class = 0;
|
||||
ruby_frame->self = ruby_top_self;
|
||||
ruby_frame->self = self;
|
||||
ruby_frame->cbase = (VALUE)rb_node_newnode(NODE_CREF,ruby_class,0,0);
|
||||
PUSH_SCOPE();
|
||||
if (ruby_class == rb_cObject && top_scope->local_tbl) {
|
||||
|
|
20
lib/cgi.rb
20
lib/cgi.rb
|
@ -975,7 +975,7 @@ convert string charset, and set language to "ja".
|
|||
'="' + CGI::escapeHTML(value) + '"'
|
||||
end
|
||||
}.to_s + ">" +
|
||||
if iterator?
|
||||
if block_given?
|
||||
yield.to_s
|
||||
else
|
||||
""
|
||||
|
@ -1011,7 +1011,7 @@ convert string charset, and set language to "ja".
|
|||
'="' + CGI::escapeHTML(value) + '"'
|
||||
end
|
||||
}.to_s + ">" +
|
||||
if iterator?
|
||||
if block_given?
|
||||
yield.to_s + "</element.upcase>"
|
||||
else
|
||||
""
|
||||
|
@ -1036,7 +1036,7 @@ convert string charset, and set language to "ja".
|
|||
else
|
||||
href
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
super(attributes){ yield }
|
||||
else
|
||||
super(attributes)
|
||||
|
@ -1055,7 +1055,7 @@ convert string charset, and set language to "ja".
|
|||
else
|
||||
href
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
super(attributes){ yield }
|
||||
else
|
||||
super(attributes)
|
||||
|
@ -1074,7 +1074,7 @@ convert string charset, and set language to "ja".
|
|||
else
|
||||
cite or ""
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
super(attributes){ yield }
|
||||
else
|
||||
super(attributes)
|
||||
|
@ -1093,7 +1093,7 @@ convert string charset, and set language to "ja".
|
|||
else
|
||||
align or ""
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
super(attributes){ yield }
|
||||
else
|
||||
super(attributes)
|
||||
|
@ -1225,7 +1225,7 @@ convert string charset, and set language to "ja".
|
|||
end
|
||||
method
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
body = yield
|
||||
else
|
||||
body = ""
|
||||
|
@ -1315,7 +1315,7 @@ convert string charset, and set language to "ja".
|
|||
buf.concat( doctype )
|
||||
end
|
||||
|
||||
if iterator?
|
||||
if block_given?
|
||||
buf.concat( super(attributes){ yield } )
|
||||
else
|
||||
buf.concat( super(attributes) )
|
||||
|
@ -1397,7 +1397,7 @@ convert string charset, and set language to "ja".
|
|||
end
|
||||
action
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
form(attributes){ yield }
|
||||
else
|
||||
form(attributes)
|
||||
|
@ -1672,7 +1672,7 @@ convert string charset, and set language to "ja".
|
|||
else
|
||||
name
|
||||
end
|
||||
if iterator?
|
||||
if block_given?
|
||||
super(attributes){ yield }
|
||||
else
|
||||
super(attributes)
|
||||
|
|
|
@ -985,7 +985,7 @@ Init_marshal()
|
|||
s_load = rb_intern("_load");
|
||||
rb_define_module_function(rb_mMarshal, "dump", marshal_dump, -1);
|
||||
rb_define_module_function(rb_mMarshal, "load", marshal_load, -1);
|
||||
rb_define_module_function(rb_mMarshal, "restore", marshal_load, 1);
|
||||
rb_define_module_function(rb_mMarshal, "restore", marshal_load, -1);
|
||||
|
||||
rb_provide("marshal.so"); /* for backward compatibility */
|
||||
}
|
||||
|
|
16
parse.y
16
parse.y
|
@ -83,6 +83,7 @@ static int in_defined = 0;
|
|||
static NODE *arg_blk_pass();
|
||||
static NODE *new_call();
|
||||
static NODE *new_fcall();
|
||||
static NODE *new_super();
|
||||
|
||||
static NODE *gettable();
|
||||
static NODE *assignable();
|
||||
|
@ -451,7 +452,7 @@ command_call : operation call_args
|
|||
{
|
||||
if (!compile_for_eval && !cur_mid && !in_single)
|
||||
yyerror("super called outside of method");
|
||||
$$ = NEW_SUPER($2);
|
||||
$$ = new_super($2);
|
||||
fixpos($$, $2);
|
||||
}
|
||||
|
||||
|
@ -1390,7 +1391,7 @@ method_call : operation '(' opt_call_args close_paren
|
|||
if (!compile_for_eval && !cur_mid &&
|
||||
!in_single && !in_defined)
|
||||
yyerror("super called outside of method");
|
||||
$$ = NEW_SUPER($3);
|
||||
$$ = new_super($3);
|
||||
}
|
||||
| kSUPER
|
||||
{
|
||||
|
@ -4387,6 +4388,17 @@ new_fcall(m,a)
|
|||
return NEW_FCALL(m,a);
|
||||
}
|
||||
|
||||
static NODE*
|
||||
new_super(a)
|
||||
NODE *a;
|
||||
{
|
||||
if (a && nd_type(a) == NODE_BLOCK_PASS) {
|
||||
a->nd_iter = NEW_SUPER(a->nd_head);
|
||||
return a;
|
||||
}
|
||||
return NEW_SUPER(a);
|
||||
}
|
||||
|
||||
static struct local_vars {
|
||||
ID *tbl;
|
||||
int nofree;
|
||||
|
|
|
@ -607,6 +607,17 @@ for i in 4000..4096
|
|||
end
|
||||
ok($good)
|
||||
|
||||
b = 10**80
|
||||
a = b * 9 + 7
|
||||
ok(7 == a % b)
|
||||
ok(7-b == a % (-b))
|
||||
ok(b-7 == (-a) % b)
|
||||
ok(-7 ==(-a) % (-b))
|
||||
ok(7 ==a.remainder(b))
|
||||
ok(7 ==a.remainder(-b))
|
||||
ok(-7 == (-a).remainder(b))
|
||||
ok(-7 == (-a).remainder(-b))
|
||||
|
||||
check "string & char"
|
||||
|
||||
ok("abcd" == "abcd")
|
||||
|
|
9
string.c
9
string.c
|
@ -329,7 +329,8 @@ rb_str_substr(str, beg, len)
|
|||
VALUE str2;
|
||||
|
||||
if (len < 0) return Qnil;
|
||||
if (beg >= RSTRING(str)->len) return Qnil;
|
||||
if (beg > RSTRING(str)->len) return Qnil;
|
||||
if (beg == RSTRING(str)->len && len > 0) return Qnil;
|
||||
if (beg < 0) {
|
||||
beg += RSTRING(str)->len;
|
||||
if (beg < 0) return Qnil;
|
||||
|
@ -2226,7 +2227,11 @@ rb_str_split_m(argc, argv, str)
|
|||
}
|
||||
}
|
||||
if (!NIL_P(limit) || RSTRING(str)->len > beg || lim < 0) {
|
||||
rb_ary_push(result, rb_str_substr(str, beg, RSTRING(str)->len-beg));
|
||||
if (RSTRING(str)->len == beg)
|
||||
tmp = rb_str_new(0, 0);
|
||||
else
|
||||
tmp = rb_str_substr(str, beg, RSTRING(str)->len-beg);
|
||||
rb_ary_push(result, tmp);
|
||||
}
|
||||
if (NIL_P(limit) && lim == 0) {
|
||||
while (RARRAY(result)->len > 0 &&
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#define RUBY_VERSION "1.5.4"
|
||||
#define RUBY_RELEASE_DATE "2000-06-22"
|
||||
#define RUBY_RELEASE_DATE "2000-06-23"
|
||||
#define RUBY_VERSION_CODE 154
|
||||
#define RUBY_RELEASE_CODE 20000622
|
||||
#define RUBY_RELEASE_CODE 20000623
|
||||
|
|
Loading…
Reference in a new issue