Explicitly use thread-local buffer for C++ exceptions
This patch explicitly saves Exception to a thread-local variable inside struct cord on tnt_raise(). This variable can be used to safetly re-throw last exception from any place (not only from catch() block). This technique requires exception to be thrown and catched by pointers. tnt_raise macros was rewritten and all 'catch (Exception &)' blocks were substituted with 'catch (Exception *e)'. This patch also adds a new feature to box.raise() function. When called without arguments box.raise() re-throws last exception (if any). These changes needed to implement proper handlings of exception for FFI calls.
Showing
- client/tarantar/update.cc 1 addition, 1 deletionclient/tarantar/update.cc
- doc/user/stored-procedures.xml 2 additions, 0 deletionsdoc/user/stored-procedures.xml
- src/box/bitset_index.cc 1 addition, 1 deletionsrc/box/bitset_index.cc
- src/box/box.cc 3 additions, 3 deletionssrc/box/box.cc
- src/box/lua/call.cc 10 additions, 2 deletionssrc/box/lua/call.cc
- src/box/lua/tuple.cc 1 addition, 1 deletionsrc/box/lua/tuple.cc
- src/box/space.cc 1 addition, 1 deletionsrc/box/space.cc
- src/box/tuple.cc 1 addition, 1 deletionsrc/box/tuple.cc
- src/coio.cc 3 additions, 3 deletionssrc/coio.cc
- src/evio.cc 4 additions, 4 deletionssrc/evio.cc
- src/exception.cc 36 additions, 0 deletionssrc/exception.cc
- src/exception.h 4 additions, 1 deletionsrc/exception.h
- src/fiber.cc 6 additions, 3 deletionssrc/fiber.cc
- src/fiber.h 4 additions, 0 deletionssrc/fiber.h
- src/iproto.cc 11 additions, 11 deletionssrc/iproto.cc
- src/iproto_port.cc 4 additions, 5 deletionssrc/iproto_port.cc
- src/iproto_port.h 1 addition, 1 deletionsrc/iproto_port.h
- src/lua/fiber.cc 7 additions, 7 deletionssrc/lua/fiber.cc
- src/lua/init.cc 5 additions, 5 deletionssrc/lua/init.cc
- src/lua/socket.cc 11 additions, 11 deletionssrc/lua/socket.cc
Loading
Please register or sign in to comment