Eliminate 'integer shift by a negative amount' code defect in finalize
authorIvan Maidanski <ivmai@mail.ru>
Fri, 16 Dec 2016 22:01:06 +0000 (01:01 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 16 Dec 2016 22:01:06 +0000 (01:01 +0300)
commiteeb118d8438919e7f1eb8f80851e6dadaaaab14f
tree69a8c701a34cd0f4a2aa45f0a1848b537cd07fbd
parent0363e03857f2697fa2cfa26f1899f81ddaf47e2a
Eliminate 'integer shift by a negative amount' code defect in finalize

* finalize.c (GC_register_disappearing_link_inner): Add assertion that
dl_hashtbl->log_size is non-negative after GC_grow_table() call.
* finalize.c (GC_unregister_disappearing_link_inner): If
dl_hashtbl->log_size is negative then return immediately (to avoid an
integer value shift by log_size==-1 in HASH2).
* finalize.c [!GC_MOVE_DISAPPEARING_LINK_NOT_NEEDED]
(GC_move_disappearing_link_inner): Likewise.
* finalize.c (GC_register_finalizer_inner): Add assertion that
log_fo_table_size is non-negative after GC_grow_table() call.
* finalize.c (GC_finalize): Add assertion that log_fo_table_size is
non-negative unless GC_fnlz_roots.finalize_now is null.
finalize.c