From: <bpe...@us...> - 2015-10-30 17:42:47
|
Revision: 4994 http://sourceforge.net/p/simupop/code/4994 Author: bpeng2000 Date: 2015-10-30 17:42:45 +0000 (Fri, 30 Oct 2015) Log Message: ----------- Remove __builtins__ before a population is saved because it contains non-pickable items Modified Paths: -------------- trunk/src/utility.cpp Modified: trunk/src/utility.cpp =================================================================== --- trunk/src/utility.cpp 2015-10-30 04:42:01 UTC (rev 4993) +++ trunk/src/utility.cpp 2015-10-30 17:42:45 UTC (rev 4994) @@ -2406,6 +2406,13 @@ if (! pickle) throw RuntimeError("Failed to import module pickle to serialize population variables."); + // Some items in __builtins__ are not pickable so we will have to remove them + // before picking. + PyObject * builtins = PyString_FromString("__builtins__"); + if (PyDict_Contains(m_dict, builtins)) + PyDict_DelItem(m_dict, builtins); + Py_DECREF(builtins); + // here we use version 2 because this is the latest version that supported by // both python 2 and python 3, also because it is the one that handles simuPOP's // defdict type using its __reduce__ interface. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |