From fb4fd9f5bb78ab6e798fd37ec53ec1c517536e01 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 11 Jun 2014 14:38:20 +0200 Subject: [PATCH] Added stream pool shrinking if large parts are unused. --- winpr/libwinpr/utils/collections/StreamPool.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/winpr/libwinpr/utils/collections/StreamPool.c b/winpr/libwinpr/utils/collections/StreamPool.c index 5dd0d852b..c95875fbe 100644 --- a/winpr/libwinpr/utils/collections/StreamPool.c +++ b/winpr/libwinpr/utils/collections/StreamPool.c @@ -182,6 +182,11 @@ void StreamPool_Return(wStreamPool* pool, wStream* s) pool->aCapacity *= 2; pool->aArray = (wStream**) realloc(pool->aArray, sizeof(wStream*) * pool->aCapacity); } + else if ((pool->aSize + 1) * 3 < pool->aCapacity) + { + pool->aCapacity /= 2; + pool->aArray = (wStream**) realloc(pool->aArray, sizeof(wStream*) * pool->aCapacity); + } pool->aArray[(pool->aSize)++] = s; StreamPool_RemoveUsed(pool, s);