From: William S Fulton Date: Sat, 6 Jan 2024 15:02:39 +0000 (+0000) Subject: const ldns_rdf * typemap fixes to support swig-4.2.0 X-Git-Tag: release-1.8.4-rc1~26^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40a946995c0b8e4efebdc51dc88e320ce72b104f;p=thirdparty%2Fldns.git const ldns_rdf * typemap fixes to support swig-4.2.0 SWIG_Python_str_AsChar needs to be replaced by SWIG_PyUnicode_AsUTF8AndSize See https://github.com/swig/swig/commit/f89dd59d4b82ece899087682fdb86e94d2611513 --- diff --git a/contrib/python/ldns_rdf.i b/contrib/python/ldns_rdf.i index 5d7448fd..4924b979 100644 --- a/contrib/python/ldns_rdf.i +++ b/contrib/python/ldns_rdf.i @@ -50,6 +50,7 @@ SWIGTYPE_p_ldns_struct_rdf, SWIG_POINTER_OWN | 0)); } +#if SWIG_VERSION < 0x040200 /* * Automatic conversion of const (ldns_rdf *) parameter from string. * Argument default value. @@ -96,6 +97,51 @@ } } +#else +/* + * Automatic conversion of const (ldns_rdf *) parameter from string. + * Argument default value. + */ +%typemap(arginit, noblock=1) const ldns_rdf * +{ + PyObject *$1_bytes = NULL; +} + +/* + * Automatic conversion of const (ldns_rdf *) parameter from string. + * Preparation of arguments. + */ +%typemap(in, noblock=1) const ldns_rdf * (void* argp, $1_ltype tmp = 0, int res) +{ + if (Python_str_Check($input)) { + const char *$1_str = SWIG_PyUnicode_AsUTF8AndSize($input, NULL, &$1_bytes); + if ($1_str == NULL) { + %argument_fail(SWIG_TypeError, "char *", $symname, $argnum); + } + tmp = ldns_dname_new_frm_str($1_str); + if (tmp == NULL) { + %argument_fail(SWIG_TypeError, "char *", $symname, $argnum); + } + $1 = ($1_ltype) tmp; + } else { + res = SWIG_ConvertPtr($input, &argp, SWIGTYPE_p_ldns_struct_rdf, 0 | 0); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "ldns_rdf const *", $symname, $argnum); + } + $1 = ($1_ltype) argp; + } +} + +/* + * Automatic conversion of const (ldns_rdf *) parameter from string. + * Freeing of allocated memory (it's a no op unless compiling for some older versions of the Python stable ABI). + */ +%typemap(freearg, noblock=1) const ldns_rdf * +{ + Py_XDECREF($1_bytes); +} +#endif + %nodefaultctor ldns_struct_rdf; /* No default constructor. */ %nodefaultdtor ldns_struct_rdf; /* No default destructor. */