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

2000-05-09

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-05-09 04:53:16 +00:00
parent e8bf824c5c
commit 0fb30e32b8
11 changed files with 111 additions and 39 deletions

View file

@ -1,3 +1,28 @@
Mon May 8 23:17:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* dln.c (dln_init): remove possible buffer overrun. This is
suggested by Aleksi Niemela <aleksi.niemela@cinnober.com>
* dln.c (init_funcname): ditto.
Sat May 6 23:35:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* parse.y (lhs): should allow `obj.Attr = 5' type expression.
Sat May 6 15:46:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
* ext/socket/extconf.rb: add a new configure option to force use
of the WIDE Project's getaddrinfo(): --enbale-wide-getaddrinfo.
Fri May 5 21:19:22 2000 MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
* parse.y (yylex): allow '$1foo' and such.
Fri May 5 03:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* regex.c (re_compile_fastmap): charset_not for multibyte
characters excluded too many characters.
Wed Apr 26 15:23:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
* string.c (rb_str_succ): insert carrying character just before

View file

@ -81,7 +81,7 @@ OBJS = array.@OBJEXT@ \
version.@OBJEXT@ \
$(MISSING)
all: miniruby$(EXEEXT) rbconfig.rb
all: miniruby$(EXEEXT) rbconfig.rb $(LIBRUBY)
@./miniruby$(EXEEXT) -Xext extmk.rb @EXTSTATIC@
miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) dmyext.@OBJEXT@

28
dln.c
View file

@ -102,7 +102,7 @@ init_funcname(buf, file)
if (*p == '/') slash = p;
#endif
sprintf(buf, FUNCNAME_PATTERN, slash + 1);
snprintf(buf, MAXPATHLEN, FUNCNAME_PATTERN, slash + 1);
for (p = buf; *p; p++) { /* Delete suffix if it exists */
if (*p == '.') {
*p = '\0'; break;
@ -371,6 +371,10 @@ dln_init(prog)
while (read(fd, p, 1) == 1) {
if (*p == '\n' || *p == '\t' || *p == ' ') break;
p++;
if (p-buf >= MAXPATHLEN) {
dln_errno = ENAMETOOLONG;
return -1;
}
}
*p = '\0';
@ -1185,7 +1189,7 @@ aix_loaderror(const char *pathname)
#define LOAD_ERRTAB_LEN (sizeof(load_errtab)/sizeof(load_errtab[0]))
#define ERRBUF_APPEND(s) strncat(errbuf, s, sizeof(errbuf)-strlen(errbuf)-1)
sprintf(errbuf, "load failed - %.200s ", pathname);
snprintf(errbuf, 1024, "load failed - %.200s ", pathname);
if (!loadquery(1, &message[0], sizeof(message)))
ERRBUF_APPEND(strerror(errno));
@ -1411,20 +1415,20 @@ dln_load(file)
}
/* find symbol for module initialize function. */
/* The Be Book KernelKit Images section described to use
B_SYMBOL_TYPE_TEXT for symbol of function, not
B_SYMBOL_TYPE_CODE. Why ? */
/* strcat(init_fct_symname, "__Fv"); */ /* parameter nothing. */
/* "__Fv" dont need! The Be Book Bug ? */
/* The Be Book KernelKit Images section described to use
B_SYMBOL_TYPE_TEXT for symbol of function, not
B_SYMBOL_TYPE_CODE. Why ? */
/* strcat(init_fct_symname, "__Fv"); */ /* parameter nothing. */
/* "__Fv" dont need! The Be Book Bug ? */
err_stat = get_image_symbol(img_id, buf,
B_SYMBOL_TYPE_TEXT, (void **)&init_fct);
if (err_stat != B_NO_ERROR) {
char real_name[1024];
strcpy(real_name, buf);
strcat(real_name, "__Fv");
err_stat = get_image_symbol(img_id, real_name,
B_SYMBOL_TYPE_TEXT, (void **)&init_fct);
char real_name[MAXPATHLEN];
strcpy(real_name, buf);
strcat(real_name, "__Fv");
err_stat = get_image_symbol(img_id, real_name,
B_SYMBOL_TYPE_TEXT, (void **)&init_fct);
}
if ((B_BAD_IMAGE_ID == err_stat) || (B_BAD_INDEX == err_stat)) {

7
eval.c
View file

@ -4878,6 +4878,8 @@ rb_f_require(obj, fname)
buf = ALLOCA_N(char, strlen(file)+sizeof(DLEXT)+1);
strcpy(buf, feature);
ext = strrchr(buf, '.');
strcpy(ext, ".so");
if (rb_provided(buf)) return Qfalse;
strcpy(ext, DLEXT);
file = feature = buf;
if (rb_provided(feature)) return Qfalse;
@ -6250,8 +6252,8 @@ thread_free(th)
th->stk_ptr = 0;
if (th->locals) st_free_table(th->locals);
if (th->status != THREAD_KILLED) {
th->prev->next = th->next;
th->next->prev = th->prev;
if (th->prev) th->prev->next = th->next;
if (th->next) th->next->prev = th->prev;
}
if (th != main_thread) free(th);
}
@ -7497,6 +7499,7 @@ rb_callcc(self)
for (tag=prot_tag; tag; tag=tag->prev) {
scope_dup(tag->scope);
}
th->prev = th->next = 0;
if (THREAD_SAVE_CONTEXT(th)) {
return th->result;
}

View file

@ -329,6 +329,11 @@ def create_makefile(target)
$DLDFLAGS = '@DLDFLAGS@'
if $configure_args['--enable-shared']
$libs = "@LIBRUBYARG@ " + $libs
$DLDFLAGS = $DLDFLAGS + " -L" + $topdir
end
if RUBY_PLATFORM =~ /beos/ and not $static
$libs = $libs + " @LIBRUBYARG@"
$DLDFLAGS = $DLDFLAGS + " -L" + $topdir
@ -339,8 +344,6 @@ def create_makefile(target)
if File.exist? target + ".def"
defflag = "--def=" + target + ".def"
end
$libs = $libs + " @LIBRUBYARG@"
$DLDFLAGS = $DLDFLAGS + " -L" + $topdir
end
$srcdir = $top_srcdir + "/ext/" + $mdir

View file

@ -173,7 +173,7 @@ have_header("netinet/tcp.h")
have_header("netinet/udp.h")
$getaddr_info_ok = false
if try_run(<<EOF)
if not enable_config("wide-getaddrinfo", false) and try_run(<<EOF)
#include <sys/types.h>
#include <netdb.h>
#include <string.h>
@ -292,6 +292,22 @@ else
have_header("resolv.h")
end
if !try_link(<<EOF)
#include <sys/types.h>
#include <netdb.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int
main()
{
socklen_t len;
return 0;
}
EOF
$CFLAGS="-Dsocklen_t=int "+$CFLAGS
end
have_header("sys/un.h")
if have_func(test_func)

View file

@ -328,6 +328,11 @@ def create_makefile(target)
end
$DLDFLAGS = CONFIG["DLDFLAGS"]
if $configure_args['--enable-shared']
$libs = CONFIG["LIBRUBYARG"] + " " + $libs
$DLDFLAGS = $DLDFLAGS + " -L$(topdir)"
end
if RUBY_PLATFORM =~ /beos/
$libs = $libs + " " + CONFIG["LIBRUBYARG"]
$DLDFLAGS = $DLDFLAGS + " -L" + CONFIG["prefix"] + "/lib"
@ -338,8 +343,6 @@ def create_makefile(target)
if File.exist? target + ".def"
defflag = "--def=" + target + ".def"
end
$libs = $libs + " " + CONFIG["LIBRUBYARG"]
$DLDFLAGS = $DLDFLAGS + " -L$(topdir)"
end
unless $objs then

View file

@ -5,7 +5,7 @@ $Date$
net/telnet.rb
Version 1.30
Version 1.31
Wakou Aoyama <wakou@fsinet.or.jp>
@ -24,7 +24,7 @@ Wakou Aoyama <wakou@fsinet.or.jp>
# if ignore timeout then set "Timeout" to false.
"Waittime" => 0, # default: 0
"Proxy" => proxy # default: nil
# proxy is Telnet or TCPsocket object
# proxy is Net::Telnet or IO object
})
Telnet object has socket class methods.
@ -157,6 +157,12 @@ of cource, set sync=true or flush is necessary.
== HISTORY
=== Version 1.31
2000/05/02 21:48:39
- Proxy option: can receive IO object
=== Version 1.30
2000/04/03 18:27:02
@ -437,7 +443,7 @@ module Net
EOL = CR + LF
v = $-v
$-v = false
VERSION = "1.30"
VERSION = "1.31"
RELEASE_DATE = "$Date$"
$-v = v
@ -487,12 +493,12 @@ module Net
end
if @options.has_key?("Proxy")
if @options["Proxy"].kind_of?(Telnet)
if @options["Proxy"].kind_of?(Net::Telnet)
@sock = @options["Proxy"].sock
elsif @options["Proxy"].kind_of?(TCPsocket)
elsif @options["Proxy"].kind_of?(IO)
@sock = @options["Proxy"]
else
raise "Error; Proxy is Telnet or TCPSocket object."
raise "Error; Proxy is Net::Telnet or IO object."
end
else
message = "Trying " + @options["Host"] + "...\n"

27
parse.y
View file

@ -531,6 +531,10 @@ mlhs_node : variable
{
$$ = attrset($1, $3);
}
| primary '.' tCONSTANT
{
$$ = attrset($1, $3);
}
| backref
{
rb_backref_error($1);
@ -553,6 +557,10 @@ lhs : variable
{
$$ = attrset($1, $3);
}
| primary '.' tCONSTANT
{
$$ = attrset($1, $3);
}
| backref
{
rb_backref_error($1);
@ -3172,13 +3180,16 @@ yylex()
case '1': case '2': case '3':
case '4': case '5': case '6':
case '7': case '8': case '9':
tokadd('$');
while (ISDIGIT(c)) {
tokadd(c);
c = nextc();
}
if (is_identchar(c))
break;
pushback(c);
tokfix();
yylval.node = NEW_NTH_REF(atoi(tok()));
yylval.node = NEW_NTH_REF(atoi(tok()+1));
return tNTH_REF;
default:
@ -3232,7 +3243,7 @@ yylex()
tokfix();
{
int result;
int result = 0;
switch (tok()[0]) {
case '$':
@ -3260,14 +3271,10 @@ yylex()
}
}
if (ISUPPER(tok()[0])) {
result = tCONSTANT;
}
else if (toklast() == '!' || toklast() == '?') {
if (toklast() == '!' || toklast() == '?') {
result = tFID;
}
else {
result = tIDENTIFIER;
if (lex_state == EXPR_FNAME) {
if ((c = nextc()) == '=' && !peek('=') && !peek('~')) {
tokadd(c);
@ -3276,6 +3283,12 @@ yylex()
pushback(c);
}
}
if (result == 0 && ISUPPER(tok()[0])) {
result = tCONSTANT;
}
else {
result = tIDENTIFIER;
}
}
if (lex_state == EXPR_BEG ||
lex_state == EXPR_DOT ||

View file

@ -2937,23 +2937,22 @@ re_compile_fastmap(bufp)
for (j = 0,c = 0;j < (int)size; j++) {
unsigned int cc = EXTRACT_MBC(&p[j*8]);
beg = WC2MBC1ST(cc);
while (c < beg) {
while (c <= beg) {
if (ismbchar(c))
fastmap[c] = 1;
c++;
}
cc = EXTRACT_MBC(&p[j*8+4]);
beg = WC2MBC1ST(cc);
if (cc < 0xff) {
num_literal = 1;
while (c <= beg) {
while (c <= cc) {
if (ismbchar(c))
fastmap[c] = 1;
c++;
}
}
c = beg + 1;
c = WC2MBC1ST(cc);
}
for (j = c; j < (1 << BYTEWIDTH); j++) {

View file

@ -1,4 +1,4 @@
#define RUBY_VERSION "1.4.4"
#define RUBY_RELEASE_DATE "2000-05-01"
#define RUBY_RELEASE_DATE "2000-05-09"
#define RUBY_VERSION_CODE 144
#define RUBY_RELEASE_CODE 20000501
#define RUBY_RELEASE_CODE 20000509