InputStream: make offset_type unsigned
This commit is contained in:
@@ -116,9 +116,6 @@ AsyncInputStream::Seek(offset_type new_offset, Error &error)
|
||||
if (!IsSeekable())
|
||||
return false;
|
||||
|
||||
if (new_offset < 0)
|
||||
return false;
|
||||
|
||||
/* check if we can fast-forward the buffer */
|
||||
|
||||
while (new_offset > offset) {
|
||||
|
@@ -35,7 +35,7 @@ struct Tag;
|
||||
|
||||
class InputStream {
|
||||
public:
|
||||
typedef int64_t offset_type;
|
||||
typedef uint64_t offset_type;
|
||||
|
||||
private:
|
||||
/**
|
||||
@@ -236,8 +236,6 @@ public:
|
||||
|
||||
void AddOffset(offset_type delta) {
|
||||
assert(ready);
|
||||
assert(offset >= 0);
|
||||
assert(delta >= 0);
|
||||
|
||||
offset += delta;
|
||||
}
|
||||
@@ -253,7 +251,6 @@ public:
|
||||
offset_type GetRest() const {
|
||||
assert(ready);
|
||||
assert(KnownSize());
|
||||
assert(offset >= 0);
|
||||
|
||||
return size - offset;
|
||||
}
|
||||
|
@@ -274,7 +274,7 @@ input_cdio_open(const char *uri,
|
||||
bool
|
||||
CdioParanoiaInputStream::Seek(offset_type new_offset, Error &error)
|
||||
{
|
||||
if (new_offset < 0 || new_offset > size) {
|
||||
if (new_offset > size) {
|
||||
error.Format(cdio_domain, "Invalid offset to seek %ld (%ld)",
|
||||
(long int)new_offset, (long int)size);
|
||||
return false;
|
||||
|
@@ -101,13 +101,13 @@ input_file_open(const char *filename,
|
||||
bool
|
||||
FileInputStream::Seek(offset_type new_offset, Error &error)
|
||||
{
|
||||
new_offset = (offset_type)lseek(fd, (off_t)new_offset, SEEK_SET);
|
||||
if (new_offset < 0) {
|
||||
auto result = lseek(fd, (off_t)new_offset, SEEK_SET);
|
||||
if (result < 0) {
|
||||
error.SetErrno("Failed to seek");
|
||||
return false;
|
||||
}
|
||||
|
||||
offset = new_offset;
|
||||
offset = (offset_type)result;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user