Differences From Artifact [bf7ff24437]:
- File src/exceptions/OFException.m — part of check-in [494acfb3e0] at 2020-05-17 14:08:15 on branch trunk — Add support for non-Unicode Windows in all classes (user: js, size: 7581) [annotate] [blame] [check-ins using] [more...]
To Artifact [9ab19e4a0d]:
- File
src/exceptions/OFException.m
— part of check-in
[f02b51feba]
at
2020-12-21 02:34:09
on branch trunk
— Don't use OFMutex in constructors
It's possible OFMutex is not loaded yet. (user: js, size: 7556) [annotate] [blame] [check-ins using] [more...]
︙ | ︙ | |||
32 33 34 35 36 37 38 | #import "OFString.h" #import "OFSystemInfo.h" #import "OFInitializationFailedException.h" #import "OFLockFailedException.h" #import "OFUnlockFailedException.h" | | | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #import "OFString.h" #import "OFSystemInfo.h" #import "OFInitializationFailedException.h" #import "OFLockFailedException.h" #import "OFUnlockFailedException.h" #ifdef OF_HAVE_THREADS # import "mutex.h" #endif #if defined(OF_WINDOWS) && defined(OF_HAVE_SOCKETS) # include <winerror.h> #endif |
︙ | ︙ | |||
71 72 73 74 75 76 77 | #endif #if !defined(HAVE_STRERROR_R) && defined(OF_HAVE_THREADS) static of_mutex_t mutex; OF_CONSTRUCTOR() { | | > | > > > | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #endif #if !defined(HAVE_STRERROR_R) && defined(OF_HAVE_THREADS) static of_mutex_t mutex; OF_CONSTRUCTOR() { OF_ENSURE(of_mutex_new(&mutex) == 0); } OF_DESTRUCTOR() { of_mutex_free(&mutex); } #endif OFString * of_strerror(int errNo) { OFString *ret; |
︙ | ︙ | |||
185 186 187 188 189 190 191 | if (strerror_r(errNo, buffer, 256) != 0) return @"Unknown error (strerror_r failed)"; ret = [OFString stringWithCString: buffer encoding: [OFLocale encoding]]; #else # ifdef OF_HAVE_THREADS | | | | 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | if (strerror_r(errNo, buffer, 256) != 0) return @"Unknown error (strerror_r failed)"; ret = [OFString stringWithCString: buffer encoding: [OFLocale encoding]]; #else # ifdef OF_HAVE_THREADS if (of_mutex_lock(&mutex) != 0) @throw [OFLockFailedException exception]; @try { # endif ret = [OFString stringWithCString: strerror(errNo) encoding: [OFLocale encoding]]; # ifdef OF_HAVE_THREADS } @finally { if (of_mutex_unlock(&mutex) != 0) @throw [OFUnlockFailedException exception]; } # endif #endif return ret; } |
︙ | ︙ |