From ebfecfde8b14c968c41a22f8c81fe0ac7e8f57c1 Mon Sep 17 00:00:00 2001 From: Alexandre Vassalotti Date: Mon, 25 May 2009 18:50:33 +0000 Subject: Only try to intern str objects when unpickling attributes. This matches the behaviour implmented in _pickle. --- Lib/pickle.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Lib/pickle.py b/Lib/pickle.py index b94b305..720c1a0 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -1195,15 +1195,13 @@ class _Unpickler: if isinstance(state, tuple) and len(state) == 2: state, slotstate = state if state: - d = inst.__dict__ + inst_dict = inst.__dict__ intern = sys.intern - try: - for k, v in state.items(): - d[intern(k)] = v - # keys in state don't have to be strings - # don't blow up, but don't go out of our way - except TypeError: - d.update(state) + for k, v in state.items(): + if type(k) is str: + inst_dict[intern(k)] = v + else: + inst_dict[k] = v if slotstate: for k, v in slotstate.items(): setattr(inst, k, v) -- cgit v0.12