From 61c27fe8f598bc3f562a8115abbeedd78446fe07 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 15 Jan 2017 17:18:10 -0800 Subject: [PATCH] dfa: port to gcc -fsanitize=undefined MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * lib/dfa.c (copy): Don’t pass NULL with size 0 to memcpy, as this runs afoul of gcc -fsanitize=undefined. --- ChangeLog | 6 ++++++ lib/dfa.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) 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 -- 2.39.5