queue_putback: fix off-by-one

Fixed wrapping around at the start of the buffer.  We used to skip the
first item, causing the read pointer prematurely put back to the end,
which resulted in a dirty read (and double free) by subsequent
dequeue()s.