From 62c8f204e7ae3bf3ad78d723f0410661325c8ead Mon Sep 17 00:00:00 2001 From: Vadzim Dambrouski Date: Fri, 10 Jun 2016 17:03:53 +0300 Subject: [PATCH] Safer nil pointer handling in stddialogs --- stddialogs.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/stddialogs.go b/stddialogs.go index 7954512..0ff8a01 100644 --- a/stddialogs.go +++ b/stddialogs.go @@ -8,30 +8,34 @@ import "C" // TODO func MsgBoxError(w *Window, title string, description string) { ctitle := C.CString(title) + defer freestr(ctitle) cdescription := C.CString(description) + defer freestr(cdescription) C.uiMsgBoxError(w.w, ctitle, cdescription) - freestr(ctitle) - freestr(cdescription) } func OpenFile(w *Window) string { cname := C.uiOpenFile(w.w) - name := C.GoString(cname) - C.uiFreeText(cname) - return name + if cname == nil { + return "" + } + defer C.uiFreeText(cname) + return C.GoString(cname) } func SaveFile(w *Window) string { cname := C.uiSaveFile(w.w) - name := C.GoString(cname) - C.uiFreeText(cname) - return name + if cname == nil { + return "" + } + defer C.uiFreeText(cname) + return C.GoString(cname) } func MsgBox(w *Window, title string, description string) { ctitle := C.CString(title) + defer freestr(ctitle) cdescription := C.CString(description) + defer freestr(cdescription) C.uiMsgBox(w.w, ctitle, cdescription) - freestr(ctitle) - freestr(cdescription) }