Blob Blame History Raw
From b77a77dadfbcbaa0384d1b87728829bd1683937f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Tue, 31 Aug 2021 00:58:25 +0200
Subject: [PATCH] Define PY_SSIZE_T_CLEAN, use ssize_t as the index type (PEP
 353)

Fixes https://github.com/mjschultz/py-radix/issues/54
---
 radix/_radix.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/radix/_radix.c b/radix/_radix.c
index 5a1b88f..287e893 100644
--- a/radix/_radix.c
+++ b/radix/_radix.c
@@ -14,6 +14,7 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
+#define PY_SSIZE_T_CLEAN
 #include "Python.h"
 #include "structmember.h"
 #include "_radix/radix.h"
@@ -256,7 +257,7 @@ Radix_dealloc(RadixObject *self)
 }
 
 static prefix_t
-*args_to_prefix(prefix_t *prefix, char *addr, char *packed, int packlen, long prefixlen)
+*args_to_prefix(prefix_t *prefix, char *addr, char *packed, Py_ssize_t packlen, long prefixlen)
 {
         prefix_t *old_prefix = prefix;
         const char *errmsg;
@@ -352,7 +353,7 @@ Radix_add(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:add", keywords,
             &addr, &prefixlen, &packed, &packlen))
@@ -381,7 +382,7 @@ Radix_delete(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:delete", keywords,
             &addr, &prefixlen, &packed, &packlen))
@@ -424,7 +425,7 @@ Radix_search_exact(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:search_exact", keywords,
             &addr, &prefixlen, &packed, &packlen))
@@ -462,7 +463,7 @@ Radix_search_best(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:search_best", keywords,
             &addr, &prefixlen, &packed, &packlen))
@@ -500,7 +501,7 @@ Radix_search_worst(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:search_worst", keywords,
             &addr, &prefixlen, &packed, &packlen))
@@ -543,7 +544,7 @@ Radix_search_covered(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:search_covered", keywords, &addr, &prefixlen, &packed, &packlen))
                 return NULL;
@@ -576,7 +577,7 @@ Radix_search_covering(RadixObject *self, PyObject *args, PyObject *kw_args)
 
         char *addr = NULL, *packed = NULL;
         long prefixlen = -1;
-        int packlen = -1;
+        Py_ssize_t packlen = -1;
 
         if (!PyArg_ParseTupleAndKeywords(args, kw_args, "|zlz#:search_covering", keywords, &addr, &prefixlen, &packed, &packlen)) {
                 return NULL;