aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxen
diff options
context:
space:
mode:
authorEwan Mellor <ewan@xensource.com>2007-03-09 16:04:19 +0000
committerEwan Mellor <ewan@xensource.com>2007-03-09 16:04:19 +0000
commit2f6d51b68b24e6e4c7799bc7abf594790bdc8833 (patch)
tree54c05fbf9fd45d01b5bfc151c91b3f0a168b74bf /tools/libxen
parent95ce7ffd2dd2ecbe6ce6c5ee3f987a22b52c3aa7 (diff)
downloadxen-2f6d51b68b24e6e4c7799bc7abf594790bdc8833.tar.gz
xen-2f6d51b68b24e6e4c7799bc7abf594790bdc8833.tar.bz2
xen-2f6d51b68b24e6e4c7799bc7abf594790bdc8833.zip
This patch fixes two problems with sending and receiving of (arrays of)
structures. The first one allows to determine the size of a member when parsing a 'set'. The cast in the second part fixes the address calculation when serializing an array. Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
Diffstat (limited to 'tools/libxen')
-rw-r--r--tools/libxen/src/xen_common.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/libxen/src/xen_common.c b/tools/libxen/src/xen_common.c
index c6e2181850..5d72cab177 100644
--- a/tools/libxen/src/xen_common.c
+++ b/tools/libxen/src/xen_common.c
@@ -890,6 +890,9 @@ static size_t size_of_member(const abstract_type *type)
case REF:
return sizeof(arbitrary_record_opt *);
+ case STRUCT:
+ return type->struct_size;
+
default:
assert(false);
}
@@ -1215,7 +1218,8 @@ add_struct_value(const struct abstract_type *type, void *value,
for (size_t i = 0; i < set_val->size; i++)
{
- void *member_value = set_val->contents + (i * member_size);
+ void *member_value = (char *)set_val->contents +
+ (i * member_size);
add_struct_value(member_type, member_value,
add_unnamed_value, NULL, data_node);
}