diff options
author | Magnus Ahltorp <map@kth.se> | 2017-03-17 01:09:01 +0100 |
---|---|---|
committer | Magnus Ahltorp <map@kth.se> | 2017-03-17 01:25:18 +0100 |
commit | 28e24e48dcd6203f2c24e28f15aec8167697c9c0 (patch) | |
tree | 95a9a435e011e0d6bc55494cb42fd3cb55dae950 | |
parent | d62f8189a2eb7be50353eef85073b8af6a3e8f79 (diff) |
Report errors as exceptions when called from python.
-rw-r--r-- | c_src/permdb.c | 7 | ||||
-rw-r--r-- | c_src/permdb.h | 3 | ||||
-rw-r--r-- | c_src/permdbpy.c | 3 |
3 files changed, 13 insertions, 0 deletions
diff --git a/c_src/permdb.c b/c_src/permdb.c index 6117ff6..242dacc 100644 --- a/c_src/permdb.c +++ b/c_src/permdb.c @@ -624,6 +624,13 @@ permdb_free(permdb_object *state) free(state); } +char * +get_permdb_error(permdb_object *state) +{ + return state->error; +} + + /* * Returns the two bits of KEY that are used for LEVEL, for a q=2 * tree. diff --git a/c_src/permdb.h b/c_src/permdb.h index 314b873..9d6cc17 100644 --- a/c_src/permdb.h +++ b/c_src/permdb.h @@ -24,6 +24,9 @@ struct permdb_object; typedef struct permdb_object permdb_object; +char * +get_permdb_error(permdb_object *state); + node_entry get_entry_in_node(node_object node, unsigned char n); diff --git a/c_src/permdbpy.c b/c_src/permdbpy.c index 491f759..da7fc8f 100644 --- a/c_src/permdbpy.c +++ b/c_src/permdbpy.c @@ -72,6 +72,7 @@ data_pread(PyObject *self, PyObject *args) unsigned char *result = read_internal_data(state->permdb, offset, length); if (result == NULL) { + PyErr_SetString(PyExc_RuntimeError, get_permdb_error(state->permdb)); return NULL; } @@ -123,6 +124,7 @@ addvalue_wrapper(PyObject *self, PyObject *args) (unsigned char *) data, datalength, 0); if (result < 0) { + PyErr_SetString(PyExc_RuntimeError, get_permdb_error(state->permdb)); return NULL; } else if (result == 0) { Py_INCREF(Py_False); @@ -188,6 +190,7 @@ committree_wrapper(PyObject *self, PyObject *args) int result = committree(state->permdb); if (result < 0) { + PyErr_SetString(PyExc_RuntimeError, get_permdb_error(state->permdb)); return NULL; } else { Py_INCREF(Py_None); |