Hacker News new | ask | show | jobs
by Koshkin 1821 days ago
The situation is even worse, due to the possible interleaving of the execution of function calls.
1 comments

The root cause is the same
How is it "the same"? If the evaluations of the individual arguments can't overlap, then the C example's problem still exists while the C++ example's problem doesn't. And if the order of evaluation were guaranteed but the evaluations could overlap, the C example wouldn't have a problem but the C++ example still would. To me the two problem's causes seem quite different.
Well, except that C does not have exceptions (at least not in the way that C++ does).
longjmp for the win (or loss)!
Right, it has signals and almost no one ever bothers to test for EINTR.