mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* string.c (str_new4): should not preserve FL_TAINT status in the
internal shared string. [ruby-dev:21601] * string.c (rb_str_new4): ditto. * eval.c: use EXIT_SUCCESS and EXIT_FAILURE for exit values. * process.c: ditto. [ruby-dev:38521] * lib/debug.rb (debug_command): should enter emacs mode when assigned any value to the environment variable "EMACS". On Meadow, (getenv "EMACS") is "meadow". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b6f1c0e284
commit
1184373d86
6 changed files with 63 additions and 39 deletions
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,20 @@
|
|||
Mon Oct 13 20:49:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* string.c (str_new4): should not preserve FL_TAINT status in the
|
||||
internal shared string. [ruby-dev:21601]
|
||||
|
||||
* string.c (rb_str_new4): ditto.
|
||||
|
||||
* eval.c: use EXIT_SUCCESS and EXIT_FAILURE for exit values.
|
||||
|
||||
* process.c: ditto. [ruby-dev:38521]
|
||||
|
||||
Mon Oct 13 19:51:02 2003 Koji Arai <jca02266@nifty.ne.jp>
|
||||
|
||||
* lib/debug.rb (debug_command): should enter emacs mode when
|
||||
assigned any value to the environment variable "EMACS".
|
||||
On Meadow, (getenv "EMACS") is "meadow".
|
||||
|
||||
Sun Oct 12 14:45:03 2003 WATANABE Hirofumi <eban@ruby-lang.org>
|
||||
|
||||
* ext/win32ole/extconf.rb: check "windows.h", not "windows".
|
||||
|
|
50
eval.c
50
eval.c
|
@ -18,6 +18,16 @@
|
|||
#include "util.h"
|
||||
#include "rubysig.h"
|
||||
|
||||
#ifdef HAVE_STDLIB_H
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#ifndef EXIT_SUCCESS
|
||||
#define EXIT_SUCCESS 0
|
||||
#endif
|
||||
#ifndef EXIT_FAILURE
|
||||
#define EXIT_FAILURE 1
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <setjmp.h>
|
||||
#include "st.h"
|
||||
|
@ -1181,7 +1191,7 @@ ruby_init()
|
|||
POP_TAG();
|
||||
if (state) {
|
||||
error_print();
|
||||
exit(1);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
POP_SCOPE();
|
||||
ruby_scope = top_scope;
|
||||
|
@ -1219,37 +1229,33 @@ static int
|
|||
error_handle(ex)
|
||||
int ex;
|
||||
{
|
||||
if (thread_set_raised()) return 1;
|
||||
int status = EXIT_FAILURE;
|
||||
|
||||
if (thread_set_raised()) return EXIT_FAILURE;
|
||||
switch (ex & TAG_MASK) {
|
||||
case 0:
|
||||
ex = 0;
|
||||
status = EXIT_SUCCESS;
|
||||
break;
|
||||
|
||||
case TAG_RETURN:
|
||||
error_pos();
|
||||
warn_print(": unexpected return\n");
|
||||
ex = 1;
|
||||
break;
|
||||
case TAG_NEXT:
|
||||
error_pos();
|
||||
warn_print(": unexpected next\n");
|
||||
ex = 1;
|
||||
break;
|
||||
case TAG_BREAK:
|
||||
error_pos();
|
||||
warn_print(": unexpected break\n");
|
||||
ex = 1;
|
||||
break;
|
||||
case TAG_REDO:
|
||||
error_pos();
|
||||
warn_print(": unexpected redo\n");
|
||||
ex = 1;
|
||||
break;
|
||||
case TAG_RETRY:
|
||||
error_pos();
|
||||
warn_print(": retry outside of rescue clause\n");
|
||||
ex = 1;
|
||||
break;
|
||||
case TAG_THROW:
|
||||
if (prot_tag && prot_tag->frame && prot_tag->frame->node) {
|
||||
|
@ -1261,17 +1267,15 @@ error_handle(ex)
|
|||
error_pos();
|
||||
warn_printf(": unexpected throw\n");
|
||||
}
|
||||
ex = 1;
|
||||
break;
|
||||
case TAG_RAISE:
|
||||
case TAG_FATAL:
|
||||
if (rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) {
|
||||
VALUE st = rb_iv_get(ruby_errinfo, "status");
|
||||
ex = NUM2INT(st);
|
||||
status = NUM2INT(st);
|
||||
}
|
||||
else {
|
||||
error_print();
|
||||
ex = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -1279,7 +1283,7 @@ error_handle(ex)
|
|||
break;
|
||||
}
|
||||
thread_reset_raised();
|
||||
return ex;
|
||||
return status;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1304,9 +1308,9 @@ ruby_options(argc, argv)
|
|||
|
||||
void rb_exec_end_proc _((void));
|
||||
|
||||
static void
|
||||
static int
|
||||
ruby_finalize_0(exp)
|
||||
int *exp;
|
||||
int exp;
|
||||
{
|
||||
ruby_errinfo = 0;
|
||||
PUSH_TAG(PROT_NONE);
|
||||
|
@ -1316,12 +1320,13 @@ ruby_finalize_0(exp)
|
|||
POP_TAG();
|
||||
rb_exec_end_proc();
|
||||
rb_gc_call_finalizer_at_exit();
|
||||
if (exp && ruby_errinfo && rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) {
|
||||
VALUE st = rb_iv_get(ruby_errinfo, "status");
|
||||
*exp = NUM2INT(st);
|
||||
}
|
||||
trace_func = 0;
|
||||
tracing = 0;
|
||||
if (ruby_errinfo && rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) {
|
||||
VALUE st = rb_iv_get(ruby_errinfo, "status");
|
||||
return NUM2INT(st);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1350,8 +1355,7 @@ ruby_cleanup(ex)
|
|||
|
||||
ex = error_handle(ex);
|
||||
POP_TAG();
|
||||
ruby_finalize_0(&ex);
|
||||
return ex;
|
||||
return ruby_finalize_0(ex);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -3846,7 +3850,7 @@ rb_f_exit(argc, argv)
|
|||
istatus = NUM2INT(status);
|
||||
}
|
||||
else {
|
||||
istatus = 0;
|
||||
istatus = EXIT_SUCCESS;
|
||||
}
|
||||
rb_exit(istatus);
|
||||
return Qnil; /* not reached */
|
||||
|
@ -3862,7 +3866,7 @@ rb_f_abort(argc, argv)
|
|||
if (!NIL_P(ruby_errinfo)) {
|
||||
error_print();
|
||||
}
|
||||
rb_exit(1);
|
||||
rb_exit(EXIT_FAILURE);
|
||||
}
|
||||
else {
|
||||
VALUE mesg;
|
||||
|
@ -9110,7 +9114,7 @@ rb_thread_kill(thread)
|
|||
}
|
||||
if (th->status == THREAD_TO_KILL || th->status == THREAD_KILLED)
|
||||
return thread;
|
||||
if (th == th->next || th == main_thread) rb_exit(0);
|
||||
if (th == th->next || th == main_thread) rb_exit(EXIT_SUCCESS);
|
||||
|
||||
rb_thread_ready(th);
|
||||
th->status = THREAD_TO_KILL;
|
||||
|
|
|
@ -261,7 +261,7 @@ class Context
|
|||
binding_file = file
|
||||
binding_line = line
|
||||
previous_line = nil
|
||||
if (ENV['EMACS'] == 't')
|
||||
if ENV['EMACS']
|
||||
stdout.printf "\032\032%s:%d:\n", binding_file, binding_line
|
||||
else
|
||||
stdout.printf "%s:%d:%s", binding_file, binding_line,
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#ifdef HAVE_STDLIB_H
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
@ -27,6 +30,10 @@
|
|||
#include <time.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#ifndef EXIT_FAILURE
|
||||
#define EXIT_FAILURE 1
|
||||
#endif
|
||||
|
||||
struct timeval rb_time_interval _((VALUE));
|
||||
|
||||
#ifdef HAVE_SYS_WAIT_H
|
||||
|
@ -874,7 +881,7 @@ rb_f_exit_bang(argc, argv, obj)
|
|||
istatus = NUM2INT(status);
|
||||
}
|
||||
else {
|
||||
istatus = -1;
|
||||
istatus = EXIT_FAILURE;
|
||||
}
|
||||
_exit(istatus);
|
||||
|
||||
|
|
13
string.c
13
string.c
|
@ -152,7 +152,6 @@ str_new4(klass, str)
|
|||
FL_SET(str, ELTS_SHARED);
|
||||
RSTRING(str)->aux.shared = str2;
|
||||
}
|
||||
OBJ_INFECT(str2, str);
|
||||
|
||||
return str2;
|
||||
}
|
||||
|
@ -177,7 +176,6 @@ rb_str_new4(orig)
|
|||
}
|
||||
else if (FL_TEST(orig, STR_ASSOC)) {
|
||||
str = str_new(klass, RSTRING(orig)->ptr, RSTRING(orig)->len);
|
||||
OBJ_INFECT(str, orig);
|
||||
}
|
||||
else {
|
||||
str = str_new4(klass, orig);
|
||||
|
@ -527,20 +525,15 @@ rb_str_substr(str, beg, len)
|
|||
if (len == 0) return rb_str_new5(str,0,0);
|
||||
|
||||
if (len > sizeof(struct RString)/2 &&
|
||||
beg + len == RSTRING(str)->len &&
|
||||
!FL_TEST(str, STR_ASSOC)) {
|
||||
if (FL_TEST(str, ELTS_SHARED) && RSTRING(str)->aux.shared)
|
||||
str = RSTRING(str)->aux.shared;
|
||||
else
|
||||
str = str_new4(rb_obj_class(str), str);
|
||||
str2 = rb_str_new3(str);
|
||||
beg + len == RSTRING(str)->len && !FL_TEST(str, STR_ASSOC)) {
|
||||
str2 = rb_str_new3(rb_str_new4(str));
|
||||
RSTRING(str2)->ptr += RSTRING(str2)->len - len;
|
||||
RSTRING(str2)->len = len;
|
||||
}
|
||||
else {
|
||||
str2 = rb_str_new5(str, RSTRING(str)->ptr+beg, len);
|
||||
OBJ_INFECT(str2, str);
|
||||
}
|
||||
OBJ_INFECT(str2, str);
|
||||
|
||||
return str2;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
module EnvUtil
|
||||
def rubybin
|
||||
if File.exist? "miniruby" or File.exist? "miniruby.exe"
|
||||
"./miniruby"
|
||||
else
|
||||
"ruby"
|
||||
miniruby = "miniruby"
|
||||
3.times do
|
||||
if File.exist? miniruby or File.exist? miniruby+".exe"
|
||||
return File.expand_path(miniruby)
|
||||
end
|
||||
miniruby = "../"+miniruby
|
||||
end
|
||||
"ruby"
|
||||
end
|
||||
module_function :rubybin
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue