Commit graph

70 commits

Author SHA1 Message Date
nobu
209cf1351b * util.c (ruby_add_suffix): fixed a bug returning uninitialized
value.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@28794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-29 22:59:54 +00:00
usa
53eb894474 * file.c (ruby_find_basename, ruby_find_extname): split from
rb_file_s_basename() and rb_file_s_extname().

* util.c (ruby_add_suffix): support arbitrary length of the suffix
  to get rid of the potential buffer overflow.
  reported by tarui.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@28526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-02 14:35:10 +00:00
nobu
3f0d0b9398 * *.[chy]: removed trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@25430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-22 01:00:18 +00:00
akr
b5898e70b0 * util.c: suppress strict-aliasing warning with gcc-4.4.0 -O2 to fix
infinite loop by ruby -e "1.402e-45" .


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-06 17:02:29 +00:00
nobu
a8e795ca53 * util.c (rv_strdup): macro to duplicate nul-terminated string.
[ruby-core:22852]

* util.c (ruby_dtoa): allocates one more byte to get rid of buffer
  overrun.  a patch from Charlie Savage at [ruby-core:22604].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 05:21:58 +00:00
nobu
64603725aa * util.c (ruby_dtoa): allocates one more byte to get rid of buffer
overrun.  a patch from Charlie Savage at [ruby-core:22604].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-01 10:41:26 +00:00
wanabe
eb362405e1 * util.c (ruby_strtod): ruby_strtod don't allow a trailing
decimal point like "7.". [ruby-dev:34835] [ruby-dev:35009]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 08:05:34 +00:00
nobu
54afba10a5 * util.c (ruby_strtod, dtoa): initialize more variables for error
handling.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-01 23:47:02 +00:00
nobu
9ed3d64d1d * suppress warnings on cygwin, mingw and mswin.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-01 19:55:25 +00:00
nobu
1378795e08 * suppress warnings with -Wwrite-string.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-31 09:28:20 +00:00
matz
00f4f4ff6f * util.c (ruby_strtod): backported from 1.9. a patch from Satoshi
Nakagawa <psychs at limechat.net> in [ruby-dev:34625]. 
  fixed: [ruby-dev:34623]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-10 00:18:32 +00:00
nobu
97dc8ee216 * util.c (valid_filename): use O_EXCL to get rid of clobbering
existing files in race conditions.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-23 18:53:00 +00:00
nobu
7595c80e55 * util.c (ruby_strtod): exponent is radix 10. [ruby-talk:248272]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-18 01:40:38 +00:00
eban
89f49fb477 * util.c (push_element): should return a int value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-03-04 05:51:57 +00:00
eban
204a4a24a1 * util.c (__crt0_glob_function): use ruby_glob() instead of rb_globi().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-27 12:38:13 +00:00
nobu
7b0c9cf2e2 * object.c (rb_cstr_to_dbl): limit out-of-range message.
* util.c (ruby_strtod): return end pointer even if ERANGE occurred.
  fixed: [ruby-dev:29041]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-18 01:55:15 +00:00
nobu
8b341cb27a * util.c (ruby_strtod): stop at dot not followed by digits.
fixed: [ruby-dev:29035]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-17 15:43:47 +00:00
nobu
ef8e63acb5 * util.c (powersOf10): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-26 15:54:22 +00:00
matz
7b724e750f * util.c (ruby_strtod): try to reduce errors using powersOf10
table.  [ruby-dev:28644]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-16 23:24:08 +00:00
matz
b0c7f088aa * util.c (ruby_strtod): differ addition to minimize error.
[ruby-dev:28619]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-11 10:59:12 +00:00
matz
b12d61b308 * util.c (ruby_strtod): should not raise ERANGE when the input
string does not have any digits.  [ruby-dev:28629]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-11 09:23:21 +00:00
matz
9466848db3 * numeric.c (num_div): use floor rather than rb_Integer().
[ruby-dev:28589]

* numeric.c (flo_divmod): the first element of Float#divmod should
  be an integer. [ruby-dev:28589]

* test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.

* util.c (ruby_strtod): fixed wrong conversion.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10123 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-01 03:46:47 +00:00
matz
15a5fba74f * util.c (ruby_strtod): should not cut off 18 digits for no
reason.  [ruby-core:07796]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10115 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-04-28 01:58:01 +00:00
ocean
386352b474 * util.c (ruby_strtod): Float("1e") should fail. [ruby-core:7330]
* pack.c (EXTEND32): unpack("l") did not work where sizeof(long) != 4.
  [ruby-talk:180024]

* pack.c (pack_unpack): fixed integer overflow on template "w".
  [ruby-talk:180126]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-17 02:21:39 +00:00
matz
ba19ba779c * array.c (rb_ary_uniq_bang): element size might change during
comparison.  [ruby-dev:24298]

* enum.c (enum_sort_by): do not use qsort directly.  use
  rb_ary_sort_bang() instead.  [ruby-dev:24291]

* enum.c (enum_sort_by): pedantic type check added.
  [ruby-dev:24291]

* hash.c (rb_hash_foreach_iter): check iter_lev after each
  iteration.  [ruby-dev:24289]

* array.c (rb_ary_and): element size might change during
  comparison.  [ruby-dev:24290]

* array.c (rb_ary_or): ditto. [ruby-dev:24292]

* array.c (rb_ary_equal): wrong fix. [ruby-dev:24286]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-21 09:35:29 +00:00
ocean
a22893d663 * util.c (ruby_strdup): remove unnecessary code. (xmalloc never
returns NULL.)

* util.c (ruby_getcwd): fix memory leak on failure.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-12 14:55:22 +00:00
ocean
956b1f9c82 * util.c (ruby_strtod): should not convert string in the form of
"-I.FE-X" which both "I" and "F" are ommitted. [ruby-dev:23883]

* test/ruby/test_float.rb (test_strtod): add test for bug fix.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-14 03:32:20 +00:00
ocean
0a3d13ba98 * util.c (ruby_strtod): strtod("0", &end); => end should point '\0'.
[ruby-dev:23498]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-14 03:17:50 +00:00
ocean
4d372569d8 * util.c (ruby_strtod): 0.0000000000000000001 == 0.0 should be false.
[ruby-talk:99318] [ruby-dev:23465]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-07 02:26:19 +00:00
eban
2a2fa6fd8b * util.c (mblen): fix overrun. [ruby-dev:22672]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@5587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-29 14:56:26 +00:00
matz
6212cfb9c5 * gc.c (Init_stack): stack region is far smaller than usual if
pthread is used.

* marshal.c (w_extended): singleton methods should not be checked
  when dumping via marshal_dump() or _dump(). [ruby-talk:85909]

* file.c (getcwdofdrv): avoid using getcwd() directly, use
  my_getcwd() instead.

* merged NeXT, OpenStep, Rhapsody ports patch from Eric Sunshine
  <sunshine@sunshineco.com>.  [ruby-core:01596]

* marshal.c (w_object): LINK check earlier than anything else,
  i.e. do not dump TYPE_IVAR for already dumped objects.
  (ruby-bugs PR#1220)

* eval.c (rb_eval): call "inherited" only when a new class is
  generated; not on reopening.

* eval.c (eval): prepend error position in evaluating string to

* configure.in: revived NextStep, OpenStep, and Rhapsody ports which
  had become unbuildable; enhanced --enable-fat-binary option so that
  it accepts a list of desired architectures (rather than assuming a
  fixed list), or defaults to a platform-appropriate list if user does
  not provide an explicit list; made the default list of architectures
  for MAB (fat binary) more comprehensive; now uses -fno-common even
  when building the interpreter (in addition to using it for
  extensions), thus allowing the interpreter to be embedded into a
  plugin module of an external project (in addition to allowing
  embedding directly into an application); added checks for
  <netinet/in_systm.h> (needed by `socket' extension) and getcwd(); now
  ensures that -I/usr/local/include is employed when extensions'
  extconf.rb scripts invoke have_header() since extension checks on
  NextStep and OpenStep will fail without it if the desired resource
  resides in the /usr/local tree; fixed formatting of --help message.

* Makefile.in: $(LIBRUBY_A) rule now deletes the archive before
  invoking $(AR) since `ar' on Apple/NeXT can not "update" MAB archives
  (see configure's --enable-fat-binary option); added rule for new
  missing/getcwd.c.

* defines.h: fixed endian handling during MAB build (see configure's
  --enable-fat-binary option) to ensure that all portions of the
  project see the correct WORDS_BIGENDIAN value (some extension modules
  were getting the wrong endian setting); added missing constants
  GETPGRP_VOID, WNOHANG, WUNTRACED, X_OK, and type pid_t for NextStep
  and OpenStep; removed unnecessary and problematic HAVE_SYS_WAIT_H
  define in NeXT section.

* dir.c: do not allow NAMLEN() macro to trust dirent::d_namlen on
  NextStep since, on some installations, this value always resolves
  uselessly to zero.

* dln.c: added error reporting to NextStep extension loader since the
  previous behavior of failing silently was not useful; now ensures
  that NSLINKMODULE_OPTION_BINDNOW compatibility constant is defined
  for OpenStep and Rhapsody; no longer includes <mach-o/dyld.h> twice
  on Rhapsody since this header lacks multiple-include protection,
  which resulted in "redefinition" compilation errors.

* main.c: also create hard reference to objc_msgSend() on NeXT
  platforms (in addition to Apple platforms).

* lib/mkmf.rb: now exports XCFLAGS from configure script to extension
  makefiles so that extensions can be built MAB (see configure's
  --enable-fat-binary option); also utilize XCFLAGS in cc_command()
  (but not cpp_command() because MAB flags are incompatible with
  direct invocation of `cpp').

* ext/curses/extconf.rb: now additionally checks for presence of these
  curses functions which are not present on NextStep or Openstep:
  bkgd(), bkgdset(), color(), curs(), getbkgd(), init(), scrl(), set(),
  setscrreg(), wattroff(), wattron(), wattrset(), wbkgd(), wbkgdset(),
  wscrl(), wsetscrreg()

* ext/curses/curses.c: added appropriate #ifdef's for additional set of
  curses functions now checked by extconf.rb; fixed curses_bkgd() and
  window_bkgd() to correctly return boolean result rather than numeric
  result; fixed window_getbkgd() to correctly signal an error by
  returning nil rather than -1.

* ext/etc/etc.c: setup_passwd() and setup_group() now check for null
  pointers before invoking rb_tainted_str_new2() upon fields extracted
  from `struct passwd' and `struct group' since null pointers in some
  fields are common on NextStep/OpenStep (especially so for the
  `pw_comment' field) and rb_tainted_str_new2() throws an exception
  when it receives a null pointer.

* ext/pty/pty.c: include "util.h" for strdup()/ruby_strdup() for
  platforms such as NextStep and OpenStep which lack strdup().

* ext/socket/getaddrinfo.c: cast first argument of getservbyname(),
  gethostbyaddr(), and gethostbyname() from (const char*) to non-const
  (char*) for older platforms such as NextStep and OpenStep.

* ext/socket/socket.c: include "util.h" for strdup()/ruby_strdup() for
  platforms such as NextStep and OpenStep which lack strdup(); include
  <netinet/in_systm.h> if present for NextStep and OpenStep; cast first
  argument of gethostbyaddr() and getservbyname() from (const char*) to
  non-const (char*) for older platforms.

* ext/syslog/syslog.c: include "util.h" for strdup()/ruby_strdup() for
  platforms such as NextStep and OpenStep which lack strdup().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-11-22 04:00:03 +00:00
matz
94bfebb3fa * error.c (rb_warn_m): should not warn if -W0 is specified.
[ruby-talk:82675]

* util.c (ruby_strtod): skip preceding zeros before counting
  digits in the mantissa. (ruby-bugs PR#1181)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-24 23:56:11 +00:00
matz
538e8190bc * util.c (ruby_strtod): exp should be less than MDMAXEXPT.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-11 07:10:14 +00:00
matz
662e3cf1f9 * eval.c (rb_load): put rb_load_file() in a thread critical
section. [ruby-dev:20490]

* eval.c (compile): put rb_compile_string() in a thread critical
  section.

* variable.c (rb_const_get_0): should not warn if constant is not
  defined. (ruby-bugs-ja PR#509)

* bignum.c (rb_big2dbl): give a warning on overflow.
  (ruby-bugs-ja PR#510)

* util.c (ruby_strtod): change MDMAXEXPT from 511 to 308.

* pack.c (utf8_to_uv): long is sufficient.  LONG_LONG is not
  required.

* bignum.c (rb_big2str): support 32 bit (without `long long' type)
  machines. (ruby-bugs-ja PR#512)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-09 22:28:42 +00:00
nobu
dc2bab2207 * eval.c, util.c: removed duplicated includes/defines.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-27 11:33:46 +00:00
nobu
6940597692 * util.c (ruby_strtod): improved conversion accuracy.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-17 16:49:23 +00:00
michal
9df466b287 Updated Copyrights of Matz to 2003.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-16 07:34:03 +00:00
uema2
b19e36a214 * configure.in, defines.h, dir.c, dir.h, dln.c, error.c,
eval.c, file.c, hash.c, io.c, main.c, missing.c,
      process.c, ruby.c, rubysig.h, signal.c, st.c, util.c, util.h,
      bcc/Makefile.sub, win32/Makefile.sub, win32/win32.h,
      ext/Win32API/Win32API.c, ext/socket/getaddrinfo.c,
      ext/socket/getnameinfo.c, ext/socket/socket.c,
      ext/tcltklib/stubs.c
      : replace "NT" with "_WIN32", add DOSISH_DRIVE_LETTER
* wince/exe.mak : delete \r at the end of lines.
* wince/mswince-ruby17.def : delete rb_obj_become


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-15 03:18:08 +00:00
matz
90c4dae08f WinCE patch merged
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-02 07:57:17 +00:00
michal
0d0ae37e50 Int vs Long cleanup #3 (ruby-core:352)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-28 08:05:23 +00:00
michal
ffc13a6525 *.c: Int vs Long cleanup
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-21 15:47:54 +00:00
matz
4ab1577db3 * parse.y: yyparse #defines moved from intern.h
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@2500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-29 05:20:39 +00:00
michal
bab153b243 * array.c: fixed format string for 'long' args (%d -> %ld).
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@2498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-28 18:11:07 +00:00
matz
eb6118992b * eval.c (rb_clear_cache_by_class): new function.
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@2457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-14 06:22:31 +00:00
matz
e63a990141 * re.c (rb_reg_expr_str): should treat backslash specially in
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: svn+ssh://ci.ruby-lang.org/ruby/trunk@2382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-18 08:46:18 +00:00
eban
5efa6b2e48 * util.c (push_element): avoid warning for djgpp.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-23 16:07:55 +00:00
knu
faac53f7ba * util.c (ruby_getcwd): the content of buf is uncertain and must
not be printed when getcwd(buf, size) has failed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-19 15:45:53 +00:00
matz
2f8d3bdc21 * array.c (rb_ary_modify): should copy the internal buffer if the
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: svn+ssh://ci.ruby-lang.org/ruby/trunk@1896 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2001-12-10 07:18:16 +00:00
matz
6ab0ff977d * eval.c (rb_thread_select): should subtract timeofday() from
limit, not reverse.

* util.c (scan_hex): x is not a hexadecimal digit.

* eval.c (rb_thread_schedule): should treat the case that
  select(2) returns 0, if a thread is under both WAIT_SELECT and
  WAIT_TIME.  Jakub Travnik <J.Travnik@sh.cvut.cz> actually fixed
  this bug.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2001-11-28 14:56:32 +00:00
matz
dc98adf839 * process.c (security): always give warning for insecure PATH.
* dir.c (my_getcwd): do not rely on MAXPATHLEN.

* file.c (rb_file_s_readlink): ditto.

* file.c (path_check_1): ditto.

* eval.c (rb_yield_0): should not call rb_f_block_given_p().

* string.c (rb_str_chomp_bang): should terminate string by NUL.

* eval.c (rb_yield_0): better error message.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2001-11-08 06:43:14 +00:00