public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/18191] New: Struct member is not getting default-initialized
@ 2004-10-28  8:10 grigory dot zagorodnev at intel dot com
  2004-10-28 14:19 ` [Bug middle-end/18191] [4.0 Regression] " pinskia at gcc dot gnu dot org
                   ` (20 more replies)
  0 siblings, 21 replies; 22+ messages in thread
From: grigory dot zagorodnev at intel dot com @ 2004-10-28  8:10 UTC (permalink / raw)
  To: gcc-bugs

In the example listed below, member "i" of object "obj" allocated at frame 
of "bar" routine is not getting default-initialized to 0 but contains any 
garbage left on the stack. That violates clause 8.5.1/7 of the C++ Standard.

$ cat bar.cpp
#include <cstdio>

struct S {
    const char* s;
    int         i;
};
 
void foo() { 
    // Put some garbage on the stack
    S dummy[2];
    for (int i = 0; i < sizeof(dummy); i++) 
        ((char *)&dummy)[i] = -1; 
}
 
int bar() {
    // Allocate object on the stack
    S obj[2] = {
        {"m0"},
        { }
    };
    // Assume fields those not explicitly initialized
    // are default initialized to 0 [8.5.1/7 and 8.5/5]
    if (obj[0].i == 0){
        return 0;
    } else {
        printf("Failed: obj[0].i == '%d', expecting '0'\n", obj[0].i);
        return 1;
    }
};
 
int main(){
    foo();
    return bar();
}

$ g++ bar.cpp ; ./a.out
Failed: obj[0].i == '-1', expecting '0'

-- 
           Summary: Struct member is not getting default-initialized
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: grigory dot zagorodnev at intel dot com
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-redhat-linux
  GCC host triplet: i686-redhat-linux
GCC target triplet: i686-redhat-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18191


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2004-12-20 11:29 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-28  8:10 [Bug c++/18191] New: Struct member is not getting default-initialized grigory dot zagorodnev at intel dot com
2004-10-28 14:19 ` [Bug middle-end/18191] [4.0 Regression] " pinskia at gcc dot gnu dot org
2004-11-08 15:06 ` pinskia at gcc dot gnu dot org
2004-11-28 13:16 ` steven at gcc dot gnu dot org
2004-11-28 13:18 ` steven at gcc dot gnu dot org
2004-12-15 14:48 ` steven at gcc dot gnu dot org
2004-12-15 14:50 ` steven at gcc dot gnu dot org
2004-12-15 14:56 ` steven at gcc dot gnu dot org
2004-12-15 15:16 ` steven at gcc dot gnu dot org
2004-12-15 15:29 ` steven at gcc dot gnu dot org
2004-12-15 20:45 ` steven at gcc dot gnu dot org
2004-12-15 22:20 ` steven at gcc dot gnu dot org
2004-12-15 22:21 ` steven at gcc dot gnu dot org
2004-12-16  7:56 ` steven at gcc dot gnu dot org
2004-12-16 18:08 ` steven at gcc dot gnu dot org
2004-12-16 23:53 ` steven at gcc dot gnu dot org
2004-12-17  1:36 ` pinskia at gcc dot gnu dot org
2004-12-18  0:22 ` steven at gcc dot gnu dot org
2004-12-19 13:03 ` steven at gcc dot gnu dot org
2004-12-20 11:27 ` cvs-commit at gcc dot gnu dot org
2004-12-20 11:28 ` steven at gcc dot gnu dot org
2004-12-20 11:29 ` steven at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).