From: <wsf...@us...> - 2008-03-21 23:11:27
|
Revision: 10317 http://swig.svn.sourceforge.net/swig/?rev=10317&view=rev Author: wsfulton Date: 2008-03-21 16:11:24 -0700 (Fri, 21 Mar 2008) Log Message: ----------- Thread safety patch for Python STL iterators from Abhinandan Jain Modified Paths: -------------- trunk/CHANGES.current trunk/Lib/python/pyiterators.swg Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2008-03-20 23:23:38 UTC (rev 10316) +++ trunk/CHANGES.current 2008-03-21 23:11:24 UTC (rev 10317) @@ -1,6 +1,9 @@ Version 1.3.35 (in progress) ============================ +03/21/2008: wsfulton + [Python] Thread safety patch for STL iterators from Abhinandan Jain. + 03/17/2008: mgossage [Lua] Added %luacode feature to add source code into wrappers. Updated documentation to document this. Modified: trunk/Lib/python/pyiterators.swg =================================================================== --- trunk/Lib/python/pyiterators.swg 2008-03-20 23:23:38 UTC (rev 10316) +++ trunk/Lib/python/pyiterators.swg 2008-03-21 23:11:24 UTC (rev 10317) @@ -6,7 +6,7 @@ * * Implement a python 'output' iterator for Python 2.2 or higher. * - * Users can derive form the PySwigIterator to implemet their + * Users can derive form the PySwigIterator to implement their * own iterators. As an example (real one since we use it for STL/STD * containers), the template PySwigIterator_T does the * implementation for genereic C++ iterators. @@ -57,17 +57,22 @@ // C++ common/needed methods virtual PySwigIterator *copy() const = 0; - PyObject *next() + PyObject *next() { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads PyObject *obj = value(); - incr(); - return obj; + incr(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; } PyObject *previous() { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads decr(); - return value(); + PyObject *obj = value(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; } PySwigIterator *advance(ptrdiff_t n) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |