It seems the C++ standard says that a thrown exception is destroyed after a catch block exists normally. The exception object hangs around only if the block is exited via a throw statement. Apparently throwing from a method in the exception object (raise()) was confusing the compiler into destroying the object incorrectly.
Now rethrows are done using the throw statement, fixing crashes during exception cleanup.
Fixed|libdeng2: Exception rethrowing
It seems the C++ standard says that a thrown exception is destroyed
after a catch block exists normally. The exception object hangs around
only if the block is exited via a throw statement. Apparently throwing
from a method in the exception object (raise()) was confusing the
compiler into destroying the object incorrectly.
Now rethrows are done using the throw statement, fixing crashes during
exception cleanup.