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