Eliminate 'comparison is always false' code defect in get_maps
authorIvan Maidanski <ivmai@mail.ru>
Fri, 31 Aug 2018 16:06:27 +0000 (19:06 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 31 Aug 2018 16:06:27 +0000 (19:06 +0300)
In case of a single-threaded build, the comparison is always false
because maps_size>=0 and old_maps_size<=0.

* os_dep.c [NEED_PROC_MAPS] (GC_get_maps): Do not evaluate
maps_size<old_maps_size inside while expression if THREADS; remove
comment.

os_dep.c

index 56e8a84..f0b2bb6 100644 (file)
--- a/os_dep.c
+++ b/os_dep.c
@@ -242,8 +242,11 @@ GC_INNER char * GC_get_maps(void)
                      " (to %" WARN_PRIdPTR " bytes)\n", maps_size);
               }
 #           endif
-        } while (maps_size >= maps_buf_sz || maps_size < old_maps_size);
-                /* In the single-threaded case, the second clause is false. */
+        } while (maps_size >= maps_buf_sz
+#                ifdef THREADS
+                   || maps_size < old_maps_size
+#                endif
+                );
         maps_buf[maps_size] = '\0';
         return maps_buf;
 }