From: Alexandre Vassalotti Date: Mon, 25 May 2009 18:50:33 +0000 (+0000) Subject: Only try to intern str objects when unpickling attributes. X-Git-Tag: v3.1rc1~53 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ebfecfde8b14c968c41a22f8c81fe0ac7e8f57c1;p=python Only try to intern str objects when unpickling attributes. This matches the behaviour implmented in _pickle. --- diff --git a/Lib/pickle.py b/Lib/pickle.py index b94b3058cd..720c1a00e6 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)