r18283@catbus: nickm | 2008-02-20 18:58:31 -0500

Fix assertion when searching for a string in an empty chunk.


svn:r13634
This commit is contained in:
Nick Mathewson 2008-02-20 23:58:48 +00:00
parent 304bdfdc6b
commit 3b58f9929f

View File

@ -1021,15 +1021,19 @@ buf_find_pos_of_char(char ch, buf_pos_t *out)
int pos;
tor_assert(out);
if (out->chunk) {
if (!(out->pos < (off_t)out->chunk->datalen)) {
log_warn(LD_BUG, "About to assert. %p, %d, %d, %p, %d.",
out, (int)out->pos,
(int)out->chunk_pos, out->chunk,
out->chunk?(int)out->chunk->datalen : (int)-1
);
if (out->chunk->datalen) {
/*XXXX020 remove this once the bug it detects is fixed. */
if (!(out->pos < (off_t)out->chunk->datalen)) {
log_warn(LD_BUG, "About to assert. %p, %d, %d, %p, %d.",
out, (int)out->pos,
(int)out->chunk_pos, out->chunk,
out->chunk?(int)out->chunk->datalen : (int)-1
);
}
tor_assert(out->pos < (off_t)out->chunk->datalen);
} else {
tor_assert(out->pos == 0);
}
tor_assert(out->pos < (off_t)out->chunk->datalen);
}
pos = out->pos;
for (chunk = out->chunk; chunk; chunk = chunk->next) {