https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1709775478
2011-06-26T18:13:51Z
Ruby Issue Tracking System
Ruby master - Bug #4457: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合
https://bugs.ruby-lang.org/issues/4457?journal_id=18427
2011-06-26T18:13:51Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li><li><strong>Assignee</strong> set to <i>akr (Akira Tanaka)</i></li><li><strong>Target version</strong> set to <i>1.9.3</i></li></ul>
Ruby master - Bug #4457: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合
https://bugs.ruby-lang.org/issues/4457?journal_id=19431
2011-07-21T13:57:06Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul><li><strong>Category</strong> set to <i>core</i></li></ul><p>こちら、状況いかがでしょうか?</p>
Ruby master - Bug #4457: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合
https://bugs.ruby-lang.org/issues/4457?journal_id=19486
2011-07-22T00:59:07Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>ruby -v</strong> changed from <i>ruby 1.9.3dev (2011-03-02) [i686-linux]</i> to <i>-</i></li></ul><p>なかだです。</p>
<p>At Thu, 21 Jul 2011 13:57:30 +0900,<br>
Motohiro KOSAKI wrote in <a href="/issues/4457">[ruby-dev:44176]</a>:</p>
<blockquote>
<p>こちら、状況いかがでしょうか?</p>
</blockquote>
<p>できなければ例外、ですかねぇ。</p>
<p><br>
diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb<br>
index 38e567a..1f07a82 100644<br>
--- a/test/ruby/test_time.rb<br>
+++ b/test/ruby/test_time.rb<br>
@@ -650,6 +650,9 @@ class TestTime < Test::Unit::TestCase</p>
<pre><code> # <a href="/issues/4221">[ruby-core:33985]</a>
assert_equal("3000000000", Time.at(3000000000).strftime('%s'))
</code></pre>
<ul>
<li>
<li>bug4457 = '<a href="/issues/4457">[ruby-dev:43285]</a>'</li>
<li>assert_raise(Errno::ERANGE, bug4457) {Time.now.strftime('%8192z')}<br>
end</li>
</ul>
<pre><code>def test_delegate
Modified time.c
</code></pre>
<p>diff --git a/time.c b/time.c<br>
index dd846a6..6817c75 100644<br>
--- a/time.c<br>
+++ b/time.c<br>
@@ -4325,8 +4325,12 @@ rb_strftime_alloc(char **buf, const char *format,<br>
* if the buffer is 1024 times bigger than the length of the<br>
* format string, it's not failing for lack of room.<br>
*/</p>
<ul>
<li>if (len > 0 || size >= 1024 * flen) break;</li>
</ul>
<ul>
<li>if (len > 0) break;<br>
xfree(*buf);</li>
<li>if (size >= 1024 * flen) {</li>
<li>
<pre><code> rb_sys_fail(format);
</code></pre>
</li>
<li>
<pre><code> break;
</code></pre>
</li>
<li>}<br>
}<br>
return len;<br>
}</li>
</ul>
<p></p>
<p>--<br>
--- 僕の前にBugはない。<br>
--- 僕の後ろにBugはできる。<br>
中田 伸悦</p>
Ruby master - Bug #4457: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合
https://bugs.ruby-lang.org/issues/4457?journal_id=19849
2011-07-30T13:49:42Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><p>akrさん、nakadaさんのパッチはコミットしてしまっていいのでしょうか?</p>
Ruby master - Bug #4457: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合
https://bugs.ruby-lang.org/issues/4457?journal_id=19929
2011-08-01T22:50:12Z
akr (Akira Tanaka)
akr@fsij.org
<ul></ul><p>とりあえずいいような気がします。</p>
<p>しかし、考えてみると strftime の API が腐っているという問題があるわけで、<br>
そして、Ruby 1.9 では OS の strftime を使っていないのだから、<br>
その API につきあう必要はないわけです。</p>
<p>というわけで、バッファが足りなかったときには必要な長さを返すようにするとか<br>
まともな API を用意して使うのがいい気がしますね。</p>
Ruby master - Bug #4457: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合
https://bugs.ruby-lang.org/issues/4457?journal_id=20142
2011-08-07T23:38:32Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This issue was solved with changeset r32885.<br>
tadayoshi, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<ul>
<li>
<p>time.c (rb_strftime_alloc): raise ERANGE if width is too large.<br>
Patch by Nobuyoshi Nakada. [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Time#strftime で %z 指定子などに大きな幅を指定した際の不具合 (Closed)" href="https://bugs.ruby-lang.org/issues/4457">#4457</a>] <a href="/issues/4457">[ruby-dev:43285]</a></p>
</li>
<li>
<p>test/ruby/test_time.rb (class TestTime): add a test for the<br>
above change.</p>
</li>
</ul>