summaryrefslogtreecommitdiffstatshomepage
path: root/closeevent.go
diff options
context:
space:
mode:
authorAlexander Neumann <an2048@googlemail.com>2012-02-24 10:31:17 +0100
committerAlexander Neumann <an2048@googlemail.com>2012-02-24 10:31:17 +0100
commit8cfac4e9697f74dcf093e090eb53d2e418eba9e2 (patch)
tree2702895e9a75e96b1e7e16051bbd2fb1c1654c3c /closeevent.go
parentSome fixes for amd64 - WebView still buggy on amd64 (diff)
downloadwireguard-windows-8cfac4e9697f74dcf093e090eb53d2e418eba9e2.tar.xz
wireguard-windows-8cfac4e9697f74dcf093e090eb53d2e418eba9e2.zip
Fix recently introduced events bug
Diffstat (limited to 'closeevent.go')
-rw-r--r--closeevent.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/closeevent.go b/closeevent.go
index 34843b57..885dd2f4 100644
--- a/closeevent.go
+++ b/closeevent.go
@@ -11,12 +11,19 @@ type CloseEvent struct {
}
func (e *CloseEvent) Attach(handler CloseEventHandler) int {
+ for i, h := range e.handlers {
+ if h == nil {
+ e.handlers[i] = handler
+ return i
+ }
+ }
+
e.handlers = append(e.handlers, handler)
return len(e.handlers) - 1
}
func (e *CloseEvent) Detach(handle int) {
- e.handlers = append(e.handlers[:handle], e.handlers[handle+1:]...)
+ e.handlers[handle] = nil
}
type CloseEventPublisher struct {
@@ -29,6 +36,8 @@ func (p *CloseEventPublisher) Event() *CloseEvent {
func (p *CloseEventPublisher) Publish(canceled *bool, reason CloseReason) {
for _, handler := range p.event.handlers {
- handler(canceled, reason)
+ if handler != nil {
+ handler(canceled, reason)
+ }
}
}