From e6389ff5a169a9653f3a2dfa6d0f789f21a4a453 Mon Sep 17 00:00:00 2001 From: Max Kellermann <max@duempel.org> Date: Thu, 7 Jul 2016 13:52:33 +0200 Subject: [PATCH] client/ClientRead: call Break() before Close() Referencing the attribute "partition" is illegal after Close(), because Close() deletes "this". --- NEWS | 2 +- src/client/ClientRead.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 58edf3f64..bd547f42f 100644 --- a/NEWS +++ b/NEWS @@ -5,7 +5,7 @@ ver 0.19.17 (not yet released) * fix spurious seek error "Failed to allocate silence buffer" * replay gain: fix "replay_gain_handler mixer" setting * DSD: use 0x69 as silence pattern -* fix use-after-free bug on "close" +* fix use-after-free bug on "close" and "kill" ver 0.19.16 (2016/06/13) * faster seeking diff --git a/src/client/ClientRead.cxx b/src/client/ClientRead.cxx index 9cfb1271f..232da8d62 100644 --- a/src/client/ClientRead.cxx +++ b/src/client/ClientRead.cxx @@ -52,8 +52,8 @@ Client::OnSocketInput(void *data, size_t length) break; case CommandResult::KILL: - Close(); partition.instance.event_loop->Break(); + Close(); return InputResult::CLOSED; case CommandResult::FINISH: