diff --git a/fix.txt b/fix.txt index 4abaf26..d7205ba 100644 --- a/fix.txt +++ b/fix.txt @@ -149,13 +149,13 @@ Priority 1: transport, lifecycle, and correctness Priority 2: protocol and data correctness ------------------------------------------ -18. UserStats FromServer fields are copied from FromClient +[x] 18. UserStats FromServer fields are copied from FromClient File: gumble/gumble/handlers.go In handleUserStats, FromServer.Good is correct but Late/Lost/Resync read packet.FromClient. Use packet.FromServer for all four fields and add a regression test with differing values. -19. Full channel link updates leave stale reverse links +[x] 19. Full channel link updates leave stale reverse links File: gumble/gumble/handlers.go A ChannelState Links replacement assigns a new channel.Links map but does not remove channel from the Links maps of old peers. Remove reciprocal old diff --git a/gumble/go-openal/openal/buffer.go b/gumble/go-openal/openal/buffer.go index d4f7a1c..39ca253 100644 --- a/gumble/go-openal/openal/buffer.go +++ b/gumble/go-openal/openal/buffer.go @@ -29,6 +29,9 @@ type Buffers []Buffer // NewBuffers() creates n fresh buffers. // Renamed, was GenBuffers. func NewBuffers(n int) (buffers Buffers) { + if n <= 0 { + return Buffers{} + } buffers = make(Buffers, n) C.walGenBuffers(C.ALsizei(n), unsafe.Pointer(&buffers[0])) return @@ -36,8 +39,10 @@ func NewBuffers(n int) (buffers Buffers) { // Delete() deletes the given buffers. func (self Buffers) Delete() { - n := len(self) - C.walDeleteBuffers(C.ALsizei(n), unsafe.Pointer(&self[0])) + if len(self) == 0 { + return + } + C.walDeleteBuffers(C.ALsizei(len(self)), unsafe.Pointer(&self[0])) } // Renamed, was Bufferf. @@ -179,7 +184,7 @@ func NewBuffer() Buffer { // Delete() deletes a single buffer. // Convenience function, see DeleteBuffers(). func (self Buffer) Delete() { - C.walDeleteSource(C.ALuint(self)) + C.walDeleteBuffer(C.ALuint(self)) } // GetFrequency() returns the frequency, in Hz, of the buffer's sample data.