VMError::report() is organized as a series of error reporting steps. If a signal occurrs during error reporting, error reporting is invoked again and continued with the follow-up step. This logic is encoded in the STEP macro in vmError.cpp.
The STEP macro uses a step number, which is maintained by hand. This is a constant source of errors when adding new steps or re-sorting them. Adding a new STEP with the wrong step number sill just quietly exclude this step.
The step number is unnecessary - the same effect can be achieved by using the __LINE__ macro, which would be a more robust solution.
The STEP macro uses a step number, which is maintained by hand. This is a constant source of errors when adding new steps or re-sorting them. Adding a new STEP with the wrong step number sill just quietly exclude this step.
The step number is unnecessary - the same effect can be achieved by using the __LINE__ macro, which would be a more robust solution.