mirror of https://github.com/python/cpython
Merged revisions 64685 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r64685 | amaury.forgeotdarc | 2008-07-03 01:40:28 +0200 (Thu, 03 Jul 2008) | 3 lines Try a blind fix to nismodule which fails on the solaris10 3.0 buildbot: the GIL must be re-acquired in the callback function ........
This commit is contained in:
parent
4b02c5a854
commit
451a356f11
|
@ -98,6 +98,7 @@ typedef int (*foreachfunc)(int, char *, int, char *, int, char *);
|
|||
struct ypcallback_data {
|
||||
PyObject *dict;
|
||||
int fix;
|
||||
PyThreadState *state;
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -109,6 +110,7 @@ nis_foreach (int instatus, char *inkey, int inkeylen, char *inval,
|
|||
PyObject *val;
|
||||
int err;
|
||||
|
||||
PyEval_RestoreThread(indata->state);
|
||||
if (indata->fix) {
|
||||
if (inkeylen > 0 && inkey[inkeylen-1] == '\0')
|
||||
inkeylen--;
|
||||
|
@ -127,10 +129,11 @@ nis_foreach (int instatus, char *inkey, int inkeylen, char *inval,
|
|||
err = PyDict_SetItem(indata->dict, key, val);
|
||||
Py_DECREF(key);
|
||||
Py_DECREF(val);
|
||||
if (err != 0) {
|
||||
if (err != 0)
|
||||
PyErr_Clear();
|
||||
return 1;
|
||||
}
|
||||
indata->state = PyEval_SaveThread();
|
||||
if (err != 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
|
@ -206,9 +209,9 @@ nis_cat (PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
data.dict = dict;
|
||||
map = nis_mapname (map, &data.fix);
|
||||
cb.data = (char *)&data;
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
data.state = PyEval_SaveThread();
|
||||
err = yp_all (domain, map, &cb);
|
||||
Py_END_ALLOW_THREADS
|
||||
PyEval_RestoreThread(data.state);
|
||||
if (err != 0) {
|
||||
Py_DECREF(dict);
|
||||
return nis_error(err);
|
||||
|
|
Loading…
Reference in New Issue