Changeset 196744 in webkit
- Timestamp:
- Feb 17, 2016 10:13:15 PM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r196742 r196744 1 2016-02-17 David Kilzer <ddkilzer@apple.com> 2 3 [Cocoa] Always check the return value of dlopen() and dlsym() in Release builds 4 <http://webkit.org/b/154364> 5 6 Reviewed by Alexey Proskuryakov. 7 8 * platform/mac/SoftLinking.h: 9 (SOFT_LINK_LIBRARY): Change ASSERT_WITH_MESSAGE() to 10 RELEASE_ASSERT_WITH_MESSAGE(). 11 (SOFT_LINK_FRAMEWORK): Ditto. 12 (SOFT_LINK_PRIVATE_FRAMEWORK): Ditto. 13 (SOFT_LINK_STAGED_FRAMEWORK): Ditto. 14 (SOFT_LINK_FRAMEWORK_IN_UMBRELLA): Ditto. 15 (SOFT_LINK): Ditto. 16 (SOFT_LINK_POINTER): Ditto. 17 (SOFT_LINK_CONSTANT): Ditto. 18 (SOFT_LINK_FRAMEWORK_FOR_SOURCE): Add 19 RELEASE_ASSERT_WITH_MESSAGE() when soft-link is not 20 optional. 21 1 22 2016-02-17 Chris Dumez <cdumez@apple.com> 2 23 -
trunk/Source/WebCore/platform/mac/SoftLinking.h
r184799 r196744 35 35 static void* lib##Library() \ 36 36 { \ 37 static void* dylib = dlopen("/usr/lib/" #lib ".dylib", RTLD_NOW); \ 38 ASSERT_WITH_MESSAGE(dylib, "%s", dlerror()); \ 37 static void* dylib = ^{ \ 38 void *result = dlopen("/usr/lib/" #lib ".dylib", RTLD_NOW); \ 39 RELEASE_ASSERT_WITH_MESSAGE(result, "%s", dlerror()); \ 40 return result; \ 41 }(); \ 39 42 return dylib; \ 40 43 } … … 43 46 static void* framework##Library() \ 44 47 { \ 45 static void* frameworkLibrary = dlopen("/System/Library/Frameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 46 ASSERT_WITH_MESSAGE(frameworkLibrary, "%s", dlerror()); \ 48 static void* frameworkLibrary = ^{ \ 49 void* result = dlopen("/System/Library/Frameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 50 RELEASE_ASSERT_WITH_MESSAGE(result, "%s", dlerror()); \ 51 return result; \ 52 }(); \ 47 53 return frameworkLibrary; \ 48 54 } … … 51 57 static void* framework##Library() \ 52 58 { \ 53 static void* frameworkLibrary = 0; \ 54 if (!frameworkLibrary) \ 55 frameworkLibrary = dlopen("/System/Library/PrivateFrameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 56 ASSERT_WITH_MESSAGE(frameworkLibrary, "%s", dlerror()); \ 59 static void* frameworkLibrary = ^{ \ 60 void* result = dlopen("/System/Library/PrivateFrameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 61 RELEASE_ASSERT_WITH_MESSAGE(result, "%s", dlerror()); \ 62 return result; \ 63 }(); \ 57 64 return frameworkLibrary; \ 58 65 } … … 79 86 if (!result) \ 80 87 result = dlopen("/System/Library/StagedFrameworks/Safari/" #framework ".framework/Versions/" #version "/" #framework, RTLD_LAZY); \ 88 RELEASE_ASSERT_WITH_MESSAGE(result, "%s", dlerror()); \ 81 89 return result; \ 82 90 }(); \ 83 ASSERT_WITH_MESSAGE(frameworkLibrary, "%s", dlerror()); \84 91 return frameworkLibrary; \ 85 92 } … … 88 95 static void* framework##Library() \ 89 96 { \ 90 static void* frameworkLibrary = dlopen("/System/Library/Frameworks/" #umbrella ".framework/Frameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 91 ASSERT_WITH_MESSAGE(frameworkLibrary, "%s", dlerror()); \ 97 static void* frameworkLibrary = ^{ \ 98 void* result = dlopen("/System/Library/Frameworks/" #umbrella ".framework/Frameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 99 RELEASE_ASSERT_WITH_MESSAGE(result, "%s", dlerror()); \ 100 return result; \ 101 }(); \ 92 102 return frameworkLibrary; \ 93 103 } … … 103 113 { \ 104 114 softLink##functionName = (resultType (*) parameterDeclarations) dlsym(framework##Library(), #functionName); \ 105 ASSERT_WITH_MESSAGE(softLink##functionName, "%s", dlerror()); \115 RELEASE_ASSERT_WITH_MESSAGE(softLink##functionName, "%s", dlerror()); \ 106 116 return softLink##functionName parameterNames; \ 107 117 } \ … … 216 226 { \ 217 227 void** pointer = static_cast<void**>(dlsym(framework##Library(), #name)); \ 218 ASSERT_WITH_MESSAGE(pointer, "%s", dlerror()); \228 RELEASE_ASSERT_WITH_MESSAGE(pointer, "%s", dlerror()); \ 219 229 pointer##name = static_cast<type>(*pointer); \ 220 230 get##name = name##Function; \ … … 254 264 { \ 255 265 void* constant = dlsym(framework##Library(), #name); \ 256 ASSERT_WITH_MESSAGE(constant, "%s", dlerror()); \266 RELEASE_ASSERT_WITH_MESSAGE(constant, "%s", dlerror()); \ 257 267 constant##name = *static_cast<type*>(constant); \ 258 268 get##name = name##Function; \ … … 309 319 dispatch_once(&once, ^{ \ 310 320 frameworkLibrary = dlopen("/System/Library/Frameworks/" #framework ".framework/" #framework, RTLD_NOW); \ 321 if (!isOptional) \ 322 RELEASE_ASSERT_WITH_MESSAGE(frameworkLibrary, "%s", dlerror()); \ 311 323 }); \ 312 324 ASSERT_WITH_MESSAGE_UNUSED(isOptional, isOptional || frameworkLibrary, "%s", dlerror()); \
Note: See TracChangeset
for help on using the changeset viewer.