From: Ivan Maidanski Date: Thu, 14 Dec 2017 21:54:04 +0000 (+0300) Subject: Eliminate UBSan warning of overflow during descr subtraction in mark_from X-Git-Tag: v7.6.2~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1221a4699f8a8031d4ebb6298225bc944495372;p=gc Eliminate UBSan warning of overflow during descr subtraction in mark_from There is no unsigned overflow because descr has a negative value actually when it is subtracted from type_descr. * mark.c (GC_mark_from): Cast descr to signed_word in (type_descr-(descr+...)). --- diff --git a/mark.c b/mark.c index 6556b998..ede92c61 100644 --- a/mark.c +++ b/mark.c @@ -793,8 +793,8 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, continue; } descr = *(word *)(type_descr - - (descr + (GC_INDIR_PER_OBJ_BIAS - - GC_DS_PER_OBJECT))); + - ((signed_word)descr + (GC_INDIR_PER_OBJ_BIAS + - GC_DS_PER_OBJECT))); } if (0 == descr) { /* Can happen either because we generated a 0 descriptor */