summaryrefslogtreecommitdiffstats
path: root/python_modules/demarshal.py
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-06-29 18:13:07 +0200
committerMarc-André Lureau <marcandre.lureau@gmail.com>2012-03-20 15:25:46 +0100
commitdcaba909d3d68f7dcb3077de083724daf4b6fd29 (patch)
tree988f9f421b18f3ef424f482fd9f5c67bf006bf8c /python_modules/demarshal.py
parentf2d7fbdb19cd9758346316e63bcbd87b7dedd5ff (diff)
downloadspice-protocol-dcaba909d3d68f7dcb3077de083724daf4b6fd29.tar.gz
spice-protocol-dcaba909d3d68f7dcb3077de083724daf4b6fd29.tar.xz
spice-protocol-dcaba909d3d68f7dcb3077de083724daf4b6fd29.zip
demarshaller: Don't parse @zero members
These just write zeros at the right place in the network protocol typically for old back-compat things. We don't want to read these back in.
Diffstat (limited to 'python_modules/demarshal.py')
-rw-r--r--python_modules/demarshal.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/python_modules/demarshal.py b/python_modules/demarshal.py
index 0138ebe..d8b8ea9 100644
--- a/python_modules/demarshal.py
+++ b/python_modules/demarshal.py
@@ -638,7 +638,8 @@ def write_switch_parser(writer, container, switch, dest, scope):
elif t.is_pointer():
write_parse_pointer(writer, t, False, dest2, m.name, block)
elif t.is_primitive():
- writer.assign(dest2.get_ref(m.name), "consume_%s(&in)" % (t.primitive_type()))
+ if not m.has_attr("zero"):
+ writer.assign(dest2.get_ref(m.name), "consume_%s(&in)" % (t.primitive_type()))
#TODO validate e.g. flags and enums
elif t.is_array():
nelements = read_array_len(writer, m.name, t, dest, block)
@@ -757,6 +758,8 @@ def write_member_parser(writer, container, member, dest, scope):
else:
write_parse_pointer(writer, t, member.has_end_attr(), dest, member.name, scope)
elif t.is_primitive():
+ if member.has_attr("zero"):
+ pass
if member.has_end_attr():
writer.statement("*(%s *)end = consume_%s(&in)" % (t.c_type(), t.primitive_type()))
writer.increment("end", t.sizeof())