Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
June 02, 2009 [Issue 3046] New: Segfault with C++ static variable | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=3046 Summary: Segfault with C++ static variable Product: D Version: 2.030 Platform: x86 OS/Version: Linux Status: NEW Keywords: ice-on-invalid-code Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: rsinfu@gmail.com The compiler segfaults compiling this invalid code: -------------------- class C { extern(C++): static int var; // C++ variable should be error } -------------------- The segfault happend in cpp_mangle_name() (cppmangle.c): -------------------- FuncDeclaration *fd = s->isFuncDeclaration(); if (fd->isConst()) <-- HERE buf->writeByte('K'); -------------------- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 03, 2009 [Issue 3046] Segfault with C++ static variable | ||||
---|---|---|---|---|
| ||||
Posted in reply to rsinfu@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3046 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug@yahoo.com.au --- Comment #1 from Don <clugdbug@yahoo.com.au> 2009-06-02 17:24:03 PDT --- I can't reproduce this. It works for me on Windows. Is it Linux only, or is something missing from the test case? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 03, 2009 [Issue 3046] Segfault with C++ static variable | ||||
---|---|---|---|---|
| ||||
Posted in reply to rsinfu@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3046 --- Comment #2 from Shin Fujishiro <rsinfu@gmail.com> 2009-06-02 17:39:07 PDT --- (In reply to comment #1) > I can't reproduce this. It works for me on Windows. Is it Linux only, or is something missing from the test case? It's Linux only. On Linux, C++ name mangling is done by the front end. The front end assumes that extern(C++) is applied only to a function, and segfaults when extern(C++) is applied to a static variable. On Windows, C++ name mangling is done by the backend, which can deal with C++ variable name mangling. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 11, 2010 [Issue 3046] Segfault with C++ static variable (Linux only) | ||||
---|---|---|---|---|
| ||||
Posted in reply to rsinfu@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3046 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch --- Comment #3 from Don <clugdbug@yahoo.com.au> 2010-08-11 05:57:15 PDT --- Patch: cpp_mangle.c, cpp_mangle_name(), line 112. FuncDeclaration *fd = s->isFuncDeclaration(); + if (!fd) + { + s->error("cannot be declared as extern(C++)"); + return; + } if (fd->isConst()) buf->writeByte('K'); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 28, 2010 [Issue 3046] Segfault with C++ static variable (Linux only) | ||||
---|---|---|---|---|
| ||||
Posted in reply to rsinfu@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3046 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla@digitalmars.com Resolution| |FIXED --- Comment #4 from Walter Bright <bugzilla@digitalmars.com> 2010-08-28 15:09:43 PDT --- http://www.dsource.org/projects/dmd/changeset/647 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation