libflac.go: Fix data race in ptr map

This commit is contained in:
Will Newton 2016-05-20 09:19:59 +01:00
parent 49d771bab6
commit 8a4f0c04fe

View file

@ -91,20 +91,20 @@ type decoderPtrMap struct {
ptrs map[uintptr]*Decoder
}
func (m decoderPtrMap) get(d *C.FLAC__StreamDecoder) *Decoder {
func (m *decoderPtrMap) get(d *C.FLAC__StreamDecoder) *Decoder {
ptr := uintptr(unsafe.Pointer(d))
m.RLock()
defer m.RUnlock()
return m.ptrs[ptr]
}
func (m decoderPtrMap) add(d *Decoder) {
func (m *decoderPtrMap) add(d *Decoder) {
m.Lock()
defer m.Unlock()
m.ptrs[uintptr(unsafe.Pointer(d.d))] = d
}
func (m decoderPtrMap) del(d *Decoder) {
func (m *decoderPtrMap) del(d *Decoder) {
m.Lock()
defer m.Unlock()
delete(m.ptrs, uintptr(unsafe.Pointer(d.d)))