Skip to content

Commit f073bde

Browse files
use custom malloc function to alloc memory for converting go string to c string
1 parent f5f2473 commit f073bde

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

pysrc/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
from . import mixin_api
22
from . import mixin_bot_api
3+
from . import _mixin
4+
35
__VERSION__ = '0.2.4'
46

7+
_mixin.init()
8+
59
default_api = mixin_api.MixinApi()
610

711
def get_mixin_api():

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ add_library(_mixin MODULE
88
if (WIN32)
99
add_compile_definitions(MS_WIN64)
1010
SET(BUILD_TARGET mixin.lib)
11-
SET(BUILD_LIB_CMD go build -o mixin.dll -buildmode=c-shared && cmake -E copy mixin.dll ${CMAKE_CURRENT_SOURCE_DIR}/../pysrc/mixin.dll && gendef mixin.dll && lib /def:mixin.def /machine:x64 /out:mixin.lib && cmake -E copy libmixin.bk.h libmixin.h)
11+
SET(BUILD_LIB_CMD go build -o mixin.dll -buildmode=c-shared && cmake -E copy mixin.dll ${CMAKE_CURRENT_SOURCE_DIR}/../pysrc/mixin.dll && gendef mixin.dll && lib /def:mixin.def /machine:x64 /out:mixin.lib)
1212
else()
1313
SET(BUILD_TARGET libmixin.a)
1414
SET(BUILD_LIB_CMD go build -o ${BUILD_TARGET} -buildmode=c-archive)

src/_mixin.pyx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ cdef extern from "<Python.h>":
1919
object PyBytes_FromStringAndSize(const char* str, int size)
2020
int _PyLong_AsByteArray(PyLongObject* v, unsigned char* bytes, size_t n, int little_endian, int is_signed)
2121

22-
cdef extern from "libmixin.h" nogil:
23-
void Init();
22+
cdef extern from "wrapper.h" nogil:
23+
ctypedef char *(*fn_malloc)(uint64_t size)
24+
void Init(fn_malloc fn)
2425
char* GetMixinVersion()
2526
int MixinMain(char* args)
2627
char* CreateAddress(char* _params);
@@ -63,8 +64,11 @@ def main(_args):
6364
with nogil:
6465
MixinMain(args)
6566

67+
cdef char *user_malloc(uint64_t size):
68+
return <char *>malloc(size)
69+
6670
def init():
67-
Init()
71+
Init(<fn_malloc>user_malloc)
6872

6973
def get_mixin_version():
7074
cdef char* ret

src/mixin

0 commit comments

Comments
 (0)