Blob Blame History Raw
From 2f9fdf97082b63fcd0809905d29d0f8a49bb5c43 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@freedesktop.org>
Date: Tue, 20 Jan 2015 11:20:07 +0100
Subject: [PATCH] [Server] Ensure that g_context.watchers has a valid value

Since g_context.watchers is an unsigned integer, we should be careful
not to decrement it below zero. This can happen if the service is
spawned as a result of the following command:
$ gdbus call \
    --session \
    --dest com.intel.dleyna-renderer \
    --object-path /com/intel/dLeynaRenderer \
    --method com.intel.dLeynaRenderer.Manager.Release
---
 libdleyna/renderer/server.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libdleyna/renderer/server.c b/libdleyna/renderer/server.c
index b241a4f..b0af8d1 100644
--- a/libdleyna/renderer/server.c
+++ b/libdleyna/renderer/server.c
@@ -688,7 +688,9 @@ static void prv_remove_client(const gchar *name)
 
 	dlr_upnp_lost_client(g_context.upnp, name);
 
-	g_context.watchers--;
+	if (g_context.watchers > 0)
+		g_context.watchers--;
+
 	if (g_context.watchers == 0)
 		if (!dleyna_settings_is_never_quit(g_context.settings))
 			dleyna_task_processor_set_quitting(g_context.processor);
-- 
2.1.0