diff --git a/src/core/data.c b/src/core/data.c
index 57326fe9c00e8746c3e8e2476f780469813b87e2..9031f03d8a88d4dbd4154c4f55d9400f427c1f30 100644 (file)
--- a/src/core/data.c
+++ b/src/core/data.c
tmp = *src;
switch (src->type) {
case SDB_TYPE_STRING:
- tmp.data.string = strdup(src->data.string);
- if (! tmp.data.string)
- return -1;
+ if (src->data.string) {
+ tmp.data.string = strdup(src->data.string);
+ if (! tmp.data.string)
+ return -1;
+ }
break;
case SDB_TYPE_BINARY:
- tmp.data.binary.datum = malloc(src->data.binary.length);
- if (! tmp.data.binary.datum)
- return -1;
- memcpy(tmp.data.binary.datum, src->data.binary.datum,
- src->data.binary.length);
+ if (src->data.binary.datum) {
+ tmp.data.binary.datum = malloc(src->data.binary.length);
+ if (! tmp.data.binary.datum)
+ return -1;
+ memcpy(tmp.data.binary.datum, src->data.binary.datum,
+ src->data.binary.length);
+ }
break;
}