diff --git a/libmxclient/mxclientlib.go b/libmxclient/mxclientlib.go index 436fa81..004e1f3 100644 --- a/libmxclient/mxclientlib.go +++ b/libmxclient/mxclientlib.go @@ -5,10 +5,19 @@ package main import ( "fmt" "mxclientlib/mxclient" + "unsafe" ) +/* +#include +*/ import "C" +//export FreeCString +func FreeCString(s *C.char) { + C.free(unsafe.Pointer(s)) +} + /* cli tools */ diff --git a/pygomx/build_ffi.py b/pygomx/build_ffi.py index bba549d..64feb06 100644 --- a/pygomx/build_ffi.py +++ b/pygomx/build_ffi.py @@ -13,6 +13,7 @@ ffibuilder.set_source( ffibuilder.cdef( csource=""" + extern void FreeCString(char * s); extern char* cli_discoverhs(char* mxid); extern char* cli_mkmxtoken(char* mxid, char* pw); extern char* cli_whoami(char* hs, char* accessToken); diff --git a/smal/src/pymxutils/mxutils/accountinfo.py b/smal/src/pymxutils/mxutils/accountinfo.py index a492b1e..fa08f3d 100644 --- a/smal/src/pymxutils/mxutils/accountinfo.py +++ b/smal/src/pymxutils/mxutils/accountinfo.py @@ -12,4 +12,5 @@ def accountinfo(): r = lib.cli_accountinfo(url, tk) result = ffi.string(r) + lib.FreeCString(r) print(result) diff --git a/smal/src/pymxutils/mxutils/clearaccount.py b/smal/src/pymxutils/mxutils/clearaccount.py index 8d494f1..d8cf003 100644 --- a/smal/src/pymxutils/mxutils/clearaccount.py +++ b/smal/src/pymxutils/mxutils/clearaccount.py @@ -12,4 +12,5 @@ def clearaccount(): r = lib.cli_clearaccount(url, tk) result = ffi.string(r) + lib.FreeCString(r) print(result) diff --git a/smal/src/pymxutils/mxutils/discoverhs.py b/smal/src/pymxutils/mxutils/discoverhs.py index 547232e..9da3dd7 100644 --- a/smal/src/pymxutils/mxutils/discoverhs.py +++ b/smal/src/pymxutils/mxutils/discoverhs.py @@ -13,4 +13,5 @@ def discoverhs(): r = lib.cli_discoverhs(mxid) result = ffi.string(r) + lib.FreeCString(r) print(result) diff --git a/smal/src/pymxutils/mxutils/mktoken.py b/smal/src/pymxutils/mxutils/mktoken.py index 38fdc58..27b0d7d 100644 --- a/smal/src/pymxutils/mxutils/mktoken.py +++ b/smal/src/pymxutils/mxutils/mktoken.py @@ -12,4 +12,5 @@ def mktoken(): r = lib.cli_mkmxtoken(mxid, pw) result = ffi.string(r) + lib.FreeCString(r) print(result) diff --git a/smal/src/pymxutils/mxutils/serverinfo.py b/smal/src/pymxutils/mxutils/serverinfo.py index f72807f..7a64535 100644 --- a/smal/src/pymxutils/mxutils/serverinfo.py +++ b/smal/src/pymxutils/mxutils/serverinfo.py @@ -11,4 +11,5 @@ def serverinfo(): r = lib.cli_serverinfo(mxdomain) result = ffi.string(r) + lib.FreeCString(r) print(result) diff --git a/smal/src/pymxutils/mxutils/whoami.py b/smal/src/pymxutils/mxutils/whoami.py index e41241d..7863cb5 100644 --- a/smal/src/pymxutils/mxutils/whoami.py +++ b/smal/src/pymxutils/mxutils/whoami.py @@ -12,4 +12,5 @@ def whoami(): r = lib.cli_whoami(url, tk) result = ffi.string(r) + lib.FreeCString(r) print(result)