[Pidgin] #8706: Crittical error in in circbuffer implementation
Pidgin
trac at pidgin.im
Thu Mar 19 22:01:26 EDT 2009
#8706: Crittical error in in circbuffer implementation
------------------------+---------------------------------------------------
Reporter: ajosea | Owner: datallah
Type: defect | Status: new
Milestone: | Component: libpurple
Version: 2.5.5 | Resolution:
Keywords: circbuffer | Launchpad_bug:
------------------------+---------------------------------------------------
Comment(by tmm1):
{{{
#include <stdlib.h>
#include <stdio.h>
#include <circbuffer.h>
void debug_buf(PurpleCircBuffer *buf) {
printf("{ buffer = %p \"%s\", len = %d, used = %d, inptr = %p \"%s\",
outptr = %p \"%s\" }\n", buf->buffer, buf->buffer, (int)buf->buflen,
(int)buf->bufused, buf->inptr, buf->inptr, buf->outptr, buf->outptr);
}
int main(){
PurpleCircBuffer *buf = purple_circ_buffer_new(5);
debug_buf(buf);
purple_circ_buffer_append(buf, "hello", 5);
debug_buf(buf);
purple_circ_buffer_mark_read(buf, 3);
debug_buf(buf);
purple_circ_buffer_append(buf, "123", 3);
debug_buf(buf);
purple_circ_buffer_append(buf, "45678", 5);
debug_buf(buf);
purple_circ_buffer_destroy(buf);
return 0;
}
}}}
outputs:
{{{
{ buffer = (nil) "(null)", len = 0, used = 0, inptr = (nil) "(null)",
outptr = (nil) "(null)" }
{ buffer = 0x16db050 "hello", len = 5, used = 5, inptr = 0x16db055 "",
outptr = 0x16db050 "hello" }
{ buffer = 0x16db050 "hello", len = 5, used = 2, inptr = 0x16db055 "",
outptr = 0x16db053 "lo" }
{ buffer = 0x16db050 "123lo", len = 5, used = 5, inptr = 0x16db053 "lo",
outptr = 0x16db053 "lo" }
{ buffer = 0x16db050 "12345678", len = 10, used = 10, inptr = 0x16db058
"", outptr = 0x16db053 "45678" }
}}}
and after the patch:
{{{
{ buffer = (nil) "(null)", len = 0, used = 0, inptr = (nil) "(null)",
outptr = (nil) "(null)" }
{ buffer = 0xc26050 "hello", len = 5, used = 5, inptr = 0xc26055 "",
outptr = 0xc26050 "hello" }
{ buffer = 0xc26050 "hello", len = 5, used = 2, inptr = 0xc26055 "",
outptr = 0xc26053 "lo" }
{ buffer = 0xc26050 "123lo", len = 5, used = 5, inptr = 0xc26053 "lo",
outptr = 0xc26053 "lo" }
{ buffer = 0xc26050 "678lo12345", len = 10, used = 10, inptr = 0xc26053
"lo12345", outptr = 0xc26053 "lo12345" }
}}}
--
Ticket URL: <http://developer.pidgin.im/ticket/8706#comment:2>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list