]> Savannah Git Hosting - gnulib.git/commitdiff
dfa: port to gcc -fsanitize=undefined
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 16 Jan 2017 01:18:10 +0000 (17:18 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 16 Jan 2017 02:08:44 +0000 (18:08 -0800)
* lib/dfa.c (copy): Don’t pass NULL with size 0 to memcpy,
as this runs afoul of gcc -fsanitize=undefined.

ChangeLog
lib/dfa.c

index f13c784edaa8995dcf00025b627f3cf820559e55..e0b836bcff194adc9f85567a1032fc2cb19d8417 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       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  <eggert@cs.ucla.edu>
 
        strftime: %z is -00 if unknown
index 5df27eae09d3008e5898031ef773309a5d990c85..f6c3017014655fc7ede8af88b7fc1ef30dba878c 100644 (file)
--- 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