<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/89395>89395</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang][Index] potential unchecked `nullptr`s in `TypeIndexer` and `CursorVisitor` for broken code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
question,
clang,
clangd
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
5chmidti
</td>
</tr>
</table>
<pre>
The issues clangd/clangd/2016 and #89389 show that there may be some unchecked `nullptr` accesses in invalid code, and there are some more unchecked accesses to the result of `getDecl` and `getPtr` (hidden behind a `get*Decl`). Should these be checked preemptively?
E.g.
https://github.com/llvm/llvm-project/blob/3a4bc11b675c0511319c2843221133e986825b3b/clang/lib/Index/IndexTypeSourceInfo.cpp#L164-L167 checks the result of `getTypePtr`, while https://github.com/llvm/llvm-project/blob/3a4bc11b675c0511319c2843221133e986825b3b/clang/lib/Index/IndexTypeSourceInfo.cpp#L174-L178 does not, and all other `get[...]Decl` calls look like `return getTypePtr()->getDecl();`
https://github.com/llvm/llvm-project/blob/3a4bc11b675c0511319c2843221133e986825b3b/clang/lib/Index/IndexTypeSourceInfo.cpp#L61
https://github.com/llvm/llvm-project/blob/3a4bc11b675c0511319c2843221133e986825b3b/clang/include/clang/AST/TypeLoc.h#L695-L697
(I'm also adding a `clangd` label, because clangd looks at a lot of broken code, which is how the linked issue was raised)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVb9v6zYQ_muo5RBBPEqyOGhI4mcgQIYCCbpT5NliQ5MqSSXNf19Isl0P7dDl4S2WeOb9_L77pFKyJ0_Us-aJNftCzXkMsW_0eLYm22II5rt_HwlsSjMl0E75k2F4uL1gxVtQ3gBD0UnRSUhj-II8qgx5pEhwVt8wEKRwJpi9Hkl_kAHWVn52bsqRtRUorSklSmA9WP-pnDWggyGGz2vwLZKKlzDnEO9j3bxzWG5CpDS7DOG4ZDlR3pN2axZvLpbftrQMu9EaQx4GGq03oC7_M3y8ODGUJbyNYXZrFYmWXq6Jp0h0nrL9JPfNxIFVe1Y9br8_ylMJ2-uY85SYeGR4YHg42TzOQ6nDmeHBuc_r42GK4Q_SmeFhcGFgeBCqHjTnQ7trdNVwLrjU2NUCkXMhSHZth80ghiscSyC7nF68ob-uz_fvid7CHDW9-GMo9TQxFK-8rR9eebvbWkn_OrbFcxvUAsPXaB3BL9nLbull14EJlMCHfGWNcg7CQp0rqs1TWZas2V8JoZVzCVwIH-DsBy3XIuU5erhrHzuG8oGJH1cmrQYmnpbB_LIAt_yn12a9dvOyszfL49s7w8NS4GvQ5bjWJZuH11bu7neFYffCcHcG5VIAZYz1p20VLzLTVuDUQG4BdiCt5kQXKVrBS6AyKHBhJe8Qwwf5m3x8jVaPYBNsskTgrF92d1U0-FIJorKJDENZmF4YKaQqqOc7LhrRybYuxp634ng8NoY6Trqr0dSCpGoHFCS4qmVhe6ywrmoueVNhLUpuNJdSm0rIrpIoWV3RWVlXLtMuQzwVa_6-k0I2xdpcWkUY8c-ZUrbBM0SGzwzxMs37k1mOzb6I_YreMJ8SqytnU07_ZMg2u1XZtwDNnjVPG3OaPUwhk89Wuf_S5FWLWVst6K1eFO809HmOKcTfbbI5rPZjiPeTL-bo-v_Nve0rw_CwjuXvAAAA__-PVBJn">