Skip to content

Commit

Permalink
Fix memleak in signal package (#1114)
Browse files Browse the repository at this point in the history
  • Loading branch information
divan authored Jul 26, 2018
1 parent f0f1b8d commit 60249e4
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions signal/signals.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package signal
/*
#include <stddef.h>
#include <stdbool.h>
#include <stdlib.h>
extern bool StatusServiceSignalEvent(const char *jsonEvent);
extern void SetEventCallback(void *cb);
*/
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 60249e4

Please sign in to comment.