summaryrefslogtreecommitdiff
path: root/net-libs/ldns/files/ldns-1.8.3-swig-4.2.0.patch
blob: 8165371d53bb7ab33caaa6999d0dad4a76c7c0df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
https://bugs.gentoo.org/921302
https://github.com/NLnetLabs/ldns/pull/232
https://github.com/NLnetLabs/ldns/pull/233

From daf38095763f758c77be538da25c267dc5cb73c8 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Fri, 26 Jan 2024 11:30:39 +0100
Subject: [PATCH] SWIG_Python_str_AsChar removal in SWIG 4.2.0

The replacement, SWIG_PyUnicode_AsUTF8AndSize, has different
memory management requirements.
---
 contrib/python/ldns_rdf.i | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/contrib/python/ldns_rdf.i b/contrib/python/ldns_rdf.i
index 5d7448fd..60daf1a7 100644
--- a/contrib/python/ldns_rdf.i
+++ b/contrib/python/ldns_rdf.i
@@ -56,7 +56,11 @@
  */
 %typemap(arginit, noblock=1) const ldns_rdf *
 {
+#if SWIG_VERSION >= 0x040200
+  PyObject *$1_bytes = NULL;
+#else
   char *$1_str = NULL;
+#endif
 }
 
 /*
@@ -66,11 +70,17 @@
 %typemap(in, noblock=1) const ldns_rdf * (void* argp, $1_ltype tmp = 0, int res)
 {
   if (Python_str_Check($input)) {
+    const char *argstr;
+#if SWIG_VERSION >= 0x040200
+    argstr = SWIG_PyUnicode_AsUTF8AndSize($input, NULL, &$1_bytes);
+#else
     $1_str = SWIG_Python_str_AsChar($input);
-    if ($1_str == NULL) {
+    argstr = $1_str;
+#endif
+    if (argstr == NULL) {
       %argument_fail(SWIG_TypeError, "char *", $symname, $argnum);
     }
-    tmp = ldns_dname_new_frm_str($1_str);
+    tmp = ldns_dname_new_frm_str(argstr);
     if (tmp == NULL) {
       %argument_fail(SWIG_TypeError, "char *", $symname, $argnum);
     }
@@ -90,10 +100,17 @@
  */
 %typemap(freearg, noblock=1) const ldns_rdf *
 {
+#if SWIG_VERSION >= 0x040200
+  if ($1_bytes != NULL) {
+    /* Is not NULL only when a conversion form string occurred. */
+    Py_XDECREF($1_bytes);
+  }
+#else
   if ($1_str != NULL) {
     /* Is not NULL only when a conversion form string occurred. */
     SWIG_Python_str_DelForPy3($1_str); /* Is a empty macro for Python < 3. */
   }
+#endif
 }
 
 %nodefaultctor ldns_struct_rdf; /* No default constructor. */

From f91f61e10be595a6a46845112aaed7da24551bf9 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Fri, 26 Jan 2024 11:57:03 +0100
Subject: [PATCH] 32-bit compatibility for Python SWIG bindings

The ssize_t type can be int instead of long, and the pointer
types are incompatible.
---
 contrib/python/ldns.i | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/contrib/python/ldns.i b/contrib/python/ldns.i
index 881ba5e85..b4a740820 100644
--- a/contrib/python/ldns.i
+++ b/contrib/python/ldns.i
@@ -99,12 +99,14 @@
 %typemap(in, noblock=1) (ssize_t)
 {
   int $1_res = 0;
-  $1_res = SWIG_AsVal_long($input, &$1);
+  long val;
+  $1_res = SWIG_AsVal_long($input, &val);
   if (!SWIG_IsOK($1_res)) {
     SWIG_exception_fail(SWIG_ArgError($1_res), "in method '"
       "$symname" "', argument " "$argnum" " of type '"
       "$type""'");
   }
+  $1 = val;
 }