From 83991ae2a79c0ff6f8923e8d94a520eb778bc159 Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Fri, 17 May 2019 13:40:01 +0200 Subject: [PATCH] Fixed issue where REHASH caused 100% CPU loop. --- src/api-clicap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/api-clicap.c b/src/api-clicap.c index 76c08ad2d..2cebcb0f2 100644 --- a/src/api-clicap.c +++ b/src/api-clicap.c @@ -132,6 +132,7 @@ long clicap_allocate_cap(void) ClientCapability *ClientCapabilityAdd(Module *module, ClientCapabilityInfo *clicap_request, long *cap) { ClientCapability *clicap; + int exists = 0; if (cap) *cap = 0; /* Initialize early */ @@ -139,6 +140,7 @@ ClientCapability *ClientCapabilityAdd(Module *module, ClientCapabilityInfo *clic clicap = ClientCapabilityFindReal(clicap_request->name); if (clicap) { + exists = 1; if (clicap->unloaded) { clicap->unloaded = 0; @@ -177,7 +179,8 @@ ClientCapability *ClientCapabilityAdd(Module *module, ClientCapabilityInfo *clic clicap->visible = clicap_request->visible; clicap->parameter = clicap_request->parameter; - AddListItem(clicap, clicaps); + if (!exists) + AddListItem(clicap, clicaps); if (clicap->cap && !cap) abort(); /* module API call error */