Commit Graph

20 Commits

Author SHA1 Message Date
Piotr Caban ee5e06591f msvcrt: Fix i386 rethrown exceptions handling.
When __CxxRegisterExceptionObject was used and there was no
catch_function_nested_handler frame to rewind
nested_frame.frame_info.rec was incorrectly set to current exception.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-08 00:10:44 +09:00
Piotr Caban 97567074a5 msvcrt: Update previous exception stored in cxx_frame_info after frames unwinding.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-23 22:58:23 +09:00
Piotr Caban 3a0b3c5bc8 msvcrt: Register exception object before unwinding.
Thrown object was incorrectly freed in following situation:
try {
     try {
         throw obj;
     } catch(...) {
         throw;
     }
} catch(...) {
     //use object here
}

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-22 12:20:31 +09:00
Piotr Caban fdcdbf306a msvcrt: Restore exception object stored in thread storage after frames unwinding.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-22 12:20:25 +09:00
Piotr Caban 4a397b4009 msvcrt: Destroy thrown c++ object before calling handler in _except_handler4_common.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-18 22:20:03 +09:00
Piotr Caban 2296261600 msvcr80: Use Cxx(Un)RegisterExceptionObject helpers in i386 nested exception handler.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-17 11:32:31 +09:00
Piotr Caban 0204517401 msvcr80: Add _CreateFrameInfo implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-17 11:32:04 +09:00
Piotr Caban f085be3028 msvcrt: Destroy exception object when frame storing it is unwound.
Thrown object was incorrectly freed in following situation:
try {
     throw obj;
} catch(object &obj) {
     try {
         throw 1;
     } catch(...) {}

     //use object here
}

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-16 21:59:41 +09:00
Piotr Caban 2d4b48a58d msvcrt: Handle try blocks inside current catch block in nested frame handler.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-16 21:59:41 +09:00
Piotr Caban 941e4f7e9d msvcrt: Destroy exception object if it's no longer used when exiting catch.
Thrown object was incorrectly freed in following situation:
try {
     throw obj;
} catch(object &obj) {
     try {
         throw;
     } catch(...) {}

     //use object here
}

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-16 21:59:41 +09:00
Piotr Caban 0ef61844b8 msvcrt: Add i386 _IsExceptionObjectToBeDestroyed implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-16 21:59:41 +09:00
Sebastian Lackner 4e941a9289 msvcrt: Pass cookie reference to msvcrt_local_unwind4 instead of value.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
2015-10-05 22:27:13 +09:00
Piotr Caban 07762576c4 msvcrt: Add i386 __CxxExceptionFilter implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
2015-10-01 16:32:34 +09:00
Piotr Caban 36309142d0 msvcrt: Handle seh exceptions rethrowing in cxx_frame_handler. 2014-04-30 15:15:33 +02:00
Piotr Caban b5b454c504 msvcrt: Handle seh exception rethrowing in catch_function_nested_handler. 2014-04-30 15:15:32 +02:00
Piotr Caban 0f3c31b1ea msvcrt: Try to convert C to C++ exception in __CxxFrameHandler. 2014-01-02 15:50:13 +01:00
Piotr Caban 76969a8651 msvcrt: Don't call local_unwind2 when Cookie equals MSVCRT_JMP_MAGIC in longjmp. 2012-12-20 12:23:20 +01:00
Piotr Caban 5e418f0ccf msvcrt: Handle rethrown exception in cxx_frame_handler. 2012-05-30 16:27:23 +02:00
Alexandre Julliard 89b2dd08ff msvcrt: Move more i386-specific exception code to except_i386.c. 2012-03-16 10:53:21 +01:00
Alexandre Julliard aba6423b83 msvcrt: Create an i386-specific file for exception handling. 2012-03-16 10:52:10 +01:00