diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-04-17 22:23:00 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-04-17 22:48:30 +0300 |
commit | 77e63cae89782fb22e6eb0312fe8d9bce9071cda (patch) | |
tree | 84d48aa81ba744351c87e97e5a6fe32fb801523a /dbg_mlc.c | |
parent | e1186520a52f58a9bac50f16b1fd092d2e199b91 (diff) | |
download | bdwgc-77e63cae89782fb22e6eb0312fe8d9bce9071cda.tar.gz |
Workaround 'data access w/o lock' code defect FP in GC_incr_bytes_freed
* dbg_mlc.c [LINT2]: Include gc_alloc_ptrs.h.
* dbg_mlc.c [LINT2] (GC_debug_free): Use GC_incr_bytes_freed() instead
of direct increment of GC_bytes_freed.
Diffstat (limited to 'dbg_mlc.c')
-rw-r--r-- | dbg_mlc.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -753,6 +753,10 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_debug_malloc_uncollectable(size_t lb, # endif #endif +#ifdef LINT2 +# include "private/gc_alloc_ptrs.h" +#endif + GC_API void GC_CALL GC_debug_free(void * p) { ptr_t base; @@ -822,7 +826,11 @@ GC_API void GC_CALL GC_debug_free(void * p) /* Update the counter even though the real deallocation */ /* is deferred. */ LOCK(); - GC_bytes_freed += sz; +# ifdef LINT2 + GC_incr_bytes_freed((size_t)sz); +# else + GC_bytes_freed += sz; +# endif UNLOCK(); } } /* !GC_find_leak */ |