diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 08:13:27 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 08:13:27 +0930 |
commit | c5c0a4d3315d10921f2d4514724da045edbda296 (patch) | |
tree | 3d5f78273237c1586385d76a027b6e7e76f3dc43 | |
parent | 2237daed7e4c6c38241bc07383ed1a421abe8d6c (diff) | |
download | samba-c5c0a4d3315d10921f2d4514724da045edbda296.tar.gz samba-c5c0a4d3315d10921f2d4514724da045edbda296.tar.bz2 samba-c5c0a4d3315d10921f2d4514724da045edbda296.zip |
tdb2: fix return handling in pytdb wrapper.
tdb_close() does genuinely return non-zero, not an error code, even in tdb2.
And tdb_exists() returns true or false, not an error code.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r-- | lib/tdb2/pytdb.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/tdb2/pytdb.c b/lib/tdb2/pytdb.c index c03f00d58c..98ce4232a9 100644 --- a/lib/tdb2/pytdb.c +++ b/lib/tdb2/pytdb.c @@ -173,12 +173,15 @@ static PyObject *obj_unlockall_read(PyTdbObject *self) static PyObject *obj_close(PyTdbObject *self) { - enum TDB_ERROR ret; + int ret; if (self->closed) Py_RETURN_NONE; ret = tdb_close(self->ctx); self->closed = true; - PyErr_TDB_ERROR_IS_ERR_RAISE(ret); + if (ret != 0) { + PyErr_SetTDBError(TDB_ERR_IO); + return NULL; + } Py_RETURN_NONE; } @@ -265,17 +268,16 @@ static PyObject *obj_delete(PyTdbObject *self, PyObject *args) static PyObject *obj_has_key(PyTdbObject *self, PyObject *args) { TDB_DATA key; - enum TDB_ERROR ret; PyObject *py_key; if (!PyArg_ParseTuple(args, "O", &py_key)) return NULL; key = PyString_AsTDB_DATA(py_key); - ret = tdb_exists(self->ctx, key); - if (ret == TDB_ERR_NOEXIST) - return Py_False; - PyErr_TDB_ERROR_IS_ERR_RAISE(ret); - return Py_True; + if (tdb_exists(self->ctx, key)) + return Py_True; + if (tdb_error(self->ctx) != TDB_ERR_NOEXIST) + PyErr_TDB_ERROR_IS_ERR_RAISE(tdb_error(self->ctx)); + return Py_False; } static PyObject *obj_store(PyTdbObject *self, PyObject *args) |