diff options
| author | Pali Rohár <pali.rohar@gmail.com> | 2019-05-23 20:24:05 +0200 |
|---|---|---|
| committer | Pali Rohár <pali.rohar@gmail.com> | 2019-05-23 20:24:05 +0200 |
| commit | f6f6dd2dcff42b0f7c0cee047f1e9862412a3f02 (patch) | |
| tree | 1238b932e00ab1c027b11ddd41a1ff48360c2490 | |
| parent | 207311ceba4f8e2ebab27ead6e07dfecef392383 (diff) | |
| download | dlfcn-win32-f6f6dd2dcff42b0f7c0cee047f1e9862412a3f02.tar.gz dlfcn-win32-f6f6dd2dcff42b0f7c0cee047f1e9862412a3f02.tar.bz2 dlfcn-win32-f6f6dd2dcff42b0f7c0cee047f1e9862412a3f02.zip | |
Test that dlerror() returns non-NULL error for failed calls
| -rw-r--r-- | test.c | 57 |
1 files changed, 37 insertions, 20 deletions
| @@ -201,11 +201,14 @@ int main() | |||
| 201 | CLOSE_GLOBAL; | 201 | CLOSE_GLOBAL; |
| 202 | RETURN_ERROR; | 202 | RETURN_ERROR; |
| 203 | } | 203 | } |
| 204 | else { | 204 | error = dlerror( ); |
| 205 | error = dlerror( ); | 205 | if( !error ) |
| 206 | printf( "SUCCESS\tCould not get nonexistent symbol from library handle: %s\n", | 206 | { |
| 207 | error ? error : "" ); | 207 | printf( "ERROR\tNo error from dlsym for nonexistent symbol\n" ); |
| 208 | RETURN_ERROR; | ||
| 208 | } | 209 | } |
| 210 | else | ||
| 211 | printf( "SUCCESS\tCould not get nonexistent symbol from library handle: %s\n", error ); | ||
| 209 | 212 | ||
| 210 | function = dlsym( global, "function" ); | 213 | function = dlsym( global, "function" ); |
| 211 | if( !function ) | 214 | if( !function ) |
| @@ -231,11 +234,14 @@ int main() | |||
| 231 | CLOSE_GLOBAL; | 234 | CLOSE_GLOBAL; |
| 232 | RETURN_ERROR; | 235 | RETURN_ERROR; |
| 233 | } | 236 | } |
| 234 | else { | 237 | error = dlerror( ); |
| 235 | error = dlerror( ); | 238 | if( !error ) |
| 236 | printf( "SUCCESS\tCould not get nonexistent symbol from global handle: %s\n", | 239 | { |
| 237 | error ? error : "" ); | 240 | printf( "ERROR\tNo error from dlsym for nonexistent symbol\n" ); |
| 241 | RETURN_ERROR; | ||
| 238 | } | 242 | } |
| 243 | else | ||
| 244 | printf( "SUCCESS\tCould not get nonexistent symbol from global handle: %s\n", error ); | ||
| 239 | 245 | ||
| 240 | ret = dlclose( library ); | 246 | ret = dlclose( library ); |
| 241 | if( ret ) | 247 | if( ret ) |
| @@ -293,11 +299,14 @@ int main() | |||
| 293 | CLOSE_GLOBAL; | 299 | CLOSE_GLOBAL; |
| 294 | RETURN_ERROR; | 300 | RETURN_ERROR; |
| 295 | } | 301 | } |
| 296 | else { | 302 | error = dlerror( ); |
| 297 | error = dlerror( ); | 303 | if( !error ) |
| 298 | printf( "SUCCESS\tCould not get nonexistent symbol from library handle: %s\n", | 304 | { |
| 299 | error ? error : "" ); | 305 | printf( "ERROR\tNo error from dlsym for nonexistent symbol\n" ); |
| 306 | RETURN_ERROR; | ||
| 300 | } | 307 | } |
| 308 | else | ||
| 309 | printf( "SUCCESS\tCould not get nonexistent symbol from library handle: %s\n", error ); | ||
| 301 | 310 | ||
| 302 | function = dlsym( global, "function" ); | 311 | function = dlsym( global, "function" ); |
| 303 | if( function ) | 312 | if( function ) |
| @@ -321,11 +330,14 @@ int main() | |||
| 321 | CLOSE_GLOBAL; | 330 | CLOSE_GLOBAL; |
| 322 | RETURN_ERROR; | 331 | RETURN_ERROR; |
| 323 | } | 332 | } |
| 324 | else { | 333 | error = dlerror( ); |
| 325 | error = dlerror( ); | 334 | if( !error ) |
| 326 | printf( "SUCCESS\tDid not get nonexistent local symbol from global handle: %s\n", | 335 | { |
| 327 | error ? error : "" ); | 336 | printf( "ERROR\tNo error from dlsym for nonexistent symbol\n" ); |
| 337 | RETURN_ERROR; | ||
| 328 | } | 338 | } |
| 339 | else | ||
| 340 | printf( "SUCCESS\tDid not get nonexistent local symbol from global handle: %s\n", error ); | ||
| 329 | 341 | ||
| 330 | library = dlopen( "testdll.dll", RTLD_GLOBAL ); | 342 | library = dlopen( "testdll.dll", RTLD_GLOBAL ); |
| 331 | if( !library ) | 343 | if( !library ) |
| @@ -363,10 +375,15 @@ int main() | |||
| 363 | CLOSE_GLOBAL; | 375 | CLOSE_GLOBAL; |
| 364 | RETURN_ERROR; | 376 | RETURN_ERROR; |
| 365 | } | 377 | } |
| 366 | else { | 378 | error = dlerror( ); |
| 367 | error = dlerror( ); | 379 | if( !error ) |
| 368 | printf( "SUCCESS\tCould not get nonexistent symbol from global handle: %s\n", | 380 | { |
| 369 | error ? error : "" ); | 381 | printf( "ERROR\tNo error from dlsym for nonexistent symbol\n" ); |
| 382 | RETURN_ERROR; | ||
| 383 | } | ||
| 384 | else | ||
| 385 | { | ||
| 386 | printf( "SUCCESS\tCould not get nonexistent symbol from global handle: %s\n", error ); | ||
| 370 | 387 | ||
| 371 | /* Test that the second call to dlerror() returns null as in the specs | 388 | /* Test that the second call to dlerror() returns null as in the specs |
| 372 | See https://github.com/dlfcn-win32/dlfcn-win32/issues/34 */ | 389 | See https://github.com/dlfcn-win32/dlfcn-win32/issues/34 */ |
