[Python-checkins] cpython (2.7): Closes #14436: Convert msg + args to string before pickling.
vinay.sajip
python-checkins at python.org
Thu Mar 29 21:19:02 CEST 2012
http://hg.python.org/cpython/rev/eda0ae0d2c68
changeset: 75987:eda0ae0d2c68
branch: 2.7
user: Vinay Sajip <vinay_sajip at yahoo.co.uk>
date: Thu Mar 29 20:11:20 2012 +0100
summary:
Closes #14436: Convert msg + args to string before pickling.
files:
Lib/logging/handlers.py | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -528,9 +528,16 @@
"""
ei = record.exc_info
if ei:
- dummy = self.format(record) # just to get traceback text into record.exc_text
+ # just to get traceback text into record.exc_text ...
+ dummy = self.format(record)
record.exc_info = None # to avoid Unpickleable error
- s = cPickle.dumps(record.__dict__, 1)
+ # See issue #14436: If msg or args are objects, they may not be
+ # available on the receiving end. So we convert the msg % args
+ # to a string, save it as msg and zap the args.
+ d = dict(record.__dict__)
+ d['msg'] = record.getMessage()
+ d['args'] = None
+ s = cPickle.dumps(d, 1)
if ei:
record.exc_info = ei # for next handler
slen = struct.pack(">L", len(s))
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list