Commit da821db8 authored by Terry Jan Reedy's avatar Terry Jan Reedy

Merge with 3.4: #21986, don't pickle user code objects.

parents 759920c5 ad0c57fe
...@@ -29,6 +29,7 @@ accomplished in Idle. ...@@ -29,6 +29,7 @@ accomplished in Idle.
import sys import sys
import os import os
import io
import socket import socket
import select import select
import socketserver import socketserver
...@@ -53,16 +54,15 @@ def pickle_code(co): ...@@ -53,16 +54,15 @@ def pickle_code(co):
ms = marshal.dumps(co) ms = marshal.dumps(co)
return unpickle_code, (ms,) return unpickle_code, (ms,)
# XXX KBK 24Aug02 function pickling capability not used in Idle def dumps(obj, protocol=None):
# def unpickle_function(ms): f = io.BytesIO()
# return ms p = CodePickler(f, protocol)
p.dump(obj)
return f.getvalue()
# def pickle_function(fn): class CodePickler(pickle.Pickler):
# assert isinstance(fn, type.FunctionType) dispatch_table = {types.CodeType: pickle_code}
# return repr(fn) dispatch_table.update(copyreg.dispatch_table)
copyreg.pickle(types.CodeType, pickle_code, unpickle_code)
# copyreg.pickle(types.FunctionType, pickle_function, unpickle_function)
BUFSIZE = 8*1024 BUFSIZE = 8*1024
LOCALHOST = '127.0.0.1' LOCALHOST = '127.0.0.1'
...@@ -329,7 +329,7 @@ class SocketIO(object): ...@@ -329,7 +329,7 @@ class SocketIO(object):
def putmessage(self, message): def putmessage(self, message):
self.debug("putmessage:%d:" % message[0]) self.debug("putmessage:%d:" % message[0])
try: try:
s = pickle.dumps(message) s = dumps(message)
except pickle.PicklingError: except pickle.PicklingError:
print("Cannot pickle:", repr(message), file=sys.__stderr__) print("Cannot pickle:", repr(message), file=sys.__stderr__)
raise raise
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment