From 20442f9afdcd3fc36d69bac3d8b7513920501ee0 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Mon, 27 Jul 2020 23:15:16 +0200 Subject: [PATCH] hlinkdb: always load as bytes on python3 We really need this to be bytes, so always load as such. Signed-off-by: Johannes Berg Reviewed-by: Rob Browning [rlb@defaultvalue.org: changed %s to %d] Signed-off-by: Rob Browning Tested-by: Rob Browning --- lib/bup/hlinkdb.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/bup/hlinkdb.py b/lib/bup/hlinkdb.py index d4125ae..f953a32 100644 --- a/lib/bup/hlinkdb.py +++ b/lib/bup/hlinkdb.py @@ -6,8 +6,11 @@ from bup import compat if compat.py_maj > 2: import pickle + def pickle_load(f): + return pickle.load(f, encoding='bytes') else: import cPickle as pickle + pickle_load = pickle.load class Error(Exception): @@ -32,7 +35,7 @@ class HLinkDB: raise if f: try: - self._node_paths = pickle.load(f) + self._node_paths = pickle_load(f) finally: f.close() f = None @@ -94,7 +97,7 @@ class HLinkDB: def add_path(self, path, dev, ino): # Assume path is new. - node = '%s:%s' % (dev, ino) + node = b'%d:%d' % (dev, ino) self._path_node[path] = node link_paths = self._node_paths.get(node) if link_paths and path not in link_paths: @@ -122,5 +125,5 @@ class HLinkDB: del self._path_node[path] def node_paths(self, dev, ino): - node = '%s:%s' % (dev, ino) + node = b'%d:%d' % (dev, ino) return self._node_paths[node] -- 2.39.2