yes -- this was wrong on both counts.  It deceptively worked anyway because requiring the extra bytes just meant we would wait for another read before proceeding.  Fixed.