Skip to content

Commit 71df1cb

Browse files
QuLogicaykevl
authored andcommitted
Fix message disposal
According to LLVM docs, these should be freed using their own function, not `free`.
1 parent 4ed6519 commit 71df1cb

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

ir.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ func (m Module) Dump() {
500500

501501
func (m Module) String() string {
502502
cir := C.LLVMPrintModuleToString(m.C)
503-
defer C.free(unsafe.Pointer(cir))
503+
defer C.LLVMDisposeMessage(cir)
504504
ir := C.GoString(cir)
505505
return ir
506506
}

irreader.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
package llvm
1414

1515
/*
16+
#include "llvm-c/Core.h"
1617
#include "llvm-c/IRReader.h"
1718
#include <stdlib.h>
1819
*/
1920
import "C"
2021

2122
import (
2223
"errors"
23-
"unsafe"
2424
)
2525

2626
// ParseIR parses the textual IR given in the memory buffer and returns a new
@@ -30,7 +30,7 @@ func (c *Context) ParseIR(buf MemoryBuffer) (Module, error) {
3030
var errmsg *C.char
3131
if C.LLVMParseIRInContext(c.C, buf.C, &m.C, &errmsg) != 0 {
3232
err := errors.New(C.GoString(errmsg))
33-
C.free(unsafe.Pointer(errmsg))
33+
C.LLVMDisposeMessage(errmsg)
3434
return Module{}, err
3535
}
3636
return m, nil

target.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ package llvm
1919
#include <stdlib.h>
2020
*/
2121
import "C"
22-
import "unsafe"
23-
import "errors"
22+
import (
23+
"errors"
24+
"unsafe"
25+
)
2426

2527
type (
2628
TargetData struct {
@@ -220,7 +222,7 @@ func GetTargetFromTriple(triple string) (t Target, err error) {
220222
fail := C.LLVMGetTargetFromTriple(ctriple, &t.C, &errstr)
221223
if fail != 0 {
222224
err = errors.New(C.GoString(errstr))
223-
C.free(unsafe.Pointer(errstr))
225+
C.LLVMDisposeMessage(errstr)
224226
}
225227
return
226228
}
@@ -264,6 +266,7 @@ func (tm TargetMachine) CreateTargetData() TargetData {
264266
// Triple returns the triple describing the machine (arch-vendor-os).
265267
func (tm TargetMachine) Triple() string {
266268
cstr := C.LLVMGetTargetMachineTriple(tm.C)
269+
defer C.LLVMDisposeMessage(cstr)
267270
return C.GoString(cstr)
268271
}
269272

@@ -290,7 +293,7 @@ func (tm TargetMachine) Dispose() {
290293

291294
func DefaultTargetTriple() (triple string) {
292295
cTriple := C.LLVMGetDefaultTargetTriple()
293-
defer C.free(unsafe.Pointer(cTriple))
296+
defer C.LLVMDisposeMessage(cTriple)
294297
triple = C.GoString(cTriple)
295298
return
296299
}

0 commit comments

Comments
 (0)