summaryrefslogtreecommitdiffstats
path: root/include/ruby/ruby.h
Commit message (Collapse)AuthorAgeFilesLines
* * include/ruby/ruby.h (FilePathValue): prevent from GC.nobu2009-05-251-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (NUM2LONG): added GCC specific optimization.nobu2009-05-251-2/+8
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (RB_EVENT_HOOKS_HAVE_CALLBACK_DATA):nobu2009-05-211-0/+1
| | | | | | | new macro for compatibility check. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (rb_long2int, RARRAY_LENINT): check long tonobu2009-05-201-0/+19
| | | | | | | | | cast to int. [ruby-dev:38508] * struct.c, vm_eval.c, vm_insnhelper.c: use RARRAY_LENINT. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c: add longlife garbage collection. [ruby-dev:38423]nari2009-05-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (NORMAL_HEAPS_USED): new macro. (LONGLIFE_ALLOCATE_HEAPS_MIN): ditto. (add_longlife_heaps_slot): new function. (rb_newobj_from_longlife_heap): ditto. (rb_newobj_longlife): ditto. (rb_node_newnode_longlife): ditto. (rb_gc_write_barrier): ditto. (remembered_set_recycle): ditto. (rb_gc_mark_remembered_set): ditto. (clear_mark_longlife_heaps): ditto. (gc_sweep_for_longlife): ditto. (assign_heap_slot): new argumnent to longlife heaps slot. (add_freelist): ditto. (gc_sweep): avoid lonlife heap slot. set longlife_collection flag at add heap. (rb_gc_force_recycle): avoid mark object and remembered_set object. (garbage_collect): add longlife collection. (rb_gc_start): invoke longlife collection. (gc_profile_record_get): for longlife collction profile. (gc_profile_result): ditto. * include/ruby/intern.h (rb_gc_write_barrier): declared. * include/ruby/ruby.h (FL_REMEMBERED_SET): renamed from FL_RESERVED. * debug.c (FL_REMEMBERED_SET): ditto. * insns.def (setinlinecache): insert write barrier. * vm_insnhelper.c (vm_method_search): ditto. * set_relation (set_relation): use longlife object. * vm.c (vm_define_method): ditto. * vm_core.h (NEW_INLINE_CACHE_ENTRY): ditto. * vm_method.c (rb_add_method): ditto. * class.c (rb_add_method): ditto. * node.h (NEW_NODE_LONGLIFE): new macro. (rb_node_newnode_longlife): declared. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (ruby_cleanup): the order of local variables on stack isnobu2009-04-191-2/+2
| | | | | | | | | | | | undefined. should use outermost VALUE for ruby_init_stack. * gc.c (ruby_get_stack_grow_direction, Init_stack): allows volatile pointer. * thread_*.c (ruby_init_stack): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (rb_mWaitReadable): defined.akr2009-03-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (rb_mWaitWritable): defined. (io_getpartial): extend IO::WaitReadable on EWOULDBLOCK and EAGAIN. (rb_io_write_nonblock): extend IO::WaitWritable on EWOULDBLOCK and EAGAIN. * error.c (make_errno_exc): extracted from rb_sys_fail. (rb_mod_sys_fail): new function. * include/ruby/ruby.h (rb_mod_sys_fail): declared. (rb_mWaitReadable): declared. (rb_mWaitWritable): declared. * ext/socket/init.c (rsock_s_recvfrom_nonblock): extend IO::WaitReadable on EWOULDBLOCK and EAGAIN. (rsock_s_accept_nonblock): extend IO::WaitReadable on EWOULDBLOCK, EAGAIN, ECONNABORTED and EPROTO. * ext/socket/socket.c (sock_connect_nonblock): extend IO::WaitWritable on EINPROGRESS. * ext/socket/ancdata.c (bsock_sendmsg_internal): extend IO::WaitWritable on EWOULDBLOCK and EAGAIN. (bsock_recvmsg_internal): extend IO::WaitReadable on EWOULDBLOCK and EAGAIN. * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): raise SSLError extended by IO::WaitReadable/IO::WaitWritable on SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE. * ext/openssl/ossl.c (ossl_make_error): extracted from ossl_raise. (ossl_exc_new): new function. * ext/openssl/ossl.h (ossl_exc_new): declared. * lib/net/protocol.rb (rbuf_fill): rescue IO::WaitReadable and IO::WaitWritable. [ruby-core:22539], [ruby-dev:38140] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h ({RSTRING,RBIGNUM}_EMBED_LEN_MAX): made int.nobu2009-03-151-5/+5
| | | | | | | | | * include/ruby/ruby.h (OBJ_{TAINTED,UNTRUSTED,FROZEN}): return int. * include/ruby/encoding.h (ENC_CODERANGE): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (bool): not define to get rid of conflictnobu2009-03-131-24/+2
| | | | | | | against curses. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in (AC_HEADER_DIRENT): added.nobu2009-03-131-4/+33
| | | | | | | | | | | | * include/ruby/ruby.h (NUM2INT, rb_special_const_p): returns true and false instead of Qtrue and Qfalse for platforms where VALUE is bigger than int. * gc.c (gc_stress_set), ext/openssl/ossl_asn1.c (decode_bool): got rid of variables named `bool'. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (USE_SYMBOL_AS_METHOD_NAME): Module#methods,nobu2009-02-231-0/+3
| | | | | | | #singleton_methods and so on return Symbols. [ruby-talk:328775] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (STR2CSTR): removed.akr2009-01-311-5/+0
| | | | | | | | | | (rb_str2cstr): removed. * object.c (rb_str2cstr): removed. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (VALUE): use unsigned long or long longnobu2009-01-161-3/+6
| | | | | | | instead of uintptr_t, since many %lx and so on are still used. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX): must define as string.usa2009-01-161-1/+1
| | | | | | | | | | | if not, cause compile error in using PRI?VALUE. * win32/Makefile.sub (config.h): add SIZEOF_INTPTR_T and SIZEOF_UINTPTR_T for SIZEOF_VALUE. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in (RUBY_REPLACE_TYPE): does not define rb_ prefixednobu2009-01-161-3/+26
| | | | | | | | | | | | | | name if no default type is given. * configure.in (RUBY_DEFINT): checks size. * include/ruby/ruby.h (VALUE): use uintptr_t if available. * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): assumes usable if PRIdPTR is defined. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/curses/curses.c: curses encoding should obey locale.matz2008-11-071-0/+1
| | | | | | | | * ext/curses/curses.c (curses_getch): 1.9 getch should return one character string for single byte string. wchar_t support may follow in the future. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (ExportStringValue): new macro to convertmatz2008-10-201-0/+6
| | | | | | | | | | | | | string in internal encoding to external to export. * string.c (rb_str_export): new function to do conversion to external encoding. * ext/sdbm/init.c: encoding conversion support. * ext/dbm/dbm.c: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (Init_IO): $FILENAME and $* must be read-only. [ruby-dev:36698]nobu2008-10-141-0/+20
| | | | | | | | | * variable.c (*_getter, *_setter, *_marker): made public. * include/ruby/ruby.h (rb_gvar_*_{getter,setter,marker}): declared. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h: embeds the elements of an array into itsyugui2008-10-091-8/+25
| | | | | | | | | | | | | | | | | | struct RArray for # of elements <= 3. * array.c: ditto. * gc.c (gc_mark_children): following the change of struct RArray. * ext/tk/tcltklib.c (ip_ruby_cmp): ditto. * parse.y (coverage): ditto. * proc.c (curry): ditto. * .gdbinit: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * dln.c: Ruby no longer supports VMS.yugui2008-10-041-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * error.c: ditto. * eval.c: ditto. * eval_intern.h: ditto. * include/ruby/defines.h: ditto. * include/ruby/ruby.h: ditto. * io.c: ditto. * process.c: ditto. * ruby.c: ditto. * vms/config.h: removed. * vms/vms.h: ditto. * vms/vmsruby_private.c: ditto. * vms/vmsruby_private.h: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (rb_mPrecision): removed.yugui2008-09-261-1/+0
| | | | | | Precision module was temporarily removed at r19430. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * error.c (Init_Exception): introduce EncodingError which is amatz2008-09-261-0/+1
| | | | | | | | | superclass for all encoding related exception classes, e.g. Encoding::CompatibilityError. [ruby-dev:36371] * transcode.c (Init_transcode): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * complex.c: an instance method image has been removed andtadf2008-09-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | uses "imag" instead of "image". * complex.c: two instance method re and im are removed. * rational.c: follows the above changes. * include/ruby/ruby.h: ditto. * gc.c: ditto. * lib/cmath.rb: ditto. * lib/mathn.rb: ditto. * lib/complex.rb: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * transcode.c: add "Error" suffix for Encoding exception classes.matz2008-09-181-0/+1
| | | | | | | | | | a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp> in [ruby-dev:36346]. * encoding.c (Init_Encoding): rename EncodingCompatibilityError to Encoding::CompatibilityError. [ruby-dev:36366] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c, include/ruby/ruby.h: rename rb_register_mark_object()ko12008-09-151-1/+1
| | | | | | | | | | | | | | to rb_gc_register_mark_object(). * eval.c, vm.c: initialize vm->mark_object_ary at Init_top_self(). * bignum.c, complex.c, encoding.c, ext/win32ole/win32ole.c, io.c, load.c, marshal.c, rational.c, ruby.c, vm.c: use rb_gc_register_mark_object() instead of rb_global_variable() or rb_gc_register_address(). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typos.akr2008-09-091-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.matz2008-09-051-1/+1
| | | | | | | a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp> in [ruby-dev:36102]. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c, include/ruby/ruby.h: rename T_DEFERRED to T_ZOMBIE.ko12008-08-291-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (INT2NUM): just use a simple macro on LP64.akr2008-08-211-10/+15
| | | | | | | (UINT2NUM): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix previsous change again.akr2008-08-211-4/+6
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h: fix previous change for LP64.akr2008-08-211-2/+6
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (NUM2LONG): make it inline function to evalueteakr2008-08-211-7/+44
| | | | | | | | | | | | | | | the argument only once. `t = Object.new; def t.*(x) p x; 0 end; p Time.at(0, t)' did print x twice. (NUM2INT): ditto. (NUM2LL): ditto. (INT2NUM): make it inline function. (LONG2NUM): ditto. (UINT2NUM): ditto. (ULONG2NUM): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (rb_intern_const): tiny optimization.nobu2008-08-161-0/+6
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h: commit miss.nobu2008-08-161-0/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (SSIZET2NUM, NUM2SSIZET, SSIZE_MAX, SSIZE_MIN):nobu2008-08-151-0/+20
| | | | | | | macros for ssize_t. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * object.c (rb_obj_untrusted): new method Object#untrusted?.shugo2008-08-131-7/+9
| | | | | | | | | | | | | | | (rb_obj_untrust): new method Object#untrust. (rb_obj_trust): new method Object#trust. * array.c, debug.c, time.c, include/ruby/ruby.h, re.c, variable.c, string.c, io.c, dir.c, vm_method.c, struct.c, class.c, hash.c, ruby.c, marshal.c: fixes for Object#untrusted?. * test/ruby/test_module.rb, test/ruby/test_array.rb, test/ruby/test_object.rb, test/ruby/test_string.rb, test/ruby/test_marshal.rb, test/ruby/test_hash.rb: added tests for Object#untrusted?. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * error.c (rb_eEncCompatError): add Exception.naruse2008-08-121-0/+1
| | | | | | | | | | | | | | | | * include/ruby/ruby.h: ditto. * encoding.c (rb_enc_check): use rb_eEncCompatError. * string.c (rb_enc_cr_str_buf_cat): ditto. * string.c (rb_str_sub_bang): ditto. * string.c (rb_str_hex): ditto. * string.c (rb_str_oct): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (struct RString): size of ary must bemame2008-07-311-1/+1
| | | | | | | RSTRING_EMBED_LEN_MAX + 1. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h: add a type T_DEFERRED.ko12008-07-271-0/+2
| | | | | | | | | | | | | | * gc.c: fix deferred finalizer system. finalize processes of T_DATA and T_FILE are executed after gc process. And fix to use BUILTIN_TYPE() instead of seeing flag. * thread.c, vm_core.h: add RUBY_VM_SET_FINALIZER_INTERRUPT() and check intterupt_flag at rb_thread_execute_interrupts(). * thread.c (mutex_mark): fix to mark next_mutex. * vm.c (rb_thread_mark): fix to mark keeping_mutexes. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): typo.usa2008-07-121-2/+2
| | | | | | | | * {bcc32,win32}/Makefile.sub: (SIZEOF_SIZE_T, SIZEOF_PTRDIFF_T): added. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): fixed typo.nobu2008-07-121-6/+6
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18040 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in (sizeof ptrdiff_t): check for size of ptrdiff_t.nobu2008-07-121-13/+36
| | | | | | | | | | | | | * include/ruby/ruby.h (PRI?PTRDIFF, PRI?SIZE): printf conversion specifiers for ptrdiff_t and size_t/ssize_t. * insns.def (leave), marshal.c (long_toobig), transcode.c (str_transcode), vm_dump.c (control_frame_dump, stack_dump_each), (debug_print_register, debug_print_pre): t and z length modifiers are C99. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * dir.c: shoudn't use ruby object in globbing, because glob serviceusa2008-07-081-2/+2
| | | | | | | | | routines are called before initializing ruby on some platforms (ex. windows). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * dir.c: preserve encoding of strings in glob and fnmatch.naruse2008-07-071-3/+2
| | | | | | * include/ruby/ruby.h: related changes. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (NUM2INT): cast to int.akr2008-07-051-4/+4
| | | | | | | | | (FIX2INT): ditto. (NUM2UINT): cast to unsigned int. (FIX2UINT): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.h, insns.def: reduce insn operand of "trace".ko12008-07-011-12/+13
| | | | | | | | * include/ruby/ruby.h: add RUBY_EVENT_COVERAGE event. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (enum ruby_special_consts): ISO C forbidsshyouhei2008-07-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | comma at end of enumerator list * include/ruby/ruby.h (enum ruby_value_type): ditto. * eval_intern.h (enum): ditto. * vm_core.h (enum rb_thread_status): ditto. * parse.y (enum lex_state_e): ditto. * parse.y (enum string_type): ditto. * process.c (enum): ditto. * ruby.c (enum dump_flag_bits): ditto. * ruby.c (enum disable_flag_bits): ditto. * compile.c (iseq_link_element): ditto * debug.c (union): ditto. * cont.c (enum context_type): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (rb_intern): prefix __extnsion__ forshyouhei2008-07-011-1/+1
| | | | | | | | | | | | | braced-groups within expressions. * include/ruby/intern.h (rb_usascii_str_new2): ditto. * include/ruby/intern.h (rb_tainted_str_new2): ditto. * include/ruby/intern.h (rb_str_new2): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c, vm_core.h,vm_core.h, vm_dump.c, iseq.c: rename class nameko12008-06-291-3/+0
| | | | | | | | | | | | VM -> RubyVM, and rename rb_cVM -> rb_cRubyVM. "VM" is too short name for class. * test/ruby/test_method.rb, test/ruby/test_settracefunc.rb: ditto. * include/ruby/ruby.h: rb_cRubyVM, rb_cEnv, rb_cISeq should not be exposed. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (struct RRegexp): new field usecnt. replaceakr2008-06-281-2/+5
| | | | | | | | | | | | | | | | | | | | | str and len by src. * gc.c (gc_mark_children): mark src field of regexp. (obj_free): don't free str field. * re.c (REG_BUSY): removed. (rb_reg_initialize): prohibit re-initialize regexp. (rb_reg_search): use usecnt to prevent freeing regexp currently using. this prevents SEGV by: r = /\A((a.)*(a.)*)*b/ r =~ "ab" + "\xc2\xa1".force_encoding("euc-jp") t = Thread.new { r =~ "ab"*8 + "\xc2\xa1".force_encoding("utf-8")} sleep 0.2 r =~ "ab"*8 + "\xc2\xa1".force_encoding("euc-jp") git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e