In the function "_dbus_connection_remove_watch_unlocked", the first param "connection" type is DBusConnection*. And then it is passed to the first param "server" of the function "protected_change_watch", but this param has a DBusServer* type. After explicit type conversion from DBusConnection* to DBusServer*, we will found the pointer DBusServer::watches now points to the address to which DBusConnection::transport points. But this pointer ought to point to the address to which DBusConnection::watches points. I copied their definition into the attachment.
Created attachment 43909 [details] This file compares the two structs mentioned.
DBusConnection and DBusServer each has a static function called protected_change_watch; they are not the same (and each is only visible in its own translation unit). Unless you have a concrete example of code that can call the wrong one (I'm not sure how that could even happen), I think this should be RESOLVED INVALID.
Yeah, you are right, it is not a bug.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.