Zbigniew Jędrzejewski-Szmek 126222
From 2a683cff7e7ac4f94ce545a0907d5b5b883c2a36 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 126222
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 126222
Date: Sun, 29 Dec 2013 23:39:28 -0500
Zbigniew Jędrzejewski-Szmek 126222
Subject: [PATCH] systemd-python: fix setting of exception codes
Zbigniew Jędrzejewski-Szmek 126222
Zbigniew Jędrzejewski-Szmek 126222
The return value of 0 would be treated as failure by mistake,
Zbigniew Jędrzejewski-Szmek 126222
resulting in " SystemError: error return without exception set".
Zbigniew Jędrzejewski-Szmek 126222
The way that set_error() is used is changed to be the same
Zbigniew Jędrzejewski-Szmek 126222
everywhere.
Zbigniew Jędrzejewski-Szmek 126222
---
Zbigniew Jędrzejewski-Szmek 126222
 src/python-systemd/_daemon.c | 14 +++++-----
Zbigniew Jędrzejewski-Szmek 126222
 src/python-systemd/_reader.c | 63 ++++++++++++++++++++------------------------
Zbigniew Jędrzejewski-Szmek 126222
 2 files changed, 35 insertions(+), 42 deletions(-)
Zbigniew Jędrzejewski-Szmek 126222
Zbigniew Jędrzejewski-Szmek 126222
diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
Zbigniew Jędrzejewski-Szmek 126222
index f0ab16f..c6db69f 100644
Zbigniew Jędrzejewski-Szmek 126222
--- a/src/python-systemd/_daemon.c
Zbigniew Jędrzejewski-Szmek 126222
+++ b/src/python-systemd/_daemon.c
Zbigniew Jędrzejewski-Szmek 126222
@@ -88,7 +88,7 @@ static PyObject* notify(PyObject *self, PyObject *args, PyObject *keywds) {
Zbigniew Jędrzejewski-Szmek 126222
 #endif
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_notify(unset, msg);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -123,7 +123,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) {
Zbigniew Jędrzejewski-Szmek 126222
 #endif
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_listen_fds(unset);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return long_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -151,7 +151,7 @@ static PyObject* is_fifo(PyObject *self, PyObject *args) {
Zbigniew Jędrzejewski-Szmek 126222
 #endif
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_is_fifo(fd, path);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, path, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, path, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -179,7 +179,7 @@ static PyObject* is_mq(PyObject *self, PyObject *args) {
Zbigniew Jędrzejewski-Szmek 126222
 #endif
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_is_mq(fd, path);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, path, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, path, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -203,7 +203,7 @@ static PyObject* is_socket(PyObject *self, PyObject *args) {
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_is_socket(fd, family, type, listening);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -230,7 +230,7 @@ static PyObject* is_socket_inet(PyObject *self, PyObject *args) {
Zbigniew Jędrzejewski-Szmek 126222
         }
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_is_socket_inet(fd, family, type, listening, (uint16_t) port);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -265,7 +265,7 @@ static PyObject* is_socket_unix(PyObject *self, PyObject *args) {
Zbigniew Jędrzejewski-Szmek 126222
 #endif
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_is_socket_unix(fd, type, listening, path, length);
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, path, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, path, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
                 return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
         return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c
Zbigniew Jędrzejewski-Szmek 126222
index bc5db19..0c88926 100644
Zbigniew Jędrzejewski-Szmek 126222
--- a/src/python-systemd/_reader.c
Zbigniew Jędrzejewski-Szmek 126222
+++ b/src/python-systemd/_reader.c
Zbigniew Jędrzejewski-Szmek 126222
@@ -206,8 +206,7 @@ PyDoc_STRVAR(Reader_reliable_fd__doc__,
Zbigniew Jędrzejewski-Szmek 126222
 static PyObject* Reader_reliable_fd(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
 {
Zbigniew Jędrzejewski-Szmek 126222
     int r = sd_journal_reliable_fd(self->j);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -221,8 +220,7 @@ PyDoc_STRVAR(Reader_get_events__doc__,
Zbigniew Jędrzejewski-Szmek 126222
 static PyObject* Reader_get_events(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
 {
Zbigniew Jędrzejewski-Szmek 126222
     int r = sd_journal_get_events(self->j);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     return long_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -242,8 +240,7 @@ static PyObject* Reader_get_timeout(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     uint64_t t;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_timeout(self->j, &t);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     if (t == (uint64_t) -1)
Zbigniew Jędrzejewski-Szmek 126222
@@ -265,8 +262,7 @@ static PyObject* Reader_get_timeout_ms(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     uint64_t t;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_timeout(self->j, &t);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     return absolute_timeout(t);
Zbigniew Jędrzejewski-Szmek 126222
@@ -304,7 +300,7 @@ static PyObject* Reader_get_usage(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     uint64_t bytes;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_usage(self->j, &bytes);
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     assert_cc(sizeof(unsigned long long) == sizeof(bytes));
Zbigniew Jędrzejewski-Szmek 126222
@@ -366,8 +362,7 @@ static PyObject* Reader_next(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
         assert_not_reached("should not be here");
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -445,7 +440,8 @@ static PyObject* Reader_get(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     if (r == -ENOENT) {
Zbigniew Jędrzejewski-Szmek 126222
         PyErr_SetString(PyExc_KeyError, field);
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
-    } else if (set_error(r, NULL, "field name is not valid"))
Zbigniew Jędrzejewski-Szmek 126222
+    }
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, "field name is not valid") < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = extract(msg, msg_len, NULL, &value);
Zbigniew Jędrzejewski-Szmek 126222
@@ -530,7 +526,7 @@ static PyObject* Reader_get_realtime(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     assert(!args);
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_realtime_usec(self->j, &timestamp);
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     assert_cc(sizeof(unsigned long long) == sizeof(timestamp));
Zbigniew Jędrzejewski-Szmek 126222
@@ -555,7 +551,7 @@ static PyObject* Reader_get_monotonic(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     assert(!args);
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_monotonic_usec(self->j, &timestamp, &id;;
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     assert_cc(sizeof(unsigned long long) == sizeof(timestamp));
Zbigniew Jędrzejewski-Szmek 126222
@@ -598,8 +594,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_add_match(self->j, match, match_len);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, "Invalid match");
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, "Invalid match") < 0)
Zbigniew Jędrzejewski-Szmek 126222
             return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
@@ -616,8 +611,7 @@ static PyObject* Reader_add_disjunction(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
 {
Zbigniew Jędrzejewski-Szmek 126222
     int r;
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_add_disjunction(self->j);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -633,8 +627,7 @@ static PyObject* Reader_add_conjunction(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
 {
Zbigniew Jędrzejewski-Szmek 126222
     int r;
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_add_conjunction(self->j);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -661,7 +654,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_seek_head(self->j);
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -678,7 +671,7 @@ static PyObject* Reader_seek_tail(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_seek_tail(self->j);
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -699,7 +692,7 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_seek_realtime_usec(self->j, timestamp);
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -723,20 +716,20 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     if (bootid) {
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_id128_from_string(bootid, &id;;
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, NULL, "Invalid bootid"))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, NULL, "Invalid bootid") < 0)
Zbigniew Jędrzejewski-Szmek 126222
             return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     } else {
Zbigniew Jędrzejewski-Szmek 126222
         Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
         r = sd_id128_get_boot(&id;;
Zbigniew Jędrzejewski-Szmek 126222
         Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-        if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+        if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
             return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     }
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_seek_monotonic_usec(self->j, id, timestamp);
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
@@ -809,7 +802,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_seek_cursor(self->j, cursor);
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, "Invalid cursor"))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, "Invalid cursor") < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
     Py_RETURN_NONE;
Zbigniew Jędrzejewski-Szmek 126222
 }
Zbigniew Jędrzejewski-Szmek 126222
@@ -828,7 +821,7 @@ static PyObject* Reader_get_cursor(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     assert(!args);
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_cursor(self->j, &cursor);
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     return unicode_FromString(cursor);
Zbigniew Jędrzejewski-Szmek 126222
@@ -851,8 +844,7 @@ static PyObject* Reader_test_cursor(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_test_cursor(self->j, cursor);
Zbigniew Jędrzejewski-Szmek 126222
-    set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
-    if (r < 0)
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     return PyBool_FromLong(r);
Zbigniew Jędrzejewski-Szmek 126222
@@ -876,7 +868,7 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_query_unique(self->j, query);
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, "Invalid field name"))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, "Invalid field name") < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     value_set = PySet_New(0);
Zbigniew Jędrzejewski-Szmek 126222
@@ -930,7 +922,8 @@ static PyObject* Reader_get_catalog(Reader *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
         else
Zbigniew Jędrzejewski-Szmek 126222
             set_error(r, NULL, NULL);
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
-    } else if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    }
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     return unicode_FromString(msg);
Zbigniew Jędrzejewski-Szmek 126222
@@ -955,13 +948,13 @@ static PyObject* get_catalog(PyObject *self, PyObject *args)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_id128_from_string(id_, &id;;
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, "Invalid id128"))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, "Invalid id128") < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     Py_BEGIN_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_catalog_for_message_id(id, &msg;;
Zbigniew Jędrzejewski-Szmek 126222
     Py_END_ALLOW_THREADS
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     return unicode_FromString(msg);
Zbigniew Jędrzejewski-Szmek 126222
@@ -979,7 +972,7 @@ static PyObject* Reader_get_data_threshold(Reader *self, void *closure)
Zbigniew Jędrzejewski-Szmek 126222
     int r;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     r = sd_journal_get_data_threshold(self->j, &cvalue);
Zbigniew Jędrzejewski-Szmek 126222
-    if (set_error(r, NULL, NULL))
Zbigniew Jędrzejewski-Szmek 126222
+    if (set_error(r, NULL, NULL) < 0)
Zbigniew Jędrzejewski-Szmek 126222
         return NULL;
Zbigniew Jędrzejewski-Szmek 126222
 
Zbigniew Jędrzejewski-Szmek 126222
     return long_FromSize_t(cvalue);