<html>#177: EXC_BAD_ACCESS in CarpetIOASCII
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Ian Hinder</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>closed</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td></td></tr>
<tr><td style='text-align:right'>     Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>Carpet</td></tr>
</table>

<p>Comment (by Roland Haas):</p>
<p>My guess would be that this is related to git hash <a data-is-external-link="true" href="https://bitbucket.org/eschnett/carpet/commits/eb2c2b94649ce3217bba14cd73212bdeb9ea375d" rel="nofollow">eb2c2b94</a> "CarpetIOASCII: adapt to gdata::copy_from being static" of [carpet](<a data-is-external-link="true" href="https://bitbucket.org/eschnett/carpet" rel="nofollow">https://bitbucket.org/eschnett/carpet</a> and git hash <a data-is-external-link="true" href="https://bitbucket.org/eschnett/carpet/commits/6537e215dbebd17b72b57abf422ecf02ac7d81fe" rel="nofollow">6537e215</a> "CarpetLib: make gdata transfer functions static functions" of <a data-is-external-link="true" href="https://bitbucket.org/eschnett/carpet" rel="nofollow">carpet</a>. Before those Carpet/CarpetLib would use a NULL pointer to call (non-virtual) member functions that it “knew” would not actually access member variables due to arguments in the call. This was never quite legal (<code>this</code> must not be NULL and must always (even in the constructor) point to a valid region of memory). <br>
Essentially the compiler is free to optimize things like:  </p>
<div class="codehilite language-c++"><pre><span></span><span class="n">foo</span><span class="o">::</span><span class="n">bar</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">if</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
  <span class="kt">int</span> <span class="n">b</span> <span class="o">=</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">c</span><span class="p">;</span>
  <span class="k">return</span> <span class="p">;</span>
<span class="p">}</span>
</pre></div>


<p>to</p>
<div class="codehilite language-c++"><pre><span></span><span class="n">foo</span><span class="o">::</span><span class="n">bar</span><span class="p">(</span><span class="kt">int</s
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/177/exc_bad_access-in-carpetioascii'>https://bitbucket.org/einsteintoolkit/tickets/issues/177/exc_bad_access-in-carpetioascii</a></p>
</html>