fix Issue 13095 - Sometimes struct  destructor is called if constructor throws

I tried and failed to fix this in the front end. Doing so would entail a rather extensive rewrite of things. The semantic processing shouldn't be this sensitive, but it is.