diff options
author | Simon McVittie <smcv@collabora.com> | 2019-10-24 11:53:23 +0100 |
---|---|---|
committer | Simon McVittie <smcv@collabora.com> | 2019-10-24 12:08:20 +0100 |
commit | 3837b83f5aea43a9ac523500e16af5ae08fdefc8 (patch) | |
tree | bc7e539b69f13305c771f6b91aafc7da04334ba3 | |
parent | 8a7b375216ef65d76510f3ea37e526392d160f4c (diff) | |
download | glib-3837b83f5aea43a9ac523500e16af5ae08fdefc8.tar.gz |
array: Avoid use of memcpy(dest, NULL, 0)
glibc declares memcpy() with the first two arguments (the pointers)
annotated as non-null via an attribute, which results in the undefined
behaviour sanitizer considering it to be UB to pass a null pointer
in the second argument, even if we are copying 0 bytes (and hence not
actually dereferencing the pointer).
This shows up in array-test when run with the undefined behaviour
sanitizer.
Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r-- | glib/garray.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/glib/garray.c b/glib/garray.c index 2e8dd0b6b..4cbfd1373 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -1146,7 +1146,7 @@ g_ptr_array_copy (GPtrArray *array, for (i = 0; i < array->len; i++) new_array->pdata[i] = func (array->pdata[i], user_data); } - else + else if (array->len > 0) { memcpy (new_array->pdata, array->pdata, array->len * sizeof (*array->pdata)); @@ -1797,7 +1797,7 @@ g_ptr_array_extend (GPtrArray *array_to_extend, rarray_to_extend->pdata[i + rarray_to_extend->len] = func (array->pdata[i], user_data); } - else + else if (array->len > 0) { memcpy (rarray_to_extend->pdata + rarray_to_extend->len, array->pdata, array->len * sizeof (*array->pdata)); |