From 3abff5ce6dac66cf4cdd06f2fe7c10474e472ffe Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sun, 13 Jan 2013 11:25:39 +0100 Subject: [PATCH] marshal: serialization may return 0 and target untouched If serialization finds a structure already serialized, it skips it and return 0. `target` should not be freed. --- src/marshal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/marshal.c b/src/marshal.c index 251a2b50..011e9cb6 100644 --- a/src/marshal.c +++ b/src/marshal.c @@ -141,13 +141,13 @@ marshal_serialize_(struct marshal_info *mi, void *unserialized, void **input, source = (void *)((unsigned char *)unserialized + current->offset); if (current->offset2) memcpy(&osize, (unsigned char*)unserialized + current->offset2, sizeof(int)); + target = NULL; sublen = marshal_serialize_(current->mi, source, &target, current->kind == substruct, refs, osize); - if (sublen == -1 || target == NULL) { + if (sublen == -1) { log_warnx("marshal", "unable to serialize substructure %s for %s", current->mi->name, mi->name); - free(target); free(serialized); return -1; } -- 2.39.5