digitalmars.D.bugs - [Issue 4667] New: Goto skipping variable initializations
- d-bugmail puremagic.com (58/58) Aug 17 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4667
- d-bugmail puremagic.com (12/12) Aug 17 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4667
- d-bugmail puremagic.com (8/8) Aug 17 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4667
- d-bugmail puremagic.com (15/15) Aug 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4667
http://d.puremagic.com/issues/show_bug.cgi?id=4667 Summary: Goto skipping variable initializations Product: D Version: D2 Platform: x86 OS/Version: Windows Status: NEW Keywords: diagnostic Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc This D2 code runs with no errors (DMD 2.048): import std.c.stdio: printf; void main(string[] args) { if (args.length < 2) goto FOO1; int x = 100; FOO1: printf("%d\n", x); goto FOO2; for (int i = 0; i < 10; i++) { FOO2: printf("%d\n", i); break; } } But that's not good code, the initialization of i is always skipped, and the initialization of x is sometimes skipped. bernardh in IRC #D quotes from TDPL: "another restriction is that a goto cannot skip the definition point of a value that's visible at the landing point." See also bug 3820 Similar code in C99: #include "stdio.h" int main(int argc, const char* argv[]) { if (argc < 2) goto FOO1; int x = 100; FOO1: printf("%d\n", x); goto FOO2; for (int i = 0; i < 10; i++) { FOO2: printf("%d\n", i); break; } return 0; } Compiled with GCC 4.5.0 shows a warning: ...>gcc -Wall -std=c99 -m32 test.c -o test test.c: In function 'main': test.c:13:15: warning: 'i' is used uninitialized in this function -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 17 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4667 Lars T. Kyllingstad <bugzilla kyllingen.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla kyllingen.net Resolution| |DUPLICATE 09:51:02 PDT --- *** This issue has been marked as a duplicate of issue 602 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 17 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4667 Thank you and sorry for the dupe. (I hope the people that try to fix one bug take a look at all the contents of the 'duplicated' bugs, because sometimes they may be not fully duplicated.) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 17 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4667 Stewart Gordon <smjg iname.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |smjg iname.com If a duplicate bug provides more information or a testcase that might still fail after the original is fixed, then it's a good idea to add it as a comment to the original bug report, possibly with a note at the beginning like "From duplicate bug 4667". But looking at duplicate bug reports just in case is probably indeed also a good idea. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 18 2010