You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constructor looks for overwritten vftables, but that only happens for inheritance
destructor rule makes sure that the vftable is only installed by one class. This is probably conservative/safe, but an embedded and inlined destructor could prevent this from ever firing
hasnobase says if there are no base classes, then the vftable must be on the constructor's class. This completely neglects embedded objects!
Specifically, a constructor of an object that embeds zSTRING at two locations is confused with zSTRING itself. This case should be fairly easy to detect. A few ideas:
Can't merge with the VFTable because the VFTable is installed at two locations
Detect embedded class because VFTable is installed at two locations
Force inheritance or NOT embedded to use constructor rule
Embedded objects can make it seem like the enclosing object has vftables when it really does not.
Here's a pathological example: https://godbolt.org/z/8ca7WP6nG
reasonVFTableBelongsToClass has three rules:
This affects #213
The text was updated successfully, but these errors were encountered: