Differences From Artifact [23bfa51fc4]:
- File
src/exceptions/OFException.m
— part of check-in
[62e2de30b9]
at
2015-02-16 08:39:17
on branch trunk
— Explicitly pass errno to exceptions
The old behaviour where the exception would access errno directly on
creation of the exception was very fragile. The two main problems with
it were that sometimes it would pick up an errno even though none had
been set and in other cases that when the exception was created errno
had already been overridden.This also greatly increases errno handling on Win32, especially in
conjunction with sockets. It can still be improved further, though. (user: js, size: 6477) [annotate] [blame] [check-ins using]
To Artifact [35e676e981]:
- File src/exceptions/OFException.m — part of check-in [4d16add5ae] at 2015-03-30 21:32:57 on branch trunk — OFException: Fix missing #ifdef / #endif (user: js, size: 6513) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
73 74 75 76 77 78 79 80 81 82 83 84 85 86 | extern _Unwind_Reason_Code _Unwind_Backtrace( _Unwind_Reason_Code(*)(struct _Unwind_Context*, void*), void*); # if defined(__arm__) || defined(__ARM__) extern int _Unwind_VRS_Get(struct _Unwind_Context*, int, uint32_t, int, void*); # else extern uintptr_t _Unwind_GetIP(struct _Unwind_Context*); # endif #if !defined(HAVE_STRERROR_R) && defined(OF_HAVE_THREADS) static of_mutex_t mutex; static void __attribute__((__constructor__)) init(void) { | > | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | extern _Unwind_Reason_Code _Unwind_Backtrace( _Unwind_Reason_Code(*)(struct _Unwind_Context*, void*), void*); # if defined(__arm__) || defined(__ARM__) extern int _Unwind_VRS_Get(struct _Unwind_Context*, int, uint32_t, int, void*); # else extern uintptr_t _Unwind_GetIP(struct _Unwind_Context*); # endif #endif #if !defined(HAVE_STRERROR_R) && defined(OF_HAVE_THREADS) static of_mutex_t mutex; static void __attribute__((__constructor__)) init(void) { |
︙ | ︙ | |||
201 202 203 204 205 206 207 208 209 210 211 212 213 214 | } # endif #endif return ret; } static _Unwind_Reason_Code backtrace_callback(struct _Unwind_Context *ctx, void *data) { struct backtrace_ctx *bt = data; if (bt->i < OF_BACKTRACE_SIZE) { # if defined(__arm__) || defined(__ARM__) | > | 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | } # endif #endif return ret; } #ifdef HAVE_DWARF_EXCEPTIONS static _Unwind_Reason_Code backtrace_callback(struct _Unwind_Context *ctx, void *data) { struct backtrace_ctx *bt = data; if (bt->i < OF_BACKTRACE_SIZE) { # if defined(__arm__) || defined(__ARM__) |
︙ | ︙ |