summaryrefslogtreecommitdiff
path: root/Lib/python/std_map.i
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2009-07-29 03:34:22 +0000
committerOlly Betts <olly@survex.com>2009-07-29 03:34:22 +0000
commit0d539c8048bd659c7f81823fdc8a589e09c4def2 (patch)
tree248d108395228d9a294d333a407837530abf403b /Lib/python/std_map.i
parent1f01eb5d7d59e21e479053333152d8e40af0459f (diff)
downloadswig-0d539c8048bd659c7f81823fdc8a589e09c4def2.tar.gz
[Python] Add missing locks to std::map wrappers. Patch from
Paul Hampson in SF#2813836. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11465 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Lib/python/std_map.i')
-rw-r--r--Lib/python/std_map.i14
1 files changed, 10 insertions, 4 deletions
diff --git a/Lib/python/std_map.i b/Lib/python/std_map.i
index efe0e5e4c..074c43180 100644
--- a/Lib/python/std_map.i
+++ b/Lib/python/std_map.i
@@ -20,6 +20,7 @@
typedef std::map<K,T> map_type;
static int asptr(PyObject *obj, map_type **val) {
int res = SWIG_ERROR;
+ SWIG_PYTHON_THREAD_BEGIN_BLOCK;
if (PyDict_Check(obj)) {
SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL);
%#if PY_VERSION_HEX >= 0x03000000
@@ -32,6 +33,7 @@
res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info<map_type>(),0);
if (SWIG_IsOK(res) && val) *val = p;
}
+ SWIG_PYTHON_THREAD_END_BLOCK;
return res;
}
};
@@ -47,10 +49,10 @@
if (desc && desc->clientdata) {
return SWIG_NewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN);
} else {
+ SWIG_PYTHON_THREAD_BEGIN_BLOCK;
size_type size = map.size();
int pysize = (size <= (size_type) INT_MAX) ? (int) size : -1;
if (pysize < 0) {
- SWIG_PYTHON_THREAD_BEGIN_BLOCK;
PyErr_SetString(PyExc_OverflowError,
"map size not valid in python");
SWIG_PYTHON_THREAD_END_BLOCK;
@@ -62,6 +64,7 @@
swig::SwigVar_PyObject val = swig::from(i->second);
PyDict_SetItem(obj, key, val);
}
+ SWIG_PYTHON_THREAD_END_BLOCK;
return obj;
}
}
@@ -165,8 +168,8 @@
PyObject* keys() {
Map::size_type size = self->size();
int pysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1;
+ SWIG_PYTHON_THREAD_BEGIN_BLOCK;
if (pysize < 0) {
- SWIG_PYTHON_THREAD_BEGIN_BLOCK;
PyErr_SetString(PyExc_OverflowError,
"map size not valid in python");
SWIG_PYTHON_THREAD_END_BLOCK;
@@ -177,14 +180,15 @@
for (int j = 0; j < pysize; ++i, ++j) {
PyList_SET_ITEM(keyList, j, swig::from(i->first));
}
+ SWIG_PYTHON_THREAD_END_BLOCK;
return keyList;
}
PyObject* values() {
Map::size_type size = self->size();
int pysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1;
+ SWIG_PYTHON_THREAD_BEGIN_BLOCK;
if (pysize < 0) {
- SWIG_PYTHON_THREAD_BEGIN_BLOCK;
PyErr_SetString(PyExc_OverflowError,
"map size not valid in python");
SWIG_PYTHON_THREAD_END_BLOCK;
@@ -195,14 +199,15 @@
for (int j = 0; j < pysize; ++i, ++j) {
PyList_SET_ITEM(valList, j, swig::from(i->second));
}
+ SWIG_PYTHON_THREAD_END_BLOCK;
return valList;
}
PyObject* items() {
Map::size_type size = self->size();
int pysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1;
+ SWIG_PYTHON_THREAD_BEGIN_BLOCK;
if (pysize < 0) {
- SWIG_PYTHON_THREAD_BEGIN_BLOCK;
PyErr_SetString(PyExc_OverflowError,
"map size not valid in python");
SWIG_PYTHON_THREAD_END_BLOCK;
@@ -213,6 +218,7 @@
for (int j = 0; j < pysize; ++i, ++j) {
PyList_SET_ITEM(itemList, j, swig::from(*i));
}
+ SWIG_PYTHON_THREAD_END_BLOCK;
return itemList;
}