fixed cmd_unvisited
authorpk910 <philipp@zoelle1.de>
Tue, 8 Nov 2011 14:31:35 +0000 (15:31 +0100)
committerpk910 <philipp@zoelle1.de>
Tue, 8 Nov 2011 14:48:50 +0000 (15:48 +0100)
src/cmd_neonserv_unvisited.c

index bdb9879bff07f48f47c30edbc029736d50267079..3312c5285ad3e079b646d37173ea6e74fa4dfd97 100644 (file)
@@ -43,7 +43,7 @@ CMD_BIND(neonserv_cmd_unvisited) {
     cache->textclient = getTextBot();
     cache->user = user;
     cache->duration = duration;
-    cache->who_count = 0;
+    cache->who_count = 1; /* small fake to prevent the cache to be freed too early */
     cache->matches = 0;
     printf_mysql_query("SELECT `channel_id`, `channel_name`, `channel_nodelete` FROM `bot_channels` LEFT JOIN `channels` ON `chanid` = `channel_id` LEFT JOIN `users` ON `channel_registrator` = `user_id` WHERE `botid` = '%d'", client->botid);
     res = mysql_use();
@@ -51,7 +51,7 @@ CMD_BIND(neonserv_cmd_unvisited) {
         if(!strcmp(row[2], "1")) continue;
         printf_mysql_query("SELECT `chanuser_seen` FROM `chanusers` WHERE `chanuser_cid` = '%s' AND `chanuser_access` >= 300 ORDER BY `chanuser_seen` DESC LIMIT 1", row[0]);
         res2 = mysql_use();
-        row2 = mysql_fetch_row(res);
+        row2 = mysql_fetch_row(res2);
         if(row2 && atol(row2[0]) > (time(0) - duration)) continue;
         channel = getChanByName(row[1]);
         if(channel) {
@@ -63,6 +63,7 @@ CMD_BIND(neonserv_cmd_unvisited) {
             cache->matches++;
         }   
     }
+    cache->who_count--; //see fix on line 46
     if(cache->who_count == 0) {
         neonserv_cmd_unvisited_async2(cache);
     }