while (PyDict_Next(path_revs, &idx, &k, &v)) {
rev = (svn_revnum_t *)apr_palloc(temp_pool, sizeof(svn_revnum_t));
- *rev = PyLong_AsLong(v);
+ *rev = PyInt_AsLong(v);
+ if (*rev == -1 && PyErr_Occurred()) {
+ apr_pool_destroy(temp_pool);
+ return NULL;
+ }
apr_hash_set(hash_path_revs, PyString_AsString(k), PyString_Size(k),
rev);
}
return NULL;
if (!strcmp(name, SVN_AUTH_PARAM_SSL_SERVER_FAILURES)) {
+ long ret = PyInt_AsLong(value);
+ if (ret == -1 && PyErr_Occurred())
+ return NULL;
vvalue = apr_pcalloc(auth->pool, sizeof(apr_uint32_t));
- *((apr_uint32_t *)vvalue) = PyInt_AsLong(value);
+ *((apr_uint32_t *)vvalue) = ret;
} else if (!strcmp(name, SVN_AUTH_PARAM_DEFAULT_USERNAME) ||
!strcmp(name, SVN_AUTH_PARAM_DEFAULT_PASSWORD)) {
vvalue = apr_pstrdup(auth->pool, PyString_AsString(value));
PyObject *ret;
PyObject *py_cert, *py_may_save, *py_accepted_failures;
PyGILState_STATE state = PyGILState_Ensure();
+ long accepted_failures;
if (cert_info == NULL) {
py_cert = Py_None;
CB_CHECK_PYRETVAL(ret);
if (!PyTuple_Check(ret)) {
+ Py_DECREF(ret);
PyErr_SetString(PyExc_TypeError, "expected tuple with server trust credentials");
PyGILState_Release(state);
return py_svn_error();
}
if (PyTuple_Size(ret) != 2) {
+ Py_DECREF(ret);
PyErr_SetString(PyExc_TypeError, "expected tuple of size 2");
PyGILState_Release(state);
return py_svn_error();
py_accepted_failures = PyTuple_GetItem(ret, 0);
if (!PyInt_Check(py_accepted_failures)) {
+ Py_DECREF(ret);
PyErr_SetString(PyExc_TypeError, "accepted_failures should be integer");
PyGILState_Release(state);
return py_svn_error();
py_may_save = PyTuple_GetItem(ret, 1);
if (!PyBool_Check(py_may_save)) {
+ Py_DECREF(ret);
PyErr_SetString(PyExc_TypeError, "may_save should be boolean");
PyGILState_Release(state);
return py_svn_error();
}
+ accepted_failures = PyInt_AsLong(py_accepted_failures);
+ if (accepted_failures == -1 && PyErr_Occurred()) {
+ Py_DECREF(ret);
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
*cred = apr_pcalloc(pool, sizeof(**cred));
- (*cred)->accepted_failures = PyInt_AsLong(py_accepted_failures);
+ (*cred)->accepted_failures = accepted_failures;
(*cred)->may_save = (py_may_save == Py_True);
Py_DECREF(ret);
static bool to_opt_revision(PyObject *arg, svn_opt_revision_t *ret)
{
- if (PyInt_Check(arg)) {
+ if (PyInt_Check(arg) || PyLong_Check(arg)) {
ret->kind = svn_opt_revision_number;
- ret->value.number = PyLong_AsLong(arg);
+ ret->value.number = PyInt_AsLong(arg);
+ if (ret->value.number == -1 && PyErr_Occurred())
+ return false;
return true;
} else if (arg == Py_None) {
ret->kind = svn_opt_revision_unspecified;
if (l == Py_None) {
return NULL;
}
+ if (!PyList_Check(l)) {
+ PyErr_SetString(PyExc_TypeError, "expected list with revision numbers");
+ return NULL;
+ }
ret = apr_array_make(pool, PyList_Size(l), sizeof(svn_revnum_t));
if (ret == NULL) {
PyErr_NoMemory();
return NULL;
}
for (i = 0; i < PyList_Size(l); i++) {
- APR_ARRAY_PUSH(ret, svn_revnum_t) = PyLong_AsLong(PyList_GetItem(l, i));
+ PyObject *item = PyList_GetItem(l, i);
+ long rev = PyInt_AsLong(item);
+ if (rev == -1 && PyErr_Occurred()) {
+ return NULL;
+ }
+ APR_ARRAY_PUSH(ret, svn_revnum_t) = rev;
}
return ret;
}