-
Bug
-
Resolution: Unresolved
-
Low
-
Code Generation Tools
-
CODEGEN-4076
-
The following code segment does not call std::terminate, as is required by the C++ 11/14 standards (and is undefined behavior in C++ 03).
This occurs only when symbolic debug information is present in the source (i.e. the option --symdebug:none is not on the command line)
#include <stdio.h>
#include <assert.h>
struct X {
X()
~X()
{ printf("Dtor\n"); throw "attempt to exit with exception"; }};
static void bar()
{ X x; throw "ordinary exception"; // Destroy }int main() {
try
catch (const char *s)
{ assert(false); } printf("Should have called std::terminate\n");
assert(false); // Should call terminate
}