The check for len < 0 here always returned true since len is uint64_t.
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
uint64_t len = seg_left;
bufferptr p(len);
cerr << "reading " << len << " bytes at offset " << file_pos << std::endl;
- len = pread(fd, p.c_str(), len, file_pos);
- if (len < 0) {
+ ssize_t ret = pread(fd, p.c_str(), len, file_pos);
+ if (ret < 0) {
r = -errno;
cerr << "error reading file\n" << std::endl;
goto done;
- }
+ } else {
+ len = ret;
+ }
bufferlist bl;
bl.append(p);
string oid = get_block_oid(&header, i);