From: Paul Eggert Date: Mon, 16 Jan 2017 01:18:10 +0000 (-0800) Subject: dfa: port to gcc -fsanitize=undefined X-Git-Tag: v1.0~6386 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=61c27fe8f598bc3f562a8115abbeedd78446fe07;p=gnulib.git dfa: port to gcc -fsanitize=undefined * lib/dfa.c (copy): Don’t pass NULL with size 0 to memcpy, as this runs afoul of gcc -fsanitize=undefined. --- diff --git a/ChangeLog b/ChangeLog index f13c784eda..e0b836bcff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-01-15 Paul Eggert + + dfa: port to gcc -fsanitize=undefined + * lib/dfa.c (copy): Don’t pass NULL with size 0 to memcpy, + as this runs afoul of gcc -fsanitize=undefined. + 2017-01-14 Paul Eggert strftime: %z is -00 if unknown diff --git a/lib/dfa.c b/lib/dfa.c index 5df27eae09..f6c3017014 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -1999,8 +1999,9 @@ copy (position_set const *src, position_set *dst) dst->elems = xpalloc (NULL, &dst->alloc, src->nelem - dst->alloc, -1, sizeof *dst->elems); } - memcpy (dst->elems, src->elems, src->nelem * sizeof *dst->elems); dst->nelem = src->nelem; + if (src->nelem != 0) + memcpy (dst->elems, src->elems, src->nelem * sizeof *dst->elems); } static void