dev: Fix a bug in the use of seekp/seekg
authorAndreas Hansson <andreas.hansson@arm.com>
Wed, 17 Apr 2013 12:17:03 +0000 (08:17 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Wed, 17 Apr 2013 12:17:03 +0000 (08:17 -0400)
This patch fixes two instances of incorrect use of the seekp/seekg
stream member functions. These two functions return a stream reference
(*this), and should not be compared to an integer value.

src/dev/disk_image.cc

index 84027d9b42e8ceda0b3ca46a413a62c90a9af35a..8194eb507bc948832c41d3381713457aac147735 100644 (file)
@@ -108,7 +108,8 @@ RawDiskImage::read(uint8_t *data, std::streampos offset) const
     if (!stream.is_open())
         panic("file not open!\n");
 
-    if (stream.seekg(offset * SectorSize, ios::beg) < 0)
+    stream.seekg(offset * SectorSize, ios::beg);
+    if (!stream.good())
         panic("Could not seek to location in file");
 
     streampos pos = stream.tellg();
@@ -132,7 +133,8 @@ RawDiskImage::write(const uint8_t *data, std::streampos offset)
     if (!stream.is_open())
         panic("file not open!\n");
 
-    if (stream.seekp(offset * SectorSize, ios::beg) < 0)
+    stream.seekp(offset * SectorSize, ios::beg);
+    if (!stream.good())
         panic("Could not seek to location in file");
 
     DPRINTF(DiskImageWrite, "write: offset=%d\n", (uint64_t)offset);