2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-31 06:15:24 +00:00

crit: Fix ipc load/dump for io.BytesIO input/output

There are loads and dumps method in pycriu.images that work with
strings, instead of open()-ed files. For simplicity strings are
turned into streams with io.BytesIO and the files are then pushed
into regular load/dump methods.

The problem is that array.array object doesn't work with io object
in .fromfile/.tofile methods, so we have to read/write the data
from them explicitly and use .fromstring/.tostring for arrays.

With this the crit test finally passes :D

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
This commit is contained in:
Pavel Emelyanov
2015-12-10 22:08:00 +03:00
parent 8841edf770
commit 1b87ae8ff5

View File

@@ -269,7 +269,7 @@ class ipc_sem_set_handler:
s = array.array('H')
if s.itemsize != sizeof_u16:
raise Exception("Array size mismatch")
s.fromfile(f, entry['nsems'])
s.fromstring(f.read(size))
f.seek(rounded - size, 1)
return s.tolist()
@@ -283,7 +283,7 @@ class ipc_sem_set_handler:
s.fromlist(extra)
if len(s) != entry['nsems']:
raise Exception("Number of semaphores mismatch")
s.tofile(f)
f.write(s.tostring())
f.write('\0' * (rounded - size))
class ipc_msg_queue_handler: