diff options
| author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2016-11-22 16:16:58 +0100 | 
|---|---|---|
| committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2016-11-22 18:15:21 +0100 | 
| commit | 0bf380ff110897d2b5db2e22ef6efe1e9ba9888d (patch) | |
| tree | 038f9aaac800097a630564a7465f0255cbb19df0 /src/undo.h | |
| parent | dd6410b2b35a76de75622660cae9c1444b7a1880 (diff) | |
fixed local Q-Register management on certain broken platforms
 * on MSVCRT/MinGW, space allocated with alloca()/g_newa() was apparently
   freed once the first exception was caught.
   This prevented the proper destruction of local Q-Reg tables and
   broke the Windows port.
 * Since all alternatives to alloca() like VLAs are not practical,
   the default Q-Register initialization has been moved out of the
   QRegisterTable constructor into QRegisterTable::insert_defaults().
 * The remaining QRegisterTable initialization and destruction is
   very cheap, so we simply reserve an empty QRegisterTable for
   local registers on every Execute::macro() call.
   The default registers are only initialized when required, though.
 * All of this has to change anyway once we replace the
   C++ call-stack approach to macro calls with our own macro
   call frame memory management.
Diffstat (limited to 'src/undo.h')
0 files changed, 0 insertions, 0 deletions
