Eliminate 'Condition 0==datastart always false' cppcheck warning (dyn_load)
authorIvan Maidanski <ivmai@mail.ru>
Tue, 25 Oct 2016 21:14:20 +0000 (00:14 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 25 Oct 2016 21:14:20 +0000 (00:14 +0300)
* dyn_load.c [HAVE_DL_ITERATE_PHDR]
(GC_register_dynamic_libraries_dl_iterate_phdr): Cast datastart to
char*volatile* before dereferencing and checking against NULL.

dyn_load.c

index 836e4bc..42534c1 100644 (file)
@@ -621,7 +621,8 @@ STATIC GC_bool GC_register_dynamic_libraries_dl_iterate_phdr(void)
 #     else
         dataend = DATAEND;
 #     endif
-      if (NULL == datastart || (word)datastart > (word)dataend)
+      if (NULL == *(char * volatile *)&datastart
+          || (word)datastart > (word)dataend)
         ABORT_ARG2("Wrong DATASTART/END pair",
                    ": %p .. %p", (void *)datastart, (void *)dataend);