Interesting, so IIUC, "compatible" is really only one way, C++ can read C, 
especially with the ctags parser, so it probably has the same type keyword 
string, so same hash.  But changing C++ to C will almost certainly fail quickly 
(at the first occurrence of "class" for eg) but (IIUC) if the parser fails 
Geany leaves the typenames the same so as to try to minimise flashing and 
changing of the symbols pane as the user types, so again hash is the same.

Confirmed by adding `typedef foo int;` to change the hash and get colouring 
again.

But since 0 is a valid hash value maybe `keyword_hash` should be incremented to 
get a different hash value so the comparison fails, otherwise the problem might 
still appear one in every 2^32 times the user swaps C and C++ types on the file 
:stuck_out_tongue_winking_eye: .

-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3550#issuecomment-1713029625
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany/issues/3550/[email protected]>

Reply via email to