diff --git a/src/ring.rs b/src/ring.rs
index 89e79408cdbab4db5ee6b4aba59b799b07e23f05..fe29db49a38f5a0431bbed5c1b1cada89019953b 100644
--- a/src/ring.rs
+++ b/src/ring.rs
@@ -60,6 +60,9 @@ impl RingBuf {
     }
 
     fn advance_reader(&mut self, mut cnt: usize) {
+        if self.cap == 0 {
+            return;
+        }
         cnt = cmp::min(cnt, self.read_remaining());
 
         self.pos += cnt;
@@ -162,6 +165,9 @@ impl MutBuf for RingBuf {
     }
 
     fn mut_bytes(&mut self) -> &mut [u8] {
+        if self.cap == 0 {
+            return self.as_mut_slice();
+        }
         let mut from;
         let mut to;