summaryrefslogtreecommitdiffstats
path: root/misc
Commit message (Collapse)AuthorAgeFilesLines
* * misc/ruby-mode.el (ruby-special-char-p, ruby-parse-partial): handlenobu2004-11-151-4/+9
| | | | | | | operator symbols. [ruby-talk:120177] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@7271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_thread_start_0): forget to free some memory chunks.matz2004-10-291-4/+17
| | | | | | | [ruby-core:03611] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@7135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (rb_io_reopen): should clear allocated OpenFile. pointedmatz2004-08-171-1/+1
| | | | | | | out by Guy Decoux. [ruby-core:03288] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial,nobu2004-07-311-11/+11
| | | | | | | | ruby-calculate-indent, ruby-move-to-block, ruby-forward-sexp, ruby-backward-sexp): keywords must match word-wise. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_eval): copy on write for argument local variablematz2004-07-271-4/+16
| | | | | | | | | | | | | | | assignment. * eval.c (assign): ditto. * eval.c (rb_call0): update ruby_frame->argv with the default value used for the optional arguments. * object.c (Init_Object): "===" calls rb_obj_equal() directly. [ruby-list:39937] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y (string_content): turn off NODE_NEWLINE flag to avoidmatz2004-05-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | unnecessary line trace for inlined expression. (ruby-bugs PR#1320) * numeric.c (flo_to_s): tweak output string based to preserve decimal point and to remove trailing zeros. [ruby-talk:97891] * string.c (rb_str_index_m): use unsigned comparison for T_FIXNUM search. [ruby-talk:97342] * hash.c (rb_hash_equal): returns true if two hashes have same set of key-value set. [ruby-talk:97559] * hash.c (rb_hash_eql): returns true if two hashes are equal and have same default values. * string.c (rb_str_equal): always returns true or false, never returns nil. [ruby-dev:23404] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (make_hostent): fix memory leak, based onmatz2004-04-011-172/+142
| | | | | | | the patch from HORIKAWA Hisashi <vzw00011@nifty.ne.jp>. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (method_hash): new method. [ruby-talk:93968]matz2004-03-031-2/+9
| | | | | | | | | | | | | | | * eval.c (proc_eq): do not compare dyna_vars. * eval.c (proc_hash): new method. * eval.c (rb_yield_0): protect break/return from within orphan (or lambda) Proc object. * parse.y (yylex): should not allow symbol for invalid global variable (e.g. `:$-)`). [ruby-core:02518] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (localjump_destination): lambda should not interferematz2004-02-261-5/+3
| | | | | | | | | | return from the yielded block. * hash.c (delete_if_i): use st_delete_safe() (via rb_hash_delete()) instead of returning ST_DELETE. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * re.c (KR_REHASH): wrong hash value on sizeof(long) > sizeof(int).matz2004-02-131-4/+6
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el: better support for general delimitedmatz2004-01-271-5/+3
| | | | | | | | | | | | | | | | strings. [ruby-dev:22695] * lib/weakref.rb (WeakRef::initialize): set up @__id before calling "super". * lib/delegate.rb (Delegator::initialize): preserve singleton_method_added method [ruby-dev:22685] * lib/delegate.rb (Delegator::initialize): use Kernel::raise instead of mere raise. [ruby-dev:22681] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.matz2004-01-051-1/+4
| | | | | | | | | | | | [ruby-dev:22486] * pack.c (pack_unpack): unpack requires big endian offet (OFF16B and OFF32B). The patch is from Minero Aoki in [ruby-dev:22489] * pack.c (OFF16B): add big-endian offset again. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-calculate-indent): proper indentationmatz2003-12-191-45/+45
| | | | | | | | | | inside of parentheses. [ruby-dev:22308] * hash.c (delete_if_i): do not use ST_DELETE for thread safety. [ruby-dev:21899] (not fully solved) git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * time.c (time_load): restore instance variables (if any) beforematz2003-10-021-5/+8
| | | | | | | | | | | | | | | | | | | | loading from marshaled data. * time.c (time_mdump): new marshal dumper. _dump is still available for compatibility. * time.c (time_mload): new marshal loader. * marshal.c (w_object): preserve instance variables for objects with marshal_dump. * marshal.c (r_object0): restore instance variables before calling marshal_load. * error.c (rb_warn_m): always return nil. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-font-lock-maybe-here-docs): should notnobu2003-09-051-2/+2
| | | | | | | search delimiter forward if found in backward. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-here-doc-beg-re): underscore also isnobu2003-09-041-17/+13
| | | | | | | | | | | | | | valid delimiter. * misc/ruby-mode.el (ruby-here-doc-end-match): must quote arbitrary string to use as regexp. * misc/ruby-mode.el (ruby-font-lock-maybe-here-docs): must not call `ruby-here-doc-end-match' unless `ruby-here-doc-beg-re' matched. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_yield_splat): should check if "values" is array.matz2003-08-231-1/+58
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-special-char-p): should test at thenobu2003-04-151-1/+1
| | | | | | | | point if no argument. fixed by Michael Scholz <scholz-micha@gmx.de>. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-forward-sexp): missed argument for forward-word.nobu2003-04-121-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-beginning-of-arg): substitutenobu2003-04-121-128/+152
| | | | | | | | | | | | | ruby-backward-arg. * misc/ruby-mode.el (ruby-calculate-indent): fixed wrong indentation in brace block and parentheses. * misc/ruby-mode.el (ruby-forward-sexp, ruby-backward-sexp): support special char literal, and negative arguments. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-expr-beg): escaped char syntax.nobu2003-03-021-24/+63
| | | | | | | | | | | | | | * misc/ruby-mode.el (ruby-parse-partial): ditto. * misc/ruby-mode.el (ruby-parse-partial): no deep indent for block. * misc/ruby-mode.el (ruby-backward-arg): skip arguments backward. * misc/ruby-mode.el (ruby-calculate-indent): too deep indentation. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-comment-column): customize commentnobu2003-02-171-45/+176
| | | | | | | | | | | | | | | | | | | | | | | | column. [new] * misc/ruby-mode.el (ruby-deep-indent-paren): deep indentation parentheses. [new] * misc/ruby-mode.el (ruby-expr-beg): fix for / after $?. * misc/ruby-mode.el (ruby-parse-partial, ruby-calculate-indent): deep indentation support. * misc/ruby-mode.el (ruby-forward-sexp, ruby-backward-sexp): move forward/backward across one balanced expression. [new] * misc/ruby-mode.el (ruby-indent-exp): indent balanced expression. [new] * misc/ruby-mode.el (ruby-electric-brace): indent before show matching parenthesis. (contributed by NABEYA Kenichi) git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-forward-string): fixed void variablenobu2003-02-081-4/+4
| | | | | | | | | | error. * misc/ruby-mode.el (ruby-font-lock-keywords): method name can be delimited by tab. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): dealnobu2003-01-231-16/+6
| | | | | | | | | with escaped $ and ? at the end of strings. [ruby-talk:62297] * misc/ruby-mode.el (ruby-font-lock-keywords): added defined?. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): syntaxnobu2003-01-091-4/+4
| | | | | | | | classes are not allowed inside character classes. [ruby-talk:60996] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-parse-partial): keywords must not benobu2002-12-201-0/+2
| | | | | | | preceded by @ or $. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * sprintf.c (rb_f_sprintf): preceding ".." for negative numbersmatz2002-12-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | still left; removed. * sprintf.c (rb_f_sprintf): should not prepend '0' if width > prec for example "%5.3d". * process.c (Init_process): add Process.exit and Process.abort * pack.c (utf8_to_uv): raise ArgumentError for malformed/redundant UTF-8 sequences. * process.c (last_status_set): add pid attribute to Process::Status. * pack.c (uv_to_utf8): limit maximum length of the encoded string to 6 bytes, even when the platform supports 8 bytes long integers. * pack.c (utf8_to_uv): do not decode sequences longer than 6 bytes. * object.c (copy_object): use "copy_object" method, not "become". git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3123 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * object.c (Init_Object): added Object#object_id, new name formatz2002-11-031-3/+4
| | | | | | | | | | | | | | | | | | | Object#id. [new] * object.c (rb_obj_id_obsolete): give warning for Object#id. * numeric.c (fix_intern): added Fixnum#to_sym. [new] * object.c (sym_to_sym): rename from Symbol#intern * enum.c (enum_zip): added Enumerable#zip. [new] * array.c (rb_ary_zip): added Array#zip. * error.c (init_syserr): remove sys_nerr dependency. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/inf-ruby.el (inferior-ruby-error-regexp-alist): regexpnobu2002-09-071-15/+37
| | | | | | | | | | | | | alist for error message from ruby. * misc/inf-ruby.el (inferior-ruby-mode): fixed for Emacs. * misc/inf-ruby.el (ruby-send-region): compilation-parse-errors doesn't parse first line, so insert separators before each evaluations. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/inf-ruby.el (inf-ruby-keys): ruby-send-definitionnobu2002-08-191-7/+58
| | | | | | | | | | | | | | | conflicted with ruby-insert-end. * misc/inf-ruby.el (inferior-ruby-mode): compilation-minor-mode. * misc/inf-ruby.el (ruby-send-region): send as here document to adjust source file/line. [ruby-talk:47113], [ruby-dev:17965] * misc/inf-ruby.el (ruby-send-terminator): added to make unique terminator. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* sorry, dittonobu2002-07-301-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-accurate-end-of-block): restrict searchnobu2002-07-301-3/+4
| | | | | | | | | region. * misc/ruby-mode.el (ruby-parse-partial): reversed wrong patch. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-accurate-end-of-block): incomplete blocknobu2002-07-301-4/+5
| | | | | | | | | | caused infinite loop. * misc/ruby-mode.el (ruby-parse-partial): returns nil unless delimiters found. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-expr-beg): wrong indent at modifiersnobu2002-07-261-3/+5
| | | | | | | after ?. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-delimiter): include here document.nobu2002-07-251-247/+288
| | | | | | | | | | | | | | | | | | | | | * misc/ruby-mode.el (ruby-deep-arglist): skips spaces after parenthesis when 'space. * misc/ruby-mode.el (ruby-imenu-create-index): fix for nested classes. * misc/ruby-mode.el (ruby-accurate-end-of-block): added. scan a block in the order. * misc/ruby-mode.el (ruby-expr-beg): support for here document. * misc/ruby-mode.el (ruby-parse-partial): splitted from ruby-parse-region. * misc/ruby-mode.el (ruby-move-to-block): skips RD style comments. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * re.c (rb_reg_expr_str): need to process backslashes properly.matz2002-06-281-0/+1
| | | | | | | | | | | | | | | | | | * object.c (rb_any_to_a): declare Object#to_a to be obsolete. * object.c (rb_Array): do not convert nil into [] automagically. * object.c (rb_Integer): use "to_int" instead of "to_i". [experimental] * object.c (nil_to_f): new method. * object.c (rb_Integer): Symbols and nil should cause error. * object.c (rb_Float): nil should cause error. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ruby.c (proc_options): removed "-*-" support for #! line.matz2002-05-231-3/+9
| | | | | | | | | | | | | * io.c (rb_io_s_sysopen): new method to get a raw file descriptor. [new] * ext/socket/socket.c (tcp_sysaccept): new method to return an accepted socket fd (integer). [new] * ext/socket/socket.c (unix_sysaccept,sock_sysaccept): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-font-lock-keywords): symbols end with '_'.nobu2002-05-211-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_clear_cache_by_class): new function.matz2002-05-141-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | * eval.c (set_method_visibility): should have clear cache forq updated visibility. * numeric.c (flo_to_s): default format precision to be "%.16g". * util.c (ruby_strtod): use own strtod(3) implementation to avoid locale hell. Due to this change "0xff".to_f no longer returns 255.0 * eval.c (avalue_to_yvalue): new function to distinguish yvalue (no-arg == Qundef) from svalue (no-arg == Qnil). * eval.c (rb_yield_0): use avalue_to_yvalue(). * eval.c (assign): warn if val == Qundef where it means rhs is void (e.g. yield without value or call without argument). * parse.y (value_expr): need not to warn for WHILE and UNTIL, since they can have return value (via valued break). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-font-lock-keywords): fontify symbols fornobu2002-04-101-1/+1
| | | | | | | unary operators and aset. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-block-hanging-re): rescue block was toonobu2002-02-181-2/+6
| | | | | | | indented. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-font-lock-keywords): fontifynobu2002-02-171-3/+3
| | | | | | | instance/class/global variables start with '_'. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * file.c (rb_stat_inspect): print dev, rdev in hexadecimal.matz2002-02-011-0/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * file.c (rb_stat_rdev_major): added. [new]matz2002-01-291-2/+9
| | | | | | | | | * file.c (rb_stat_rdev_minor): added. [new] * file.c (rb_stat_inspect): print mode in octal. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * class.c (rb_include_module): detect cyclic module inclusion.matz2002-01-251-2/+1
| | | | | | | | | | | | | | | | | | | | | | * eval.c (rb_thread_cleanup): need not to free thread stacks at process termination. * array.c (rb_ary_fetch): use the block to get the default value if the block is given. * eval.c (rb_thread_schedule): should check time only if BOTH WAIT_SELECT and WAIT_TIME. * eval.c (umethod_bind): should update rklass field. * hash.c (rb_hash_update): if a block is given, yields [key, value1, value2] to the block to resolve conflict. * string.c (rb_str_split_m): no need to consider KANJI characters, if the length of separator is 1 (byte). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * array.c (Init_Array): remove Array#filter.matz2002-01-231-4/+8
| | | | | | | | | | | | | * object.c (rb_mod_initialize): should accept zero argument. * object.c (rb_mod_cmp): should raise ArgumentError if inheritance/inclusion relation between two classes/modules is not defined. [new] * io.c (rb_io_fsync): new method. [new] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (rb_io_s_new): block check moved from initialize to thismatz2002-01-181-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | method. * io.c (rb_io_s_open): open should call initialize too. IO#for_fd also calls initialize. [new] * error.c (rb_sys_fail): replace INT2FIX() by INT2NUM() since errno value may not fit in Fixnum size on Hurd. * error.c (set_syserr): ditto. * dir.c (dir_s_glob): returns nil if block given. * io.c (rb_io_each_byte): should return self. * io.c (rb_io_close_m): close check added. * dir.c (dir_seek): should return pos. * parse.y (fixpos): orig may be (NODE*)1, which should not be dereferenced. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2004 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-calculate-indent): indentation afternobu2002-01-091-7/+15
| | | | | | | | | | comment at beginning of buffer failed. * misc/ruby-mode.el (font-lock-defaults): unless XEmacs, set font-lock variables in ruby-mode-hook. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * misc/ruby-mode.el (ruby-forward-string): forward a string. [new]nobu2002-01-051-78/+84
| | | | | | | | | | | | | * misc/ruby-mode.el (ruby-parse-region): handle nested parentheses in a string and terminators in #{}. * misc/ruby-mode.el (ruby-calculate-indent): ditto. * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): fix font-lock problem [ruby-talk:29296]. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_f_system): abandon vfork.matz2002-01-041-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | * io.c (pipe_open): ditto. * defines.h: sparc linux needs different FLUSH_REGISTER_WINDOWS * regex.c (re_search): abandon stclass optimization. * bignum.c (rb_cstr2inum): deny "0_". * bignum.c (rb_cstr2inum): allow "0\n" and so on. * error.c (rb_invalid_str): utility function to show inspect()'ed string. * bignum.c (rb_cstr2inum): prints invalid strings in inspect()'ed format. * object.c (rb_Float): ditto. * object.c (rb_convert_type): no longer use rb_rescue(). * re.c (rb_reg_search): initialize taint status of match object. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e