Browse Source

When removing all bytes from a buffer, reset buf->cur=buf->mem

svn:r4166
Nick Mathewson 20 years ago
parent
commit
d6a6c8785b
2 changed files with 5 additions and 2 deletions
  1. 5 1
      src/or/buffers.c
  2. 0 1
      src/or/or.h

+ 5 - 1
src/or/buffers.c

@@ -267,7 +267,11 @@ buf_shrink(buf_t *buf)
 static INLINE void buf_remove_from_front(buf_t *buf, size_t n) {
   tor_assert(buf->datalen >= n);
   buf->datalen -= n;
-  buf->cur = _wrap_ptr(buf, buf->cur+n);
+  if (buf->datalen) {
+    buf->cur = _wrap_ptr(buf, buf->cur+n);
+  } else {
+    buf->cur = buf->mem;
+  }
   buf_shrink_if_underfull(buf);
   check();
 }

+ 0 - 1
src/or/or.h

@@ -1127,7 +1127,6 @@ void buf_shrink(buf_t *buf);
 
 size_t buf_datalen(const buf_t *buf);
 size_t buf_capacity(const buf_t *buf);
-unsigned int buf_n_times_resized(const buf_t *buf);
 const char *_buf_peek_raw_buffer(const buf_t *buf);
 
 int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof);