Commit graph

69 commits

Author SHA1 Message Date
nobu
aafeb4b724 test_sprintf.rb: test for %p
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-09-15 08:39:07 +00:00
normal
d41baaee9f test/ruby (*no_hidden_garbage): disable GC and skip if multi-threaded
Any single object allocation can reduce object count, and
object counts are global, so multi-threading leads to unpredictable
results.

See also similar commits: r60699 and r62608

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-08 07:27:29 +00:00
nobu
13f5dcb9f2 error.c: KeyError#receiver and KeyError#key
* error.c: new method KeyError#receiver and KeyError#key.
  [Feature #12063]

* hash.c: make KeyError object with receiver and key.

* sprintf.c: ditto.

Author:    ksss <co000ri@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-18 08:05:53 +00:00
kazu
d9d2bbe4b9 Improve error message
ref [Bug #13761]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-31 03:35:22 +00:00
nobu
53737990fe sprintf.c: width too big
* sprintf.c (rb_str_format): explicitly reject too big negative
  width, instead of an empty string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-23 09:44:48 +00:00
eregon
fd8df3ab3d Raise ArgumentError if sprintf format string ends with %
* Add tests and specs. See ruby/spec#401.
  Patch by Yuta Iwama and Shintaro Morikawa.
  [ruby-core:80153] [Bug #13315] [Fix GH-1560]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-25 15:33:28 +00:00
nobu
6f8f950cc3 Fix space flag when Inf/NaN and width==3
* sprintf.c (rb_str_format): while `"% 2f"` and `"% 4f"` result in
  `" Inf"` and `" Inf"` respectively, `"% 3f"` results in
  `"Inf"` (no space).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-23 01:04:39 +00:00
normal
ba5aa60668 sprintf.c: avoid garbage in common (no exception) case
Format strings which are dynamically-generated will benefit
from this.  This won't cover exceptions, but exceptions for
sprintf should be too uncommon to care about (unlike IO)

* sprintf.c (rb_str_format): use rb_str_tmp_frozen_{acquire,release}
* test/ruby/test_sprintf.rb (test_no_hidden_garbage): new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-31 00:41:56 +00:00
nobu
0854193a68 sprintf.c: fix width underflow
* sprintf.c (rb_str_format): fix memory corruption by width
  underflow.  https://github.com/mruby/mruby/issues/3347

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57108 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-17 18:04:30 +00:00
nobu
6ed8c79ddb util.c: round to even
* util.c (ruby_dtoa): round to even, instead of rounding to
  nearest.  [ruby-core:77864] [Bug #12889]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-04 07:31:47 +00:00
nobu
295f60b94d util.c: round nearly middle value
* util.c (ruby_dtoa): [EXPERIMENTAL] adjust the case that the
  Float value is close to the exact but unrepresentable middle
  value of two values in the given precision, as r55604.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-10 05:27:27 +00:00
nobu
9ae4c2d590 sprintf.c: fix buffer overflow
* sprintf.c (rb_str_format): fix buffer overflow, length must be
  greater than precision.  reported by William Bowling <will AT
  wbowling.info>.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-27 23:18:52 +00:00
nobu
41f4317f45 test/ruby: suppress parser warnings
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-02-19 07:48:02 +00:00
nobu
1301d1f5bc sprintf.c: exact number
* sprintf.c (rb_str_format): format exact number more exactly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-14 07:12:42 +00:00
nobu
ed11f4b4b5 test_sprintf.rb: simplify
* test/ruby/test_sprintf.rb (test_rational): enumerate formatted
  flags and simplify.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-14 07:10:48 +00:00
naruse
3e92b635fb Add frozen_string_literal: false for all files
When you change this to true, you may need to add more tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
nobu
77e9edc334 sprintf.c: fix garbage inserted with Rational
* sprintf.c (rb_str_format): fix wrong shifting position in
  Rational conversion when not at the beginning of the result.
  [ruby-core:71806] [Bug #11766]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-03 06:33:13 +00:00
nobu
56e3b49304 sprintf.c: nil value is valid
* sprintf.c (rb_str_format): look up the key, then get default
  value and raise KeyError if the returned value is nil.
  [ruby-dev:49338] [Ruby trunk - Bug #11677]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-11 09:30:31 +00:00
nobu
def4370a55 sprintf.c: hash default value
* sprintf.c (rb_str_format): respect default value of a hash.  no
  longer raises KeyError unless the default value of the hash is
  nil.  [ruby-core:71354] [Bug #11661]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-11 00:03:15 +00:00
naruse
b2a128fa7c comment out for x86 extended precision
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-15 06:17:58 +00:00
nobu
230b845fa2 sprintf.c: improve rational 'f' format
* sprintf.c (rb_str_format): rational 'f' format works for more
  values.  [fix GH-717]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-14 23:13:36 +00:00
nobu
28dd61607e sprintf.c: fix condition
* sprintf.c (rb_str_format): fix condition to round.
  [ruby-core:64454] [Bug #10151]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-19 13:28:32 +00:00
nobu
1d196e0d2b sprintf.c: rational 'f' format
* sprintf.c (rb_str_format): support rational 'f' format.
  [ruby-core:64382] [Bug #10136]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-18 08:06:48 +00:00
nobu
cfa7b2283b sprintf.c: unnumbered asterisk with numbered argument
* sprintf.c (GETASTER): should not use the numbered argument to be
  formatted, raise ArgumentError instead.
  [ruby-dev:48330] [Bug #9982]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-26 18:41:57 +00:00
nobu
57d6cb4af9 sprintf.c: remove extra parentheses
* sprintf.c (GETASTER): remove extra parentheses from the second
  argument so that the error message does not contain them.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46564 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-26 13:30:08 +00:00
nobu
b28e537129 test_sprintf.rb: sprintf with a hash as parameter
* test/ruby/test_sprintf.rb (test_hash): Added tests for sprintf
  with a hash as parameter.  [Fixes GH-491]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-28 23:47:27 +00:00
nobu
3ac0ec4ecd test/ruby: better assertions
* test/ruby: use better assertions instead of mere assert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-13 09:18:05 +00:00
nobu
9ef55da910 test/unit/assertions.rb: return exception
* lib/test/unit/assertions.rb (assert_raise_with_message): return
  raised exception same as assert_raise.

* test/ruby, test/-ext-: use assert_raise_with_message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-09 08:43:12 +00:00
nobu
db5265a82c * parse.y (rb_check_id_cstr): new function to check if ID is
registered with NUL-terminated C string.
* sprintf.c (rb_str_format): avoid inadvertent symbol creation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-11 13:31:23 +00:00
nobu
a5d1da5d74 * sprintf.c (rb_str_format): fix exception message encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-11 13:01:16 +00:00
nobu
51f2207fc9 * test/ruby/test_sprintf.rb (test_named_untyped, test_named_typed):
split and add assertions for exception when named parameter after
  unnumbered.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-11 13:01:14 +00:00
nobu
23ba7541e5 * sprintf.c (rb_str_format): fix error message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35297 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-11 12:43:56 +00:00
naruse
18c0fc890c * vsnprintf.c (BSD_vfprintf): don't output floating point
when the precision is 0. [ruby-dev:42615]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-22 16:06:38 +00:00
naruse
3c18caa4c2 Fix wrong test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-09 04:22:25 +00:00
naruse
c383fbf93f * util.c (ruby_strtod): this code uses FPU's rounding system.
But x86's FPU calculates double precision floating-point
  numbers in 80bit precision, so it fails to round the value.
  So ensure the value is assigned a variable. [ruby-dev:42551]
  see also [ruby-math:00802]
  http://www.shudo.net/java-grandprix99/strictfp/

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-09 01:57:49 +00:00
naruse
599a7071c1 * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
work well on %f. [ruby-dev:42552]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-08 06:44:39 +00:00
nobu
bbf0fd4e9c * vsnprintf.c (BSD_vfprintf): prec digits fractal part should be
appended to 0 if prec is given.  [ruby-dev:42453] #3979

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-24 21:21:40 +00:00
naruse
e9240114a0 * vsnprintf.c (BSD_vfprintf): print floating point on "%#a".
[ruby-dev:42431] Bug#3965

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-20 01:03:18 +00:00
naruse
fb796561f0 * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a.
[ruby-core:32841] [ruby-core:32848]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-19 10:34:13 +00:00
nobu
73057fb85b * test/ruby/test_sprintf.rb: fix ML ref. [ruby-core:32848]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-19 03:26:35 +00:00
nobu
c511d26f6a * vsnprintf.c (BSD_vfprintf): fix over-count of field size.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-19 03:19:30 +00:00
nobu
da55cfdf72 * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a.
[ruby-core:32841]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-18 18:08:58 +00:00
naruse
35388369dc Fix wrong test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-18 01:53:41 +00:00
naruse
a7e8b12f96 * sprintf.c (BSD_vfprintf): wrong padding arround prefix and
floating point with %a. [ruby-dev:42403] Bug #3956

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-18 00:59:31 +00:00
naruse
8a0cd16de1 Revert "* sprintf.c (rb_str_format): fix: sprintf with hex format and"
This reverts commit a160986d90.
Revert wrong commit.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-15 08:31:58 +00:00
naruse
a160986d90 * sprintf.c (rb_str_format): fix: sprintf with hex format and
precision includes wrong dots.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-15 08:28:12 +00:00
naruse
6e2850aa46 * sprintf.c: add short documentation about named reference.
[ruby-core:31294]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-21 06:16:07 +00:00
nobu
921b2d1cfb * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
use more descriptive assertions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-29 05:46:04 +00:00
naruse
a9aeb765c5 Remove platform dependent test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-02 23:18:51 +00:00
naruse
9b40cdfe8c Add test for sprintf with Infinity and NaN.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01 06:44:30 +00:00