added overflow check for data.Reader.Read()