diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-05-12 13:57:58 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-05-12 13:57:58 -0400 |
commit | 5fc08d192005e728668c7ae0aa3ac17b69dc114b (patch) | |
tree | 3a1e362d416f75285b02d3e4d7a61681c26b32bf /src | |
parent | 6feb149db9715498c6cf4803bfb02b5bcdcf2706 (diff) | |
parent | 88d81ead83ded22db7eaf8090edd9ee0937b2dd5 (diff) | |
download | tor-5fc08d192005e728668c7ae0aa3ac17b69dc114b.tar.gz tor-5fc08d192005e728668c7ae0aa3ac17b69dc114b.zip |
Merge 0.2.1 onto the development branch.
Manually resolved conflicts on version number; all else applied cleanly.
Diffstat (limited to 'src')
-rw-r--r-- | src/or/buffers.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/or/buffers.c b/src/or/buffers.c index 00db5d0916..cdab5490d0 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -258,6 +258,7 @@ buf_shrink_freelists(int free_all) int n_to_free = free_all ? freelists[i].cur_length : (freelists[i].lowest_length - slack); int n_to_skip = freelists[i].cur_length - n_to_free; + int orig_n_to_free = n_to_free, n_freed=0; int new_length = n_to_skip; chunk_t **chp = &freelists[i].head; chunk_t *chunk; @@ -276,9 +277,19 @@ buf_shrink_freelists(int free_all) tor_free(chunk); chunk = next; --n_to_free; + ++n_freed; ++freelists[i].n_free; } - tor_assert(!n_to_free); + if (n_to_free) { + log_warn(LD_BUG, "Freelist length for %d-byte chunks may have been " + "messed up somehow.", (int)freelists[i].alloc_size); + log_warn(LD_BUG, "There were %d chunks at the start. I decided to " + "keep %d. I wanted to free %d. I freed %d. I somehow think " + "I have %d left to free.", + freelists[i].cur_length, n_to_skip, orig_n_to_free, + n_freed, n_to_free); + } + // tor_assert(!n_to_free); freelists[i].cur_length = new_length; } freelists[i].lowest_length = freelists[i].cur_length; |