zoukankan      html  css  js  c++  java
  • libevent evbuffer bug

    今天发现 libevent 2.0.22 一个坑爹的bug,导致消息混乱。查找问题浪费一天,复现代码如下

    #include <event2/buffer.h>
    #include <stdio.h>
    #include <string.h>
    
    // libevent-2.0.22-stable bug, but libevent 2.0.21 worked well
    int main(int argc, char **argv)
    {
        evbuffer *buf = evbuffer_new();
        evbuffer_expand(buf, 12);
        evbuffer_add(buf, ": first line 
    ", 14);
    
        // force to add a new chain
        evbuffer_expand(buf, 2048);
        // add always add to the last chain, but last_with_datap is not changed accordingly
        evbuffer_add(buf, ": second line 
    ", 15);
    
        //evbuffer_expand(buf, 30);
        // printf try expand buffer and return the first chain, then add to the first chain
        evbuffer_add_printf(buf, ": last line
    ");
    
        fprintf(stdout, "%*s
    ", evbuffer_get_length(buf), evbuffer_pullup(buf, -1));
    
    
        return 0;
    }

    结果在 libevent 2.0.22 输出

    : first line
    : last line
    : second line

    libevent 2.0.21 正常

    : first line
    : second line
    : last line

  • 相关阅读:
    taotao-manager-web/pom.xml
    sublime使用说明
    taotao-manager-web(表现层),初始生成pom报错解决
    通用表空间
    InnoDB存储引擎结构介绍
    关于双主
    半同步复制
    基于gtid的复制
    多源复制和级联复制
    MySQL复制进阶
  • 原文地址:https://www.cnblogs.com/JesseFang/p/5262807.html
Copyright © 2011-2022 走看看