diff options
author | Ewan Mellor <ewan@xensource.com> | 2007-03-09 16:04:19 +0000 |
---|---|---|
committer | Ewan Mellor <ewan@xensource.com> | 2007-03-09 16:04:19 +0000 |
commit | 2f6d51b68b24e6e4c7799bc7abf594790bdc8833 (patch) | |
tree | 54c05fbf9fd45d01b5bfc151c91b3f0a168b74bf /tools/libxen | |
parent | 95ce7ffd2dd2ecbe6ce6c5ee3f987a22b52c3aa7 (diff) | |
download | xen-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.c | 6 |
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); } |