]> granicus.if.org Git - gc/commitdiff
Eliminate 'there is pointer arithmetic with NULL' cppcheck warning
authorIvan Maidanski <ivmai@mail.ru>
Thu, 5 Apr 2018 21:42:29 +0000 (00:42 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 16 Apr 2018 07:01:40 +0000 (10:01 +0300)
* extra/msvc_dbg.c (GetDescriptionFromStack): Compare size to 0 instead
of comparing description to NULL; mark format argument as used.
* extra/msvc_dbg.c (backtrace_symbols): Do not call
GetDescriptionFromStack if symbols (description) is NULL but size is
non-zero.

extra/msvc_dbg.c

index 42aceeb26839c409831dd37ee276af56a17d97c1..8abe24738393bcd3e8d9a4578ec379c8b9a96168 100644 (file)
@@ -353,12 +353,15 @@ size_t GetDescriptionFromStack(void* const frames[], size_t count,
   char*const end = begin + size;
   char* buffer = begin + (count + 1) * sizeof(char*);
   size_t i;
+  (void)format;
   for (i = 0; i < count; ++i) {
-    if (description) description[i] = buffer;
+    if (size)
+      description[i] = buffer;
     size = (GC_ULONG_PTR)end < (GC_ULONG_PTR)buffer ? 0 : end - buffer;
     buffer += 1 + GetDescriptionFromAddress(frames[i], NULL, buffer, size);
   }
-  if (description) description[count] = NULL;
+  if (size)
+    description[count] = NULL;
   return buffer - begin;
 }
 
@@ -373,7 +376,8 @@ char** backtrace_symbols(void*const* addresses, int count)
 {
   size_t size = GetDescriptionFromStack(addresses, count, NULL, NULL, 0);
   char** symbols = (char**)malloc(size);
-  GetDescriptionFromStack(addresses, count, NULL, symbols, size);
+  if (symbols != NULL)
+    GetDescriptionFromStack(addresses, count, NULL, symbols, size);
   return symbols;
 }