[MAJOR BUG] g++ 2.95.x generates invalid code for KDE 3.3.0
thiago.macieira at kdemail.net
Mon Sep 20 04:11:59 BST 2004
Leo Savernik wrote:
>Am Montag, 20. September 2004 01:46 schrieb Thiago Macieira:
>> If the Derived constructor calls Base::function which in turn calls the
>> virtual function "virtual_function", the call should be routed to
>> Derived::virtual_function, even if the construction is not yet complete.
>Is this behaviour mandated by the C++ standard?
Yes. That's what both g++ versions do.
The difference is g++ 2.95 gets it wrong when "Base" is a non-primary
virtual base and Derived has at least one member variable.
Anyways, the case is now fixed. Instead of the call trace going
KStreamSocket::KStreamSocket -> KSocketBase::setBlocking ->
KClientSocketBase::setSocketOptions, I've eliminated the middle man and
made the call to setSocketOptions directly. And since setSocketOptions
doesn't call any virtual function inherited from KSocketBase, the problem
won't show up again.
Thiago Macieira - Registered Linux user #65028
thiago (AT) macieira (DOT) info
ICQ UIN: 1967141 PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: not available
More information about the kde-core-devel