* 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
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,
|
* dln.c (dln_load): need to preserve dln_strerror() result,
|
||||||
calling other dl family can clear it.
|
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>
|
Sat Jun 15 18:51:13 2002 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
* dir.c (glob_helper): Use lstat() instead of stat() so it catches
|
* dir.c (glob_helper): Use lstat() instead of stat() so it catches
|
||||||
a dead symlink. Given a dead symlink named "a", Dir.glob("?")
|
a dead symlink. Given a dead symlink named "a", Dir.glob("?")
|
||||||
did catch it but Dir.glob("a") somehow didn't.
|
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>
|
Fri Jun 14 21:01:48 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
|
||||||
|
|
||||||
* bcc32/mkexports.rb: insert sleep(1) for win9x.
|
* 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.
|
* 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>
|
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
|
* 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--) {
|
while (i--) {
|
||||||
d = ds[i] + BIGRAD*d;
|
d = ds[i] + BIGRAD*d;
|
||||||
}
|
}
|
||||||
|
if (isinf(d)) d = HUGE_VAL;
|
||||||
if (!RBIGNUM(x)->sign) d = -d;
|
if (!RBIGNUM(x)->sign) d = -d;
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
@ -855,6 +856,8 @@ static VALUE
|
|||||||
rb_big_eq(x, y)
|
rb_big_eq(x, y)
|
||||||
VALUE x, y;
|
VALUE x, y;
|
||||||
{
|
{
|
||||||
|
double d;
|
||||||
|
|
||||||
switch (TYPE(y)) {
|
switch (TYPE(y)) {
|
||||||
case T_FIXNUM:
|
case T_FIXNUM:
|
||||||
y = rb_int2big(FIX2LONG(y));
|
y = rb_int2big(FIX2LONG(y));
|
||||||
|
@ -77,7 +77,7 @@ while true
|
|||||||
result = scroll_down
|
result = scroll_down
|
||||||
when Curses::KEY_UP, Curses::KEY_CTRL_P
|
when Curses::KEY_UP, Curses::KEY_CTRL_P
|
||||||
result = scroll_up
|
result = scroll_up
|
||||||
when Curses::KEY_NPAGE, ? # white space
|
when Curses::KEY_NPAGE, ?\s # white space
|
||||||
for i in 0..($screen.maxy - 2)
|
for i in 0..($screen.maxy - 2)
|
||||||
if( ! scroll_down )
|
if( ! scroll_down )
|
||||||
if( i == 0 )
|
if( i == 0 )
|
||||||
|
62
parse.y
62
parse.y
@ -3092,8 +3092,8 @@ yylex()
|
|||||||
case '*':
|
case '*':
|
||||||
if ((c = nextc()) == '*') {
|
if ((c = nextc()) == '*') {
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = tPOW;
|
yylval.id = tPOW;
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
@ -3184,8 +3184,9 @@ yylex()
|
|||||||
c = nextc();
|
c = nextc();
|
||||||
if (c == '<' &&
|
if (c == '<' &&
|
||||||
lex_state != EXPR_END &&
|
lex_state != EXPR_END &&
|
||||||
lex_state != EXPR_ENDARG
|
lex_state != EXPR_DOT &&
|
||||||
&& lex_state != EXPR_CLASS &&
|
lex_state != EXPR_ENDARG &&
|
||||||
|
lex_state != EXPR_CLASS &&
|
||||||
(!IS_ARG() || space_seen)) {
|
(!IS_ARG() || space_seen)) {
|
||||||
int c2 = nextc();
|
int c2 = nextc();
|
||||||
int indent = 0;
|
int indent = 0;
|
||||||
@ -3216,8 +3217,8 @@ yylex()
|
|||||||
}
|
}
|
||||||
if (c == '<') {
|
if (c == '<') {
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = tLSHFT;
|
yylval.id = tLSHFT;
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
@ -3238,8 +3239,8 @@ yylex()
|
|||||||
}
|
}
|
||||||
if (c == '>') {
|
if (c == '>') {
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = tRSHFT;
|
yylval.id = tRSHFT;
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
@ -3250,9 +3251,19 @@ yylex()
|
|||||||
|
|
||||||
case '"':
|
case '"':
|
||||||
return parse_string(c,c,0);
|
return parse_string(c,c,0);
|
||||||
|
|
||||||
case '`':
|
case '`':
|
||||||
if (lex_state == EXPR_FNAME) return c;
|
if (lex_state == EXPR_FNAME) {
|
||||||
if (lex_state == EXPR_DOT) return c;
|
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);
|
return parse_string(c,c,0);
|
||||||
|
|
||||||
case '\'':
|
case '\'':
|
||||||
@ -3268,12 +3279,32 @@ yylex()
|
|||||||
rb_compile_error("incomplete character syntax");
|
rb_compile_error("incomplete character syntax");
|
||||||
return 0;
|
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);
|
pushback(c);
|
||||||
lex_state = EXPR_BEG;
|
lex_state = EXPR_BEG;
|
||||||
return '?';
|
return '?';
|
||||||
}
|
}
|
||||||
if (c == '\\') {
|
else if (c == '\\') {
|
||||||
c = read_escape();
|
c = read_escape();
|
||||||
}
|
}
|
||||||
c &= 0xff;
|
c &= 0xff;
|
||||||
@ -3286,6 +3317,7 @@ yylex()
|
|||||||
lex_state = EXPR_BEG;
|
lex_state = EXPR_BEG;
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
yylval.id = tANDOP;
|
yylval.id = tANDOP;
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
@ -3320,14 +3352,15 @@ yylex()
|
|||||||
lex_state = EXPR_BEG;
|
lex_state = EXPR_BEG;
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
yylval.id = tOROP;
|
yylval.id = tOROP;
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
return tOROP;
|
return tOROP;
|
||||||
}
|
}
|
||||||
if (c == '=') {
|
if (c == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = '|';
|
yylval.id = '|';
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
|
if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
|
||||||
@ -3350,8 +3383,8 @@ yylex()
|
|||||||
return '+';
|
return '+';
|
||||||
}
|
}
|
||||||
if (c == '=') {
|
if (c == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = '+';
|
yylval.id = '+';
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
|
if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
|
||||||
@ -3380,8 +3413,8 @@ yylex()
|
|||||||
return '-';
|
return '-';
|
||||||
}
|
}
|
||||||
if (c == '=') {
|
if (c == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = '-';
|
yylval.id = '-';
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
|
if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
|
||||||
@ -3630,8 +3663,8 @@ yylex()
|
|||||||
return parse_regx('/', '/');
|
return parse_regx('/', '/');
|
||||||
}
|
}
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = '/';
|
yylval.id = '/';
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
@ -3651,8 +3684,8 @@ yylex()
|
|||||||
|
|
||||||
case '^':
|
case '^':
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
lex_state = EXPR_BEG;
|
|
||||||
yylval.id = '^';
|
yylval.id = '^';
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
switch (lex_state) {
|
switch (lex_state) {
|
||||||
@ -3800,6 +3833,7 @@ yylex()
|
|||||||
}
|
}
|
||||||
if ((c = nextc()) == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
yylval.id = '%';
|
yylval.id = '%';
|
||||||
|
lex_state = EXPR_BEG;
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
if (IS_ARG() && space_seen && !ISSPACE(c)) {
|
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_include_module(rb_cRange, rb_mEnumerable);
|
||||||
rb_define_method(rb_cRange, "initialize", range_initialize, -1);
|
rb_define_method(rb_cRange, "initialize", range_initialize, -1);
|
||||||
rb_define_method(rb_cRange, "==", range_eq, 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, "eql?", range_eql, 1);
|
||||||
rb_define_method(rb_cRange, "hash", range_hash, 0);
|
rb_define_method(rb_cRange, "hash", range_hash, 0);
|
||||||
rb_define_method(rb_cRange, "each", range_each, 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;
|
VALUE str, salt;
|
||||||
{
|
{
|
||||||
extern char *crypt();
|
extern char *crypt();
|
||||||
|
VALUE result;
|
||||||
|
|
||||||
StringValue(salt);
|
StringValue(salt);
|
||||||
if (RSTRING(salt)->len < 2)
|
if (RSTRING(salt)->len < 2)
|
||||||
rb_raise(rb_eArgError, "salt too short(need >=2 bytes)");
|
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
|
static VALUE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user