diff options
Diffstat (limited to 'src/wayland-util.c')
| -rw-r--r-- | src/wayland-util.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/wayland-util.c b/src/wayland-util.c index eacf902..158f5a5 100644 --- a/src/wayland-util.c +++ b/src/wayland-util.c @@ -132,12 +132,18 @@ wl_array_add(struct wl_array *array, size_t size) return p; } -WL_EXPORT void +WL_EXPORT int wl_array_copy(struct wl_array *array, struct wl_array *source) { - array->size = 0; - wl_array_add(array, source->size); + if (array->size < source->size) { + if (!wl_array_add(array, source->size - array->size)) + return -1; + } else { + array->size = source->size; + } + memcpy(array->data, source->data, source->size); + return 0; } union map_entry { |
