Replies: 3 comments 1 reply
|
In this case cppfront generates code that produces a runtime error, so to get the code to compile and run, change this line: p = new<int>;to: p = new<int>(1); // Or some valueAnd then you'll get a runtime "Contract violation" when trying to access |
1 reply
This is a bug in cppfront, because initialization should not be allowed in a loop (the break shouldn't affect that). Thanks for pointing this out! |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
main: () = { i := 0; p: std::unique_ptr<int>; while i < 3 next i++ { if !i { break; } p = new<int>; } std::cout << p* << "\n"; // no cppfront error }Due to the break, p seems to be uninitialized when it is dereferenced. This would also happen when the initial loop test is false.
BTW, on my system, I get a compile error from g++ and latest cppfront git.
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
All reactions