diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-04-24 04:54:16 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-04-24 04:54:16 +0000 |
commit | e3a8c626308cb8546baaf75e6133df304142f0c8 (patch) | |
tree | 4fb40e7eab065c70d5b2cdb44eb16bea01b12c15 /rubysig.h | |
parent | b596fbbc375ea58aa2b869cb6025b2bb101f96b9 (diff) | |
download | ruby-e3a8c626308cb8546baaf75e6133df304142f0c8.tar.gz |
* io.c (rb_io_mode_flags): both 'r+b' and 'rb+' should be allowed.
* io.c (rb_io_mode_modenum): ditto.
* gc.c (rb_memerror): rename from mem_error, and exported.
* gc.c (Init_GC): pre-allocate NoMemoryError instance.
* object.c (convert_type): error message changed from "failed to
convert" to "cannot convert", since it does not try to convert
if an object does not respond to the converting method.
* eval.c (block_pass): convert Method to Proc using
rb_check_convert_type().
* object.c (rb_check_convert_type): always convert T_DATA
* eval.c (rb_thread_cleanup): should not terminate main_thread by
Fatal error.
* regex.c (is_in_list): need to not exclude NUL and NEWLINE.
* re.c (rb_reg_expr_str): wrong backslash escapement.
* re.c (rb_reg_expr_str): do not escape embedded space
characters.
* marshal.c (w_object): T_DATA process patch from Joel VanderWerf
<vjoel@PATH.Berkeley.EDU>. This is temporary hack; it remains
undocumented, and it will be removed when marshaling is
re-designed.
* marshal.c (r_object): ditto.
* numeric.c (num_step): Integer#step is moved to Numeric#step;
Fixnum#step is merged into this method.
* numeric.c (int_dotimes): Fixnum#times is merged.
* numeric.c (int_upto): Fixnum#upto is merged.
* numeric.c (int_downto): Fixnum#downto is merged.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'rubysig.h')
-rw-r--r-- | rubysig.h | 43 |
1 files changed, 26 insertions, 17 deletions
@@ -23,8 +23,9 @@ typedef LONG rb_atomic_t; /* Windows doesn't allow interrupt while system calls */ # define TRAP_BEG do {\ - rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 1); -# define TRAP_END ATOMIC_SET(rb_trap_immediate, trap_immediate);\ + rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 1) +# define TRAP_END\ + ATOMIC_SET(rb_trap_immediate, trap_immediate);\ } while (0) # define RUBY_CRITICAL(statements) do {\ win32_enter_critical();\ @@ -41,7 +42,7 @@ typedef int rb_atomic_t; # define TRAP_BEG do {\ int trap_immediate = rb_trap_immediate;\ - rb_trap_immediate = 1; + rb_trap_immediate = 1 # define TRAP_END rb_trap_immediate = trap_immediate;\ } while (0) @@ -55,9 +56,12 @@ typedef int rb_atomic_t; EXTERN rb_atomic_t rb_trap_immediate; EXTERN int rb_prohibit_interrupt; -#define DEFER_INTS {rb_prohibit_interrupt++;} -#define ALLOW_INTS {rb_prohibit_interrupt--; CHECK_INTS;} -#define ENABLE_INTS {rb_prohibit_interrupt--;} +#define DEFER_INTS (rb_prohibit_interrupt++) +#define ALLOW_INTS do {\ + rb_prohibit_interrupt--;\ + CHECK_INTS;\ +} while (0) +#define ENABLE_INTS (rb_prohibit_interrupt--) VALUE rb_with_disable_interrupt _((VALUE(*)(ANYARGS),VALUE)); @@ -68,23 +72,28 @@ EXTERN int rb_thread_critical; void rb_thread_schedule _((void)); #if defined(HAVE_SETITIMER) && !defined(__BOW__) EXTERN int rb_thread_pending; -# define CHECK_INTS if (!rb_prohibit_interrupt) {\ - if (rb_trap_pending) rb_trap_exec();\ - if (rb_thread_pending && !rb_thread_critical) rb_thread_schedule();\ -} +# define CHECK_INTS do {\ + if (!rb_prohibit_interrupt) {\ + if (rb_trap_pending) rb_trap_exec();\ + if (rb_thread_pending && !rb_thread_critical)\ + rb_thread_schedule();\ + }\ +} while (0) #else /* pseudo preemptive thread switching */ EXTERN int rb_thread_tick; #define THREAD_TICK 500 -#define CHECK_INTS if (!rb_prohibit_interrupt) {\ - if (rb_trap_pending) rb_trap_exec();\ - if (!rb_thread_critical) {\ - if (rb_thread_tick-- <= 0) {\ - rb_thread_tick = THREAD_TICK;\ - rb_thread_schedule();\ +#define CHECK_INTS do {\ + if (!rb_prohibit_interrupt) {\ + if (rb_trap_pending) rb_trap_exec();\ + if (!rb_thread_critical) {\ + if (rb_thread_tick-- <= 0) {\ + rb_thread_tick = THREAD_TICK;\ + rb_thread_schedule();\ + }\ }\ }\ -} +} while (0) #endif #endif |