Fix reading odd number of bytes

Trying to read odd number of bytes now raises an exception. Also reading
zero bytes immediatelly returns.