<html>#2871: EOS_Omni's nuceos code used int to hold hid_t values
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Roland Haas</td></tr>
<tr><td style='text-align:right'> Status:</td><td>new</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>major</td></tr>
<tr><td style='text-align:right'>Component:</td><td>EinsteinToolkit thorn</td></tr>
</table>
<p><code>EOS_Omni</code> contains this code:</p>
<div class="codehilite"><pre><span></span><code><span>// If on the IO proc (doIO == True) actually perform HDF5 IO, catch possible</span>
<span>// HDF5 errors</span>
<span>#define HDF5_DO_IO(fn_call) \</span>
<span> if(doIO) { \</span>
<span> int _error_code = fn_call; \</span>
<span> if (_error_code < 0) { \</span>
<span> CCTK_VError(__LINE__, __FILE__, CCTK_THORNSTRING, \</span>
<span> "HDF5 call '%s' returned error code %d", \</span>
<span> #fn_call, _error_code); \</span>
<span> } \</span>
<span> }</span>
</code></pre></div>
<p>to handle some HDF5 calls. This assigns the result of HDF5 calls (typically a <code>hid_t</code> type) to an int, which (as of HDF5 1.10 or so) is no longer correct since <code>hid_t</code> is now a 64 bit type. So this needs to be a <code>hid_t</code> or <code>long long int</code> (and some compile time check that `long long int` actually can hold a `hid_t`) instead to handle the value and output via printf.</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2871/eos_omnis-nuceos-code-used-int-to-hold'>https://bitbucket.org/einsteintoolkit/tickets/issues/2871/eos_omnis-nuceos-code-used-int-to-hold</a></p>
</html>