Fix memleak in signal package (#1114)

This commit is contained in:
Ivan Daniluk 2018-07-26 13:04:52 +02:00 committed by GitHub
parent f0f1b8d783
commit 60249e4682
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 2 deletions

View File

@ -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);
*/
@ -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