mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* parse.y (yylex): obsolete '?<whitespace>'; use '?\s', '?\n',
etc, instead. * parse.y (yylex): no here document after a dot. * parse.y (yylex): should have set lex_state after '`'. * parse.y (yylex): should have set lex_state properly after tOP_ASGN. * bignum.c (rb_big2dbl): return canonical HUGE_VAL for infinity. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
12c00312aa
commit
1979d9ae1f
6 changed files with 77 additions and 17 deletions
18
ChangeLog
18
ChangeLog
|
@ -13,12 +13,26 @@ Mon Jun 17 10:51:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
|||
* dln.c (dln_load): need to preserve dln_strerror() result,
|
||||
calling other dl family can clear it.
|
||||
|
||||
Sat Jun 15 22:56:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* parse.y (yylex): obsolete '?<whitespace>'; use '?\s', '?\n',
|
||||
etc, instead.
|
||||
|
||||
Sat Jun 15 18:51:13 2002 Akinori MUSHA <knu@iDaemons.org>
|
||||
|
||||
* dir.c (glob_helper): Use lstat() instead of stat() so it catches
|
||||
a dead symlink. Given a dead symlink named "a", Dir.glob("?")
|
||||
did catch it but Dir.glob("a") somehow didn't.
|
||||
|
||||
Sat Jun 15 01:59:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* parse.y (yylex): no here document after a dot.
|
||||
|
||||
* parse.y (yylex): should have set lex_state after '`'.
|
||||
|
||||
* parse.y (yylex): should have set lex_state properly after
|
||||
tOP_ASGN.
|
||||
|
||||
Fri Jun 14 21:01:48 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
|
||||
|
||||
* bcc32/mkexports.rb: insert sleep(1) for win9x.
|
||||
|
@ -36,6 +50,10 @@ Fri Jun 14 15:22:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
|||
|
||||
* regex.c (re_compile_pattern): ditto.
|
||||
|
||||
Fri Jun 14 00:49:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* bignum.c (rb_big2dbl): return canonical HUGE_VAL for infinity.
|
||||
|
||||
Thu Jun 13 09:43:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* eval.c (svalue_to_avalue): v may be Qundef. This fix was
|
||||
|
|
3
bignum.c
3
bignum.c
|
@ -798,6 +798,7 @@ rb_big2dbl(x)
|
|||
while (i--) {
|
||||
d = ds[i] + BIGRAD*d;
|
||||
}
|
||||
if (isinf(d)) d = HUGE_VAL;
|
||||
if (!RBIGNUM(x)->sign) d = -d;
|
||||
return d;
|
||||
}
|
||||
|
@ -855,6 +856,8 @@ static VALUE
|
|||
rb_big_eq(x, y)
|
||||
VALUE x, y;
|
||||
{
|
||||
double d;
|
||||
|
||||
switch (TYPE(y)) {
|
||||
case T_FIXNUM:
|
||||
y = rb_int2big(FIX2LONG(y));
|
||||
|
|
|
@ -77,7 +77,7 @@ while true
|
|||
result = scroll_down
|
||||
when Curses::KEY_UP, Curses::KEY_CTRL_P
|
||||
result = scroll_up
|
||||
when Curses::KEY_NPAGE, ? # white space
|
||||
when Curses::KEY_NPAGE, ?\s # white space
|
||||
for i in 0..($screen.maxy - 2)
|
||||
if( ! scroll_down )
|
||||
if( i == 0 )
|
||||
|
|
62
parse.y
62
parse.y
|
@ -3092,8 +3092,8 @@ yylex()
|
|||
case '*':
|
||||
if ((c = nextc()) == '*') {
|
||||
if ((c = nextc()) == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = tPOW;
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
pushback(c);
|
||||
|
@ -3184,8 +3184,9 @@ yylex()
|
|||
c = nextc();
|
||||
if (c == '<' &&
|
||||
lex_state != EXPR_END &&
|
||||
lex_state != EXPR_ENDARG
|
||||
&& lex_state != EXPR_CLASS &&
|
||||
lex_state != EXPR_DOT &&
|
||||
lex_state != EXPR_ENDARG &&
|
||||
lex_state != EXPR_CLASS &&
|
||||
(!IS_ARG() || space_seen)) {
|
||||
int c2 = nextc();
|
||||
int indent = 0;
|
||||
|
@ -3216,8 +3217,8 @@ yylex()
|
|||
}
|
||||
if (c == '<') {
|
||||
if ((c = nextc()) == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = tLSHFT;
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
pushback(c);
|
||||
|
@ -3238,8 +3239,8 @@ yylex()
|
|||
}
|
||||
if (c == '>') {
|
||||
if ((c = nextc()) == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = tRSHFT;
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
pushback(c);
|
||||
|
@ -3250,9 +3251,19 @@ yylex()
|
|||
|
||||
case '"':
|
||||
return parse_string(c,c,0);
|
||||
|
||||
case '`':
|
||||
if (lex_state == EXPR_FNAME) return c;
|
||||
if (lex_state == EXPR_DOT) return c;
|
||||
if (lex_state == EXPR_FNAME) {
|
||||
lex_state = EXPR_END;
|
||||
return c;
|
||||
}
|
||||
if (lex_state == EXPR_DOT) {
|
||||
if (cmd_state)
|
||||
lex_state = EXPR_CMDARG;
|
||||
else
|
||||
lex_state = EXPR_ARG;
|
||||
return c;
|
||||
}
|
||||
return parse_string(c,c,0);
|
||||
|
||||
case '\'':
|
||||
|
@ -3268,12 +3279,32 @@ yylex()
|
|||
rb_compile_error("incomplete character syntax");
|
||||
return 0;
|
||||
}
|
||||
if (IS_ARG() && ISSPACE(c)){
|
||||
if (ISSPACE(c)){
|
||||
if (!IS_ARG()){
|
||||
int c = 0;
|
||||
switch (c) {
|
||||
case ' ':
|
||||
c = 's';
|
||||
break;
|
||||
case '\n':
|
||||
c = 'n';
|
||||
break;
|
||||
case '\t':
|
||||
c = 't';
|
||||
break;
|
||||
case '\v':
|
||||
c = 'v';
|
||||
break;
|
||||
}
|
||||
if (c) {
|
||||
rb_warn("invalid character syntax; use ?\\%c", c);
|
||||
}
|
||||
}
|
||||
pushback(c);
|
||||
lex_state = EXPR_BEG;
|
||||
return '?';
|
||||
}
|
||||
if (c == '\\') {
|
||||
else if (c == '\\') {
|
||||
c = read_escape();
|
||||
}
|
||||
c &= 0xff;
|
||||
|
@ -3286,6 +3317,7 @@ yylex()
|
|||
lex_state = EXPR_BEG;
|
||||
if ((c = nextc()) == '=') {
|
||||
yylval.id = tANDOP;
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
pushback(c);
|
||||
|
@ -3320,14 +3352,15 @@ yylex()
|
|||
lex_state = EXPR_BEG;
|
||||
if ((c = nextc()) == '=') {
|
||||
yylval.id = tOROP;
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
pushback(c);
|
||||
return tOROP;
|
||||
}
|
||||
if (c == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = '|';
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
|
||||
|
@ -3350,8 +3383,8 @@ yylex()
|
|||
return '+';
|
||||
}
|
||||
if (c == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = '+';
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
|
||||
|
@ -3380,8 +3413,8 @@ yylex()
|
|||
return '-';
|
||||
}
|
||||
if (c == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = '-';
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
|
||||
|
@ -3630,8 +3663,8 @@ yylex()
|
|||
return parse_regx('/', '/');
|
||||
}
|
||||
if ((c = nextc()) == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = '/';
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
pushback(c);
|
||||
|
@ -3651,8 +3684,8 @@ yylex()
|
|||
|
||||
case '^':
|
||||
if ((c = nextc()) == '=') {
|
||||
lex_state = EXPR_BEG;
|
||||
yylval.id = '^';
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
switch (lex_state) {
|
||||
|
@ -3800,6 +3833,7 @@ yylex()
|
|||
}
|
||||
if ((c = nextc()) == '=') {
|
||||
yylval.id = '%';
|
||||
lex_state = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
if (IS_ARG() && space_seen && !ISSPACE(c)) {
|
||||
|
|
2
range.c
2
range.c
|
@ -495,7 +495,7 @@ Init_Range()
|
|||
rb_include_module(rb_cRange, rb_mEnumerable);
|
||||
rb_define_method(rb_cRange, "initialize", range_initialize, -1);
|
||||
rb_define_method(rb_cRange, "==", range_eq, 1);
|
||||
rb_define_method(rb_cRange, "===", range_member, 1);
|
||||
rb_define_method(rb_cRange, "===", range_include, 1);
|
||||
rb_define_method(rb_cRange, "eql?", range_eql, 1);
|
||||
rb_define_method(rb_cRange, "hash", range_hash, 0);
|
||||
rb_define_method(rb_cRange, "each", range_each, 0);
|
||||
|
|
7
string.c
7
string.c
|
@ -2991,11 +2991,16 @@ rb_str_crypt(str, salt)
|
|||
VALUE str, salt;
|
||||
{
|
||||
extern char *crypt();
|
||||
VALUE result;
|
||||
|
||||
StringValue(salt);
|
||||
if (RSTRING(salt)->len < 2)
|
||||
rb_raise(rb_eArgError, "salt too short(need >=2 bytes)");
|
||||
return rb_tainted_str_new2(crypt(RSTRING(str)->ptr, RSTRING(salt)->ptr));
|
||||
|
||||
result = rb_str_new2(crypt(RSTRING(str)->ptr, RSTRING(salt)->ptr));
|
||||
OBJ_INFECT(result, str);
|
||||
OBJ_INFECT(result, salt);
|
||||
return result;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
Loading…
Reference in a new issue