diff options
author | Patrick Gauvin <gauvin@hcs.ufl.edu> | 2016-06-26 13:06:07 -0400 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2018-02-08 14:21:13 +1100 |
commit | 5812a26eeb8928f34eadc5c5dfca74563a824cd0 (patch) | |
tree | a9e6af597525f7ac5c819953f71788aeb0f1ca84 | |
parent | libdl: Fix dlerror return type (diff) | |
download | rtems-5812a26eeb8928f34eadc5c5dfca74563a824cd0.tar.bz2 |
Update dlerror usage
Handles possible NULL return value
Updates #2747
Diffstat (limited to '')
-rw-r--r-- | cpukit/libdl/dlfcn-shell.c | 8 | ||||
-rw-r--r-- | testsuites/libtests/dl01/dl-load.c | 7 | ||||
-rw-r--r-- | testsuites/libtests/dl02/dl-load.c | 11 |
3 files changed, 19 insertions, 7 deletions
diff --git a/cpukit/libdl/dlfcn-shell.c b/cpukit/libdl/dlfcn-shell.c index 3746711ef1..12c737abb6 100644 --- a/cpukit/libdl/dlfcn-shell.c +++ b/cpukit/libdl/dlfcn-shell.c @@ -38,7 +38,8 @@ convert_ascii_to_voidp (const char* arg) int shell_dlopen (int argc, char* argv[]) { - int arg; + int arg; + char *err; for (arg = 1; arg < argc; arg++) { void* handle = dlopen (argv[arg], RTLD_NOW | RTLD_GLOBAL); @@ -53,7 +54,10 @@ shell_dlopen (int argc, char* argv[]) printf ("handle: %p %s\n", handle, message); } else - printf ("error: %s\n", dlerror ()); + { + err = dlerror (); + printf ("error: %s\n", err ? err : ""); + } } return 0; } diff --git a/testsuites/libtests/dl01/dl-load.c b/testsuites/libtests/dl01/dl-load.c index e8f84bd5b5..7441808b24 100644 --- a/testsuites/libtests/dl01/dl-load.c +++ b/testsuites/libtests/dl01/dl-load.c @@ -27,13 +27,15 @@ int dl_load_test(void) int call_ret; int unresolved; char* message = "loaded"; + char* err; printf("load: /dl-o1.o\n"); handle = dlopen ("/dl-o1.o", RTLD_NOW | RTLD_GLOBAL); if (!handle) { - printf("dlopen failed: %s\n", dlerror()); + err = dlerror (); + printf ("dlopen failed: %s\n", err ? err : ""); return 1; } @@ -67,7 +69,8 @@ int dl_load_test(void) if (dlclose (handle) < 0) { - printf("dlclose failed: %s\n", dlerror()); + err = dlerror (); + printf ("dlclose failed: %s\n", err ? err : ""); return 1; } diff --git a/testsuites/libtests/dl02/dl-load.c b/testsuites/libtests/dl02/dl-load.c index 5bb40dccba..5e74e0e425 100644 --- a/testsuites/libtests/dl02/dl-load.c +++ b/testsuites/libtests/dl02/dl-load.c @@ -21,13 +21,15 @@ static void* dl_load_obj(const char* name) void* handle; int unresolved; char* message = "loaded"; + char* err; printf("load: %s\n", name); handle = dlopen (name, RTLD_NOW | RTLD_GLOBAL); if (!handle) { - printf("dlopen failed: %s\n", dlerror()); + err = dlerror (); + printf ("dlopen failed: %s\n", err ? err : ""); return NULL; } @@ -48,6 +50,7 @@ int dl_load_test(void) call_t call; int call_ret; int ret; + char* err; o1 = dl_load_obj("/dl-o1.o"); if (!o1) @@ -83,7 +86,8 @@ int dl_load_test(void) if (dlclose (o1) < 0) { - printf("dlclose o1 failed: %s\n", dlerror()); + err = dlerror (); + printf ("dlclose o1 failed: %s\n", err ? err : ""); ret = 1; } @@ -91,7 +95,8 @@ int dl_load_test(void) if (dlclose (o2) < 0) { - printf("dlclose o1 failed: %s\n", dlerror()); + err = dlerror (); + printf ("dlclose o2 failed: %s\n", err ? err : ""); ret = 1; } |