<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - CXUnsavedFile and CXTUResourceUsageEntry use unsigned long"
   href="https://bugs.llvm.org/show_bug.cgi?id=45499">45499</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>CXUnsavedFile and CXTUResourceUsageEntry use unsigned long
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>libclang
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>tagoo@outlook.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>klimek@google.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>CXUnsavedFile and CXTUResourceUsageEntry are currently using `unsigned long`
for fields they contain.

`long` does not have a consistent size between Windows and Unix and this makes
it difficult to create generic bindings over the provided C API.

In particular, `long` is always 32-bits on Windows but it is pointer sized on
Unix systems. This also means that Windows is more limited in how the structs
can be used.

Ideally, these would be updated to be `size_t` so that it is pointer sized on
all platforms. This would also allow higher level languages, such as C#, to
provide a single consistent binding using their own `size_t` equivalent.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>