diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | eval.c | 2 | ||||
-rw-r--r-- | io.c | 2 | ||||
-rw-r--r-- | lib/readbytes.rb | 5 | ||||
-rw-r--r-- | lib/weakref.rb | 18 | ||||
-rw-r--r-- | ruby.h | 8 | ||||
-rw-r--r-- | st.c | 2 | ||||
-rw-r--r-- | string.c | 4 |
8 files changed, 34 insertions, 13 deletions
@@ -3,6 +3,12 @@ Mon Jul 31 13:38:22 2006 GOTOU Yuuzou <gotoyuzo@notwork.org> * lib/webrick/httprequest.rb (WEBrick::HTTPReuqest#parse_uri): improve for the value of IPv6 address in the Host: header field. +Mon Jul 31 09:22:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org> + + * ruby.h: use ifdef (or defined) for macro constants that may or + may not be defined to shut up gcc's -Wundef warnings. + [ruby-core:08447] + Sun Jul 30 23:26:22 2006 Nobuyoshi Nakada <nobu@ruby-lang.org> * eval.c (rb_call0): trace call/return of method defined from block. @@ -10296,7 +10296,7 @@ rb_thread_switch(n) NORETURN(static void rb_thread_restore_context _((rb_thread_t,int))); -# if _MSC_VER >= 1300 +# if defined(_MSC_VER) && _MSC_VER >= 1300 __declspec(noinline) static void stack_extend(rb_thread_t, int); # endif static void @@ -267,7 +267,7 @@ rb_io_check_readable(fptr) if (!(fptr->mode & FMODE_READABLE)) { rb_raise(rb_eIOError, "not opened for reading"); } -#if NEED_IO_SEEK_BETWEEN_RW +#ifdef NEED_IO_SEEK_BETWEEN_RW if (((fptr->mode & FMODE_WBUF) || (fptr->mode & (FMODE_SYNCWRITE|FMODE_RBUF)) == FMODE_SYNCWRITE) && !feof(fptr->f) && diff --git a/lib/readbytes.rb b/lib/readbytes.rb index d6a3b10afe..08b92da73c 100644 --- a/lib/readbytes.rb +++ b/lib/readbytes.rb @@ -12,6 +12,11 @@ class TruncatedDataError<IOError end class IO + # reads exactly n bytes from the IO stream. + # If the data read is nil, raises EOFError. + # If the data read is too short, raises TruncatedDataError. + # The method TruncatedDataError#data may be used to obtain + # the truncated message. def readbytes(n) str = read(n) if str == nil diff --git a/lib/weakref.rb b/lib/weakref.rb index 49b907ba17..142286e765 100644 --- a/lib/weakref.rb +++ b/lib/weakref.rb @@ -1,4 +1,11 @@ -# Weak Reference class that does not bother GCing. + +require "delegate" + +# Weak Reference class that does not bother GCing. This allows the +# referenced object to be garbage collected as if nothing else is +# referring to it. Because Weakref inherits from Delegator it passes +# method calls to the object from which it was constructed, so it +# is of the same Duck Type. # # Usage: # foo = Object.new @@ -8,11 +15,9 @@ # p foo.to_s # should be same class # ObjectSpace.garbage_collect # p foo.to_s # should raise exception (recycled) - -require "delegate" - class WeakRef<Delegator + # RefError is raised if an object cannot be referenced by a WeakRef. class RefError<StandardError end @@ -40,6 +45,7 @@ class WeakRef<Delegator end } + # Create a new WeakRef from +orig+. def initialize(orig) super @__id = orig.__id__ @@ -56,6 +62,9 @@ class WeakRef<Delegator @@id_rev_map[self.__id__] = @__id end + # Return the object this WeakRef references. Raise + # RefError if this is impossible. The object is that + # to which method calls are delegated (see Delegator). def __getobj__ unless @@id_rev_map[self.__id__] == @__id raise RefError, "Illegal Reference - probably recycled", caller(2) @@ -67,6 +76,7 @@ class WeakRef<Delegator end end + # Determine if this Weakref still refers to anything. def weakref_alive? @@id_rev_map[self.__id__] == @__id end @@ -102,7 +102,7 @@ typedef unsigned long ID; # endif #endif -#if HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG # ifndef LLONG_MAX # ifdef LONG_LONG_MAX # define LLONG_MAX LONG_LONG_MAX @@ -144,7 +144,7 @@ VALUE rb_uint2inum _((unsigned long)); #define ULONG2NUM(v) UINT2NUM(v) #define rb_uint_new(v) rb_uint2inum(v) -#if HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG VALUE rb_ll2inum _((LONG_LONG)); #define LL2NUM(v) rb_ll2inum(v) VALUE rb_ull2inum _((unsigned LONG_LONG)); @@ -265,14 +265,14 @@ unsigned long rb_fix2uint _((VALUE)); #define FIX2UINT(x) ((unsigned int)FIX2ULONG(x)) #endif -#if HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG LONG_LONG rb_num2ll _((VALUE)); unsigned LONG_LONG rb_num2ull _((VALUE)); # define NUM2LL(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2ll((VALUE)x)) # define NUM2ULL(x) rb_num2ull((VALUE)x) #endif -#if HAVE_LONG_LONG && SIZEOF_OFF_T > SIZEOF_LONG +#if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG # define NUM2OFFT(x) ((off_t)NUM2LL(x)) #else # define NUM2OFFT(x) NUM2LONG(x) @@ -537,7 +537,7 @@ strhash(string) h &= ~g; } return h; -#elif HASH_PERL +#elif defined(HASH_PERL) register int val = 0; while ((c = *string++) != '\0') { @@ -856,7 +856,7 @@ rb_str_hash(str) register char *p = RSTRING(str)->ptr; register int key = 0; -#ifdef HASH_ELFHASH +#if defined(HASH_ELFHASH) register unsigned int g; while (len--) { @@ -865,7 +865,7 @@ rb_str_hash(str) key ^= g >> 24; key &= ~g; } -#elif HASH_PERL +#elif defined(HASH_PERL) while (len--) { key += *p++; key += (key << 10); |