This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/29378] New: The copy constructor is not being called upon return from function calls.
- From: "SSacek at appsecinc dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Oct 2006 08:10:14 -0000
- Subject: [Bug c++/29378] New: The copy constructor is not being called upon return from function calls.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Functions returning objects do not call the copy constructors for permanent
objects. The program below works for the Solaris and Microsoft compilers, but
not for the GCC compiler.
I?m using:
-bash-3.00$ gcc -v
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.6/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux
Thread model: posix gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)
#include "stdio.h"
struct S
{
S() { printf( "Inside default constructor \n" ); }
S( const S & ) { printf( "Inside copy constructor \n" ); }
};
S f( void )
{
S s1;
return s1;
}
int main ( int, char ** )
{
S s1;
S s2( s1 ); // must call the copy constructor
S s3 = f(); // must call the copy constructor
S s4( f() ); // must call the copy constructor
return 0;
}
#if 0
// GCC output is:
Inside default constructor
Inside copy constructor
Inside default constructor
Inside default constructor
// Both Solaris and Microsoft output is:
Inside default constructor
Inside copy constructor
Inside default constructor
Inside copy constructor
Inside default constructor
Inside copy constructor
#endif
--
Summary: The copy constructor is not being called upon return
from function calls.
Product: gcc
Version: 3.4.6
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: SSacek at appsecinc dot com
GCC build triplet: gcc version 3.4.6
GCC host triplet: Red Hat 3.4.6-3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29378