Skip to content

Commit 1518b3f

Browse files
author
Josh Gummersall
committed
Add .Free methods to tables and use
Fixes leaking memory
1 parent 3b4fe61 commit 1518b3f

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

internal/native/diff.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ func Diff(oldbytes, newbytes []byte, patch io.Writer) (err error) {
1717
newptr, newsize := bytesToUint8PtrAndSize(newbytes)
1818

1919
bufferIndex := writers.Add(patch)
20+
defer writers.Free(bufferIndex)
2021

2122
errCode := int(C.bsdiff_cgo(oldptr, oldsize, newptr, newsize, C.int(bufferIndex)))
2223
if errCode != 0 {

internal/native/patch.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ func Patch(oldbytes, newbytes []byte, patch io.Reader) (err error) {
1818
newptr, newsize := bytesToUint8PtrAndSize(newbytes)
1919

2020
bufferIndex := readers.Add(patch)
21+
defer readers.Free(bufferIndex)
2122

2223
errCode := int(C.bspatch_cgo(oldptr, oldsize, newptr, newsize, C.int(bufferIndex)))
2324
if errCode != 0 {

internal/native/table_reader.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,10 @@ func (bt *readerTable) Get(index int) io.Reader {
3535

3636
return bt.table[index]
3737
}
38+
39+
func (bt *readerTable) Free(index int) {
40+
bt.mutex.Lock()
41+
defer bt.mutex.Unlock()
42+
43+
delete(bt.table, index)
44+
}

internal/native/table_writer.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,10 @@ func (bt *writerTable) Get(index int) io.Writer {
3535

3636
return bt.table[index]
3737
}
38+
39+
func (bt *writerTable) Free(index int) {
40+
bt.mutex.Lock()
41+
defer bt.mutex.Unlock()
42+
43+
delete(bt.table, index)
44+
}

0 commit comments

Comments
 (0)