The element with this flags value is skipped.
Signed-off-by: Michael S. Tsirkin <[email protected]>
---
include/migration/vmstate.h | 1 +
vmstate.c | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index e7e1705..3a1587e 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -88,6 +88,7 @@ struct VMStateInfo {
};
enum VMStateFlags {
+ VMS_NONE = 0x000,
VMS_SINGLE = 0x001,
VMS_POINTER = 0x002,
VMS_ARRAY = 0x004,
diff --git a/vmstate.c b/vmstate.c
index 18b3732..fe53735 100644
--- a/vmstate.c
+++ b/vmstate.c
@@ -13,7 +13,9 @@ static int vmstate_n_elems(void *opaque, VMStateField *field)
{
int n_elems = 1;
- if (field->flags & VMS_ARRAY) {
+ if (!(field->flags & ~VMS_NONE)) {
+ n_elems = 0;
+ } else if (field->flags & VMS_ARRAY) {
n_elems = field->num;
} else if (field->flags & VMS_VARRAY_INT32) {
n_elems = *(int32_t *)(opaque+field->num_offset);
--
MST