summaryrefslogtreecommitdiff
path: root/palettes.c
diff options
context:
space:
mode:
Diffstat (limited to 'palettes.c')
-rw-r--r--palettes.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/palettes.c b/palettes.c
index 1e927e4..6da1fc5 100644
--- a/palettes.c
+++ b/palettes.c
@@ -121,11 +121,19 @@ const palette *palette_random (const palette_collection * const pc,
}
void palette_copy (const palette * restrict const src, palette * restrict const dest) {
- dest->count = src->count;
- int ret = posix_memalign ((void **) &dest->color, sizeof (*dest->color),
- sizeof (*dest->color) * dest->count);
- assert (ret == 0 && dest->color != NULL);
- memcpy (dest->color, src->color, dest->count * sizeof (*dest->color));
+ assert (src != NULL);
+ assert (dest != NULL);
+
+ *dest = *src;
+ if (src->name != NULL) {
+ dest->name = strdup (src->name);
+ }
+ if (src->color != NULL) {
+ int ret = posix_memalign ((void **) &dest->color, sizeof (*dest->color),
+ sizeof (*dest->color) * dest->count);
+ assert (ret == 0 && dest->color != NULL);
+ memcpy (dest->color, src->color, dest->count * sizeof (*dest->color));
+ }
}
void palette_rotate_hue (palette * const p, double rot) {