diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-02-20 23:58:48 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-02-20 23:58:48 +0000 |
commit | 3b58f9929f947f2c21a6bfe439d9b0819a9900fe (patch) | |
tree | 50bf59aefc0101d0e8773ddbefea8f3f78acbe1b | |
parent | 304bdfdc6b0840b1eca28fd248e305524273515e (diff) | |
download | tor-3b58f9929f947f2c21a6bfe439d9b0819a9900fe.tar.gz tor-3b58f9929f947f2c21a6bfe439d9b0819a9900fe.zip |
r18283@catbus: nickm | 2008-02-20 18:58:31 -0500
Fix assertion when searching for a string in an empty chunk.
svn:r13634
-rw-r--r-- | src/or/buffers.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/or/buffers.c b/src/or/buffers.c index 1f0d64d4b3..8c5e2efca5 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -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) { |