diff --git a/signal/signals.go b/signal/signals.go index a8fdf79b0..14d14afd6 100644 --- a/signal/signals.go +++ b/signal/signals.go @@ -3,6 +3,7 @@ package signal /* #include #include +#include extern bool StatusServiceSignalEvent(const char *jsonEvent); extern void SetEventCallback(void *cb); */ @@ -40,8 +41,12 @@ func send(typ string, event interface{}) { data, err := json.Marshal(&signal) if err != nil { logger.Error("Marshalling signal envelope", "error", err) + return } - C.StatusServiceSignalEvent(C.CString(string(data))) + + str := C.CString(string(data)) + C.StatusServiceSignalEvent(str) + C.free(unsafe.Pointer(str)) } // NodeNotificationHandler defines a handler able to process incoming node events. @@ -83,7 +88,9 @@ func NotifyNode(jsonEvent *C.char) { //export TriggerTestSignal //nolint: golint func TriggerTestSignal() { - C.StatusServiceSignalEvent(C.CString(`{"answer": 42}`)) + str := C.CString(`{"answer": 42}`) + C.StatusServiceSignalEvent(str) + C.free(unsafe.Pointer(str)) } // SetSignalEventCallback set callback