Mercurial > godwindows
changeset 87:4c8683490c14
Fix a memory leak due to the recent DW 3.0 changes...
Also update the Go test programs to function more like the C version.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Fri, 30 Aug 2013 04:17:49 -0500 |
parents | 2237ef63fb69 |
children | c1370f669734 |
files | src/dw/dw.go src/dwootest/dwootest.go src/dwtest/dwtest.go |
diffstat | 3 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dw/dw.go Thu Aug 15 14:08:25 2013 -0500 +++ b/src/dw/dw.go Fri Aug 30 04:17:49 2013 -0500 @@ -4277,7 +4277,9 @@ func Container_query_start(handle HANDLE, flags uint) string { cresult := C.go_container_query_start(handle.GetHandle(), C.ulong(flags)); result := C.GoString(cresult); - /* TODO: Do I need to free this? */ + if((flags & C.DW_CR_RETDATA) == 0) { + C.dw_free(unsafe.Pointer(cresult)); + } return result; } @@ -4290,7 +4292,9 @@ func Container_query_next(handle HANDLE, flags uint) string { cresult := C.go_container_query_next(handle.GetHandle(), C.ulong(flags)); result := C.GoString(cresult); - /* TODO: Do I need to free this? */ + if((flags & C.DW_CR_RETDATA) == 0) { + C.dw_free(unsafe.Pointer(cresult)); + } return result; }
--- a/src/dwootest/dwootest.go Thu Aug 15 14:08:25 2013 -0500 +++ b/src/dwootest/dwootest.go Fri Aug 30 04:17:49 2013 -0500 @@ -909,6 +909,8 @@ message := fmt.Sprintf("DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); container_status.SetText(message); + message = fmt.Sprintf("\r\nDW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x\r\n", + dw.HANDLE_TO_UINTPTR(window), dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); mle_point = container_mle.Import(message, mle_point); str := container.QueryStart(dw.CRA_SELECTED); for len(str) > 0 {
--- a/src/dwtest/dwtest.go Thu Aug 15 14:08:25 2013 -0500 +++ b/src/dwtest/dwtest.go Fri Aug 30 04:17:49 2013 -0500 @@ -677,6 +677,8 @@ message := fmt.Sprintf("DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + message = fmt.Sprintf("\r\nDW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x\r\n", dw.HANDLE_TO_UINTPTR(window), + dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); mle_point = dw.Mle_import(container_mle, message, mle_point); str := dw.Container_query_start(container, dw.CRA_SELECTED); for len(str) > 0 {