summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2018-02-20 07:37:04 +0100
committerArmin Rigo <arigo@tunes.org>2018-02-20 07:37:04 +0100
commitb27eee92a3ec4a44808d428057ba1aceac48c589 (patch)
tree802d792eae45ebeea53c4c40f8ad76ca181899aa
parent37680f9f26579c30a75bee884d764dc3b511d710 (diff)
downloadcffi-b27eee92a3ec4a44808d428057ba1aceac48c589.tar.gz
silence a gcc warning shown in some (recent?) versions of gcc
-rw-r--r--c/_cffi_backend.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/c/_cffi_backend.c b/c/_cffi_backend.c
index 62e320f..ec263ba 100644
--- a/c/_cffi_backend.c
+++ b/c/_cffi_backend.c
@@ -3794,27 +3794,29 @@ static CDataObject *cast_to_integer_or_char(CTypeDescrObject *ct, PyObject *ob)
static int check_bytes_for_float_compatible(PyObject *io, double *out_value)
{
if (PyBytes_Check(io)) {
- if (PyBytes_GET_SIZE(io) != 1) {
- Py_DECREF(io);
- return -1;
- }
+ if (PyBytes_GET_SIZE(io) != 1)
+ goto error;
*out_value = (unsigned char)PyBytes_AS_STRING(io)[0];
return 1;
}
else if (PyUnicode_Check(io)) {
char ignored[80];
cffi_char32_t ordinal;
- if (_my_PyUnicode_AsSingleChar32(io, &ordinal, ignored) < 0) {
- Py_DECREF(io);
- return -1;
- }
+ if (_my_PyUnicode_AsSingleChar32(io, &ordinal, ignored) < 0)
+ goto error;
/* the signness of the 32-bit version of wide chars should not
* matter here, because 'ordinal' comes from a normal Python
* unicode string */
*out_value = ordinal;
return 1;
}
+ *out_value = 0; /* silence a gcc warning if this function is inlined */
return 0;
+
+ error:
+ Py_DECREF(io);
+ *out_value = 0; /* silence a gcc warning if this function is inlined */
+ return -1;
}
static PyObject *do_cast(CTypeDescrObject *ct, PyObject *ob)