summaryrefslogtreecommitdiffstats
path: root/string.c
Commit message (Collapse)AuthorAgeFilesLines
* * parse.y (yylex): remove EXPR_CMDARG according to the RHG book.matz2003-01-311-7/+14
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Updated Copyrights of Matz to 2003.michal2003-01-161-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_substr): should share the shared string ifnobu2002-12-301-2/+5
| | | | | | | present, instead of the original string. (ruby-bugs:PR#528) git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * array.c (ary_alloc), dir.c (dir_s_alloc), eval.c (thgroup_s_alloc),usa2002-12-211-0/+1
| | | | | | | | | | | | | | | file.c (rb_stat_s_alloc), hash.c (hash_alloc), io.c (io_alloc), object.c (rb_module_s_alloc, rb_class_allocate_instance), re.c (match_alloc, rb_reg_s_alloc), string.c (str_alloc), time.c (time_s_alloc), ext/digest/digest.c (rb_digest_base_alloc), ext/tcltklib/tcltklib.c (ip_alloc), ext/win32ole/win32ole.c (fole_s_allocate, fev_s_allocate) : add prototype to get rid of VC++ warnings. * ext/sdbm/init.c (fsdbm_alloc): allocator takes only one argument. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y (do_block): split "do" block and tLBRACE_ARG block.matz2002-12-201-8/+8
| | | | | | | | | | | | | | | | | * parse.y (cmd_brace_block): new tLBRACE_ARG block rule * parse.y (command): can take optional cmd_brace_block; use %prec to resolve shift/reduce conflict. (ruby-bugs-ja PR#372) * eval.c (ruby_finalize): trace_func should be cleared here (after executing exit procs and finalizers). * eval.c (rb_define_alloc_func): new allocation framework, based on Nobu's work [ruby-dev:19116]. "allocate" method is no longer used for object allocation. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * numeric.c (num_step): use DBL_EPSILON.matz2002-12-191-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * array.c (rb_check_array_type): new function: return an array (convert if possible), or nil. * string.c (rb_check_string_type): new function: return a string (convert if possible), or nil. * numeric.c (rb_dbl_cmp): returns nil if values are not comparable. * numeric.c (fix_cmp,flo_cmp): use rb_num_coerce_cmp() * bignum.c (rb_big_cmp): ditto. * numeric.c (rb_num_coerce_cmp): new coercing function for "<=>", which does not raise TypeError. * numeric.c (do_coerce): can be supress exception now. * object.c (rb_mod_cmp): should return nil for non class/module objects. * re.c (rb_reg_eqq): return false if the argument is not a string. now returns boolean value. * class.c (rb_include_module): argument should be T_MODULE, not T_class, nor T_ICLASS. * eval.c (is_defined): "defined?" should return "assignment" for attribute assignment (e.g. a.foo=b) and indexed assignment (e.g. a[2] = 44). * parse.y (aryset): use NODE_ATTRASGN. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_dup_frozen): handle tail shared string.nobu2002-12-181-2/+5
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_new4): handle tail shared string.nobu2002-12-171-9/+24
| | | | | | | (ruby-bugs-ja:PR#370) git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * node.h (NODE_ATTRASGN): new node, assignment to attribute.nobu2002-12-171-2/+12
| | | | | | | | | | | | | [ruby-core:00637]. * eval.c (is_defined, rb_eval): ditto. * parse.y (attrset, node_assign): ditto. * string.c (rb_str_substr): tail sharing. [ruby-core:00650] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * sprintf.c (rb_f_sprintf): preceding ".." for negative numbersmatz2002-12-101-1/+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-0/+1
| | | | | | | | | | | | | | | | | | | 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
* * string.c (rb_str_split_m): RSTRING(str)->ptr might become NULL.aamine2002-10-241-1/+5
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_eval): added NODE_DSYM, symbol literal withnobu2002-10-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | interpolation. * node.h: ditto. * intern.h: prototypes; rb_is_junk_id, rb_str_dump, rb_str_intern * object.c (sym_inspect): escape and quote for non-alphanumeric symbols. * parse.y (dsym, tokadd_string, yylex): extended symbol literals. * parse.y (rb_is_junk_id): added. * string.c (rb_str_dump, rb_str_intern) : make extern. * lib/mkmf.rb (create_makefile): deffile should be removed by distclean, not clean. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (appendline): forget to terminate with nul.matz2002-09-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * eval.c (ruby_run): should set toplevel visibility again here. * eval.c (rb_eval): should not rely on ruby_class == rb_cObject check. Besides allow implicit publicity for attribute set methods. * parse.y (primary): need not to check class_nest, just set whether method is an attrset or not. * string.c (rb_str_each_line): p might be at the top of the string. * class.c (rb_make_metaclass): class of metaclass should be metaclass of superclass, unless class itself is a metaclass; class of metaclass of metaclass should point back to self. eh, confusing, isn't it. * class.c (rb_singleton_class): check if its class is singleton AND attached to self. * eval.c (rb_eval): should define class/module under ruby_cbase. * eval.c (rb_eval): should set class/module path based on ruby_cbase, not ruby_class. * eval.c (module_setup): use ruby_cbase instead of ruby_class. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix-Addons [ruby-core:483] with corrections from [ruby-core:484]michal2002-09-131-8/+8
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * dir.c (glob_helper): prevent memory leak using rb_protect().matz2002-09-121-62/+72
| | | | | | | | | | | | | | | | | | | | | * string.c (rb_str_associate): no need to check freeze flag. * string.c (rb_str_resize): should honor STR_ASSOC flag on resize. * string.c (rb_str_resize): proper STR_ASSOC handling. pointed out by Michal Rokos. * string.c (rb_str_buf_cat): ditto. * string.c (rb_str_cat): ditto. * string.c (rb_str_buf_append): ditto. * string.c (rb_str_append): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (get_pat): Add an extra argument "quote".knu2002-09-111-17/+19
| | | | | | | | * string.c (rb_str_match_m): Do not bother to convert if a regexp is given. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * variable.c (rb_copy_generic_ivar): remove old generic instancematz2002-09-031-2/+2
| | | | | | | | | | variable table if it existes. * class.c (rb_make_metaclass): metaclass of a metaclass is a metaclass itself. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * array.c (rb_ary_become): should not free ptr if it's shared.matz2002-08-291-7/+21
| | | | | | | | | | | * eval.c (rb_alias): prohibit making an alias named "allocate" if klass is a metaclass. * string.c (rb_string_value_ptr): StringValuePtr() should never return NULL pointer. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Int vs Long cleanup #3 (ruby-core:352)michal2002-08-281-3/+3
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_delete_bang): should check if str->ptr is 0.matz2002-08-281-2/+13
| | | | | | | | | | | | | | | * string.c (rb_str_squeeze_bang): ditto. * string.c (rb_str_count): ditto. * string.c (rb_str_lstrip_bang): ditto. * string.c (rb_str_rstrip_bang): ditto. * string.c (rb_str_intern): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_rstrip_bang): don't access address -1.eban2002-08-271-3/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * file.c (rb_find_file): $LOAD_PATH must not be empty.matz2002-08-271-46/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * file.c (rb_find_file_ext): ditto. * range.c (range_eq): class check should be based on range.class, instead of Range to work with Range.dup. * range.c (range_eql): ditto. * class.c (rb_mod_dup): need to preserve metaclass and flags. * object.c (rb_cstr_to_dbl): had a buffer overrun. * marshal.c (w_class): integrate singleton check into a funciton to follow DRY principle. * marshal.c (w_uclass): should check singleton method. * object.c (rb_obj_dup): dmark and dfree functions must be match for T_DATA type. * object.c (rb_obj_dup): class of the duped object must be match to the class of the original. * re.c (rb_reg_quote): do not escape \t, \f, \r, \n, for they are not regular expression metacharacters. * time.c (time_s_alloc): use time_free instead of free (null check, also serves for type mark). * time.c (time_s_at): check dfree function too. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* *.c: Int vs Long cleanupmichal2002-08-211-18/+15
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_rindex): must return -1 if unmatched.usa2002-08-061-0/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * random.c: replace with Mersenne Twister RNG.matz2002-07-261-70/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * eval.c (jump_tag_but_local_jump): preserve retval in LocalJumpError exceptions. * parse.y (command): no more check for "super outside of method". * eval.c (rb_mod_define_method): should set last_class and last_func in the block->frame. * eval.c (error_handle): should handle TAG_THROW as well. * parse.y (yylex): new decimal notation '0d4567'. * parse.y (yylex): new octal notation '0o777'. * parse.y (string_content): every string_content node should return string only. use NODE_EVSTR to coercing. * eval.c (rb_eval): NODE_EVSTR support. * re.c (rb_reg_quote): avoid unnecessary string allocation. * string.c (get_pat): quote metachracters before compiling a string into a regex. * string.c (rb_str_split_m): special treatment of strings of size 1, but AWK emulation. now uses get_pat(). * string.c (rb_str_match_m): quote metacharacters. * string.c (rb_str_match2): ditto. * ext/socket/socket.c (sock_addrinfo): make all 3 versions of getaddrinfo happy. [ruby-core:00184] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_match): fix for string match.nobu2002-07-111-2/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_slice_bang): if there's no correspondingmatz2002-07-111-52/+58
| | | | | | | | | | | | | | | | | | | | substring, slice! should return nil without exception. * array.c (rb_ary_insert): type fixed. * string.c (rb_str_split_m): accept separator value nil as well. * string.c (rb_str_become): was leaking memory. * class.c (rb_include_module): should not alter other classes/modules by inclusion. by this fix, local order may not be preserved for some cases. * class.c (include_class_new): module may be T_ICLASS; retrieve original module information. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y (yylex): obsolete '?<whitespace>'; use '?\s', '?\n',matz2002-06-181-1/+6
| | | | | | | | | | | | | | | | etc, instead. * parse.y (yylex): no here document after a dot. * parse.y (yylex): should have set lex_state after '`'. * parse.y (yylex): should have set lex_state properly after tOP_ASGN. * bignum.c (rb_big2dbl): return canonical HUGE_VAL for infinity. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_aset): should raise error if an indexing stringmatz2002-06-041-2/+3
| | | | | | | | | | | | is not found in the receiver. * sprintf.c (rb_f_sprintf): "%d" should convert objects into integers using Integer(). * lib/tempfile.rb (Tempfile::size): added. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y: yyparse #defines moved from intern.hmatz2002-05-291-1/+1
| | | | | | | | | | | | | | | | | | | * ruby.c (proc_options): access prefixed "ruby_yydebug". * applied modifies to pacify some of gcc -Wall warnings. * parse.y (arg): no more ugly hack for "**", so that "-2**2" to be parsed as "(-2)**2", whereas "- 2**2" or "-(2)**2" to be parsed as "-(2**2)". * parse.y (yylex): '-2' to be literal fixnum. [new] * time.c (time_succ): new method for Range support. * time.c (time_arg): nil test against v[6] (usec). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * array.c: fixed format string for 'long' args (%d -> %ld).michal2002-05-281-3/+3
| | | | | | | | | | | | | | | | | | | | | * class.c: ditto. * eval.c: ditto. * numeric.c: ditto. * pack.c: ditto. * parse.y: ditto. * range.c: ditto. * string.c: ditto. * util.c: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (rb_io_mode_flags): both 'r+b' and 'rb+' should be allowed.matz2002-04-241-12/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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: http://svn.ruby-lang.org/repos/ruby/trunk@2401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * re.c (rb_reg_expr_str): should treat backslash specially inmatz2002-04-181-2/+6
| | | | | | | | | | | | | | | | | escaping. * io.c: complete off_t handling; missing argument for fptr_finalize(); polished rb_scan_args call. * dir.c: wrap multi-statment macro by do { } while (0) * eval.c, numeric,c, sprintf.c, util.c: ditto. * bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum, Bignum, nor Float. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * re.c (rb_reg_search): should clear last_match if pos is out ofmatz2002-03-191-2/+12
| | | | | | | | | | | | | | | string range. * string.c (rb_str_index_m): ditto. * string.c (rb_str_rindex): ditto. * class.c (rb_define_class): should handle autoload. * class.c (rb_define_module): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_subpat_set): must make str independent afternobu2002-03-141-0/+1
| | | | | | | rb_reg_search() matched. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * marshal.c (w_object): module inclusion using extend() shouldmatz2002-03-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | also be detected. * eval.c (rb_eval_cmd): cbase should not be NULL; it should be either ruby_wrapper or Object. * enum.c (enum_each_with_index): should return self. * process.c (proc_setpgrp): should return value for non-void function. * process.c (proc_getpgid): should raise exception if getpgid() return -1. * string.c (rb_str_ljust): should return a duplicated string. * string.c (rb_str_rjust): ditto. * string.c (rb_str_center): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * intern.h: prototypes for new functions; rb_cstr_to_inum(),nobu2002-02-011-20/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rb_str_to_inum(), rb_cstr_to_dbl(), rb_str_to_dbl() * bignum.c (rb_cstr_to_inum): changed from rb_cstr2inum(), and added argument badcheck to be consistent with parser. [new] * bignum.c (rb_str_to_inum): ditto. * bignum.c (rb_cstr2inum): wapper of rb_cstr_to_inum() now. * bignum.c (rb_str2inum): ditto. * object.c (rb_cstr_to_dbl): float number parser. [new] * object.c (rb_str_to_dbl): ditto. * object.c (rb_Float): use rb_cstr_to_dbl() for strict check. * object.c (rb_Integer): use rb_str_to_inum() for strict check. * string.c (rb_str_to_f): use rb_str_to_dbl() with less check. * string.c (rb_str_to_i): use rb_str_to_inum() with less check. * string.c (rb_str_hex): ditto. * string.c (rb_str_oct): ditto. * sprintf.c (rb_f_sprintf): ditto. * time.c (obj2long): ditto. * parse.y (yylex): use rb_cstr_to_inum() for strict check. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (is_defined): defined?(Foo::Baz) should check constantsmatz2002-01-281-1/+1
| | | | | | | | | | | | | | | | | | | | | only, no methods. * eval.c (is_defined): should not dump core on defined?(a::b) where a is not a class nor a module. * object.c (Init_Object): remove dup and clone from TrueClass, FalseClass, and NilClass. * array.c (rb_ary_fill): Array#fill takes block to get the value to fill. * string.c (rb_str_to_i): to_i(0) auto-detects base radix. * array.c (rb_ary_initialize): fill by the block evaluation value if block is given. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2021 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
* * re.c (match_select): should propagate taintness.matz2002-01-111-4/+19
| | | | | | | | | | | | | * hash.c (rb_hash_set_default): Hash#default= should return the new value. * string.c (rb_str_to_i): accepts optional base argument. [new] * numeric.c (rb_fix2str): should not handle negative fixnum values int32 via calling sprintf() directly. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_new2): NULL pointer check added.matz2002-01-071-0/+3
| | | | | | | | * class.c (rb_define_module_under): should locate predefined module using rb_const_defined_at(). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_mod_define_method): define_method should followmatz2001-12-191-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | default method visibility. * eval.c (rb_attr): should warn if the default method visibility is "module_function" (can be error). * eval.c (rb_mod_define_method): should define class/module method also if the visibility is "module_function". * eval.c (rb_mod_define_method): should call hook method "method_added", and "singleton_method_added". * string.c: use RESIZE_CAPA for capacity change. * ext/socket/socket.c (Init_socket): add listen method to TCPServer and UNIXServer. * ext/socket/socket.c (bsock_send): should raise EWOULDBLOCK exception. * ext/socket/socket.c (s_recvfrom): ditto. * ext/socket/socket.c (s_accept): ditto. * ext/socket/socket.c (udp_send): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_replace): swap arguments of OBJ_INFECT.matz2001-12-181-36/+43
| | | | | | | | | | | | * eval.c (rb_thread_schedule): should not select a thread which is not yet initialized. * time.c (time_plus): wrong boundary check. * time.c (time_minus): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_match_m): should convert an argument intomatz2001-12-111-0/+7
| | | | | | | | | | | | | | | | | | | | | | regexp if it's a string. * array.c (rb_ary_select): Array#select(n,m,...) now works like Array#indexes(n,m,..). [new, experimental] * hash.c (rb_hash_select): ditto. * hash.c (env_select): ditto. * re.c (match_select): ditto. * struct.c (rb_struct_select): ditto. * gc.c (STR_ASSOC): use FL_USER3 instead of FL_USER2. * parse.y (str_extend): make up pushback call. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * array.c (rb_ary_modify): should copy the internal buffer if thematz2001-12-101-104/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | modifying buffer is shared. * array.c (ary_make_shared): make an internal buffer of an array to be shared. * array.c (rb_ary_shift): avoid sliding an internal buffer by using shared buffer. * array.c (rb_ary_subseq): avoid copying the buffer. * parse.y (gettable): should freeze __LINE__ string. * io.c (rb_io_puts): old behavoir restored. rationale: a) if you want to call to_s for arrays, you can just call print a, "\n". b) to_s wastes memory if array (and sum of its contents) is huge. c) now any object that has to_ary is treated as an array, using rb_check_convert_type(). * hash.c (rb_hash_initialize): now accepts a block to calculate the default value. [new] * hash.c (rb_hash_aref): call "default" method to get the value corrensponding to the non existing key. * hash.c (rb_hash_default): get the default value based on the block given to 'new'. Now it takes an optinal "key" argument. "default" became the method to get the value for non existing key. Users may override "default" method to change the hash behavior. * hash.c (rb_hash_set_default): clear the flag if a block is given to 'new' * object.c (Init_Object): undef Data.allocate, left Data.new. * ext/curses/curses.c (window_scrollok): use RTEST(). * ext/curses/curses.c (window_idlok): ditto. * ext/curses/curses.c (window_keypad): ditto. * ext/curses/curses.c (window_idlok): idlok() may return void on some platforms; so don't use return value. * ext/curses/curses.c (window_scrollok): ditto for consistency. * ext/curses/curses.c: replace FIX2INT() by typechecking NUM2INT(). * parse.y (str_extend): should not process immature #$x and #@x interpolation, e.g #@#@ etc. * enum.c (enum_sort_by): sort_by does not have to be stable always. * enum.c (enum_sort_by): call qsort directly to gain performance. * util.c (ruby_qsort): ruby_qsort(qs6) is now native thread safe. * error.c (rb_sys_fail): it must be a bug if it's called when errno == 0. * regex.c (WC2MBC1ST): should not pass through > 0x80 number in UTF-8. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1896 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_equal): object with to_str must be treated as amatz2001-11-291-2/+4
| | | | | | | string. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_mod_modfunc): should follow NODE_ZSUPER link; basedmatz2001-11-191-1/+1
| | | | | | | | | | | on Guy Decoux's patch in [ruby-talk:25478]. * string.c (rb_str_succ): there was buffer overrun. * parse.y (str_extend): term can be any character. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y (parse_regx): should raise error on untermitatedmatz2001-11-191-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | expression interpolation. * pack.c (pack_unpack): should give length to utf8_to_uv(). * pack.c (utf8_to_uv): add length check. * massages: replace "wrong #" by "wrong number". * marshal.c (w_float): output Infinity and NaN explicitly. * marshal.c (r_object): support new explicit float format. * eval.c (rb_thread_wait_for): select may cause ERESTART on Solaris. * eval.c (rb_thread_select): ditto. * array.c (rb_ary_join): dumped core if sep is not T_STRING nor T_NIL. * array.c (rb_ary_join): buffer size calculattion was wrong. * array.c (rb_ary_to_s): if rb_output_fs is nil, insert newlines between array elements (use rb_default_rs as newline litral) [experimental]. * gc.c (init_mark_stack): no need to clear mark_stack. * gc.c (gc_mark_all): need to handle finalizer mark. * gc.c (gc_mark_rest): use MEMCPY instead of memcpy. * gc.c (rb_gc_mark): earlier const check to avoid pusing special constants into mark stack. * numeric.c (fix_to_s): 'to_s' now takes optional argument to specify radix. [new] * bignum.c (rb_big_to_s): ditto. [new] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * signal.c (sighandle): should not re-register sighandler ifmatz2001-11-131-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | POSIX_SIGNAL is defined. * eval.c (error_print): errat array may be empty. * eval.c (rb_eval_cmd): should not upgrade safe level unless explicitly specified by argument newly added. * signal.c (sig_trap): should not allow tainted trap closure. * variable.c (rb_f_trace_var): should not allow trace_var on safe level higher than 3. * variable.c (rb_f_trace_var): should not allow tainted trace closure. * gc.c: do not use static stack until system stack overflows. * eval.c (eval): should call Exception#exception instead of calling rb_exc_new3() directly. * error.c (exc_exception): set "mesg" directly to the clone. it might be better to set mesg via some method for flexibility. * variable.c (cvar_override_check): should print original module name, if 'a' is T_ICLASS. * parse.y (yylex): float '1_.0' should not be allowed. * variable.c (var_getter): should care about var as Qfalse (ruby-bugs#PR199). * array.c (cmpint): <=> or block for {min,max} may return bignum. * array.c (sort_1): use rb_compint. * array.c (sort_2): ditto. * enum.c (min_ii): ditto. * enum.c (min_ii): ditto. * enum.c (max_i): ditto. * enum.c (max_ii): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e