fix-create-new-cat.diff
author Myhailo Danylenko <isbear@ukrpost.net>
Thu, 09 Aug 2012 00:58:48 +0300
changeset 46 13edc1a9f1e2
parent 43 e0cda680d7a8
permissions -rw-r--r--
Use only message_offline

# HG changeset patch
# Parent 26edaf6ea10b8db2ed07da3e4ad9bee03077de84
Fix endless loop on exhaustion of completion category pool

diff -r 26edaf6ea10b mcabber/mcabber/compl.c
--- a/mcabber/mcabber/compl.c	Mon Jul 30 22:39:17 2012 +0200
+++ b/mcabber/mcabber/compl.c	Wed Aug 08 12:15:20 2012 +0300
@@ -97,10 +97,11 @@
 // as it is likely to change in future.
 guint compl_new_category(void)
 {
+  const guint maxcat = 8 * sizeof (registered_cats);
   guint i = 0;
-  while ((registered_cats >> i) & 1)
+  while ((registered_cats >> i) & 1 && i < maxcat)
     i++;
-  if (i >= 8 * sizeof (registered_cats))
+  if (i >= maxcat)
     return 0;
   else {
     guint64 id = 1 << i;