diff --git a/draw.go b/draw.go index 5468b19..bc1971e 100644 --- a/draw.go +++ b/draw.go @@ -4,12 +4,13 @@ package ui // #include // #include "ui.h" +// // TODO figure this one out +// extern void *uimalloc(size_t); // static uiDrawBrush *newBrush(void) // { // uiDrawBrush *b; // -// b = (uiDrawBrush *) malloc(sizeof (uiDrawBrush)); -// // TODO +// b = (uiDrawBrush *) uimalloc(sizeof (uiDrawBrush)); // return b; // } // static uiDrawBrushGradientStop *newStops(size_t n) diff --git a/util.go b/util.go index cfcb677..2f181c4 100644 --- a/util.go +++ b/util.go @@ -7,8 +7,22 @@ import ( ) // #include +// // TODO remove when switching to Go 1.7 +// #include import "C" +// TODO move this to C.CBytes() when switching to Go 1.7 + +//export uimalloc +func uimalloc(n C.size_t) unsafe.Pointer { + p := C.malloc(n) + if p == nil { + panic("out of memory in uimalloc()") + } + C.memset(p, 0, n) + return p +} + func freestr(str *C.char) { C.free(unsafe.Pointer(str)) }