【发布时间】:2016-09-12 04:43:39
【问题描述】:
我尝试使用 kv_t 存储一些数据但没有成功。我还尝试了示例 forum.c 和 kv.c。尝试创建第二个论坛线程时,forum.c 挂起,而 kv.c 崩溃。
当我有 1 个项目添加到 kv 时,kv_do 将成功。添加第二项后,尝试调用 kv_do 将导致无限循环,并且数据似乎也无效。
#include "stdio.h"
int list_threads(kv_item *item, xbuf_t *reply)
{
Thread *thread = (Thread*)item->val;
xbuf_t thread_li;
xbuf_init(&thread_li);
//using sprintf-like formatting
xbuf_xcat(&thread_li,
"<li>"
"<a href='/?forum_simple/act=t/id=%llu'>%s</a> (%lu)"
"</li>",
thread->id, thread->title.ptr, thread->posts.nbr_items
);
char *pos = (char*)xbuf_findstr(reply, "<!--tpl-->");
if (pos) xbuf_insert(reply, pos, thread_li.len, thread_li.ptr);
printf("-----------listing threads------\n");
xbuf_free(&thread_li);
return 1;
}
以上代码来自forum.c。在创建第一个论坛线程后尝试,尝试创建第二个将挂起,因为如果无限调用 list_threads 函数。 ---------列出线程----------- 被无限打印在终端上
【问题讨论】: