https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2017-08-10T11:51:16Z
Ruby Issue Tracking System
Ruby master - Bug #13797: Using .push on an 2d array class-instance variable causes the whole array to be overwritten with the .push value; is this a bug?
https://bugs.ruby-lang.org/issues/13797?journal_id=66127
2017-08-10T11:51:16Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/66127/diff?detail_id=45856">diff</a>)</li><li><strong>Status</strong> changed from <i>Open</i> to <i>Rejected</i></li></ul><p>You share the same array instance as sub-arrays.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"> <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">totalSize</span><span class="p">)</span>
<span class="vi">@data_array</span> <span class="o">=</span> <span class="no">Array</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">totalSize</span><span class="p">,[])</span>
<span class="k">end</span>
</code></pre>
<p>Make different instances.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="vi">@data_array</span> <span class="o">=</span> <span class="no">Array</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">totalSize</span><span class="p">)</span> <span class="p">{[]}</span>
</code></pre>
<p>or</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="vi">@data_array</span> <span class="o">=</span> <span class="p">[[]]</span> <span class="o">*</span> <span class="n">totalSize</span>
</code></pre>
Ruby master - Bug #13797: Using .push on an 2d array class-instance variable causes the whole array to be overwritten with the .push value; is this a bug?
https://bugs.ruby-lang.org/issues/13797?journal_id=66134
2017-08-11T01:53:16Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul></ul><p>nobu (Nobuyoshi Nakada) wrote:</p>
<blockquote>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="vi">@data_array</span> <span class="o">=</span> <span class="p">[[]]</span> <span class="o">*</span> <span class="n">totalSize</span>
</code></pre>
</blockquote>
<p>Sorry, this doesn't fix it. Use <code>Array.new</code> with a block.</p>