C - kv_do当kv有多于1项时的无限循环

  • 本文关键字:kv 1项 无限循环 do g-wan
  • 更新时间 :
  • 英文 :


我尝试使用kv_t来存储一些数据,但没有成功。我也试着去了例子论坛。kv.c。当kv.c崩溃时,试图创建第二个论坛线程时,Forum .c挂起。

当我有一个项目添加到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函数被无限调用。---------清单线程-----------在终端上无限地打印

另一个用户最近报告了kv_do的崩溃(参见"最新的" G-WAN问题),这似乎与原子原语的实现有关,而不是与kv代码有关。

一旦问题被隔离,将发布一个解决方案。

相关内容

  • 没有找到相关文章

最新更新