Do not call tell() in File::eof() - Fix tests & performance

v0.27.3
Luis Diaz Mas 5 years ago
parent 2732c10a86
commit 235087af4e

@ -1022,8 +1022,7 @@ namespace Exiv2 {
bool FileIo::eof() const bool FileIo::eof() const
{ {
assert(p_->fp_ != 0); return std::feof(p_->fp_) != 0;
return feof(p_->fp_) != 0 || tell() >= (long) size() ;
} }
std::string FileIo::path() const std::string FileIo::path() const

@ -13,19 +13,22 @@ class PngReadRawProfile(metaclass=system_tests.CaseMeta):
filenames = [ filenames = [
system_tests.path("$data_path/issue_428_poc1.png"), system_tests.path("$data_path/issue_428_poc1.png"),
system_tests.path("$data_path/issue_428_poc2.png"),
system_tests.path("$data_path/issue_428_poc3.png"), system_tests.path("$data_path/issue_428_poc3.png"),
system_tests.path("$data_path/issue_428_poc4.png"), system_tests.path("$data_path/issue_428_poc4.png"),
system_tests.path("$data_path/issue_428_poc5.png"), system_tests.path("$data_path/issue_428_poc5.png"),
system_tests.path("$data_path/issue_428_poc8.png"), system_tests.path("$data_path/issue_428_poc8.png"),
system_tests.path("$data_path/issue_428_poc2.png"),
system_tests.path("$data_path/issue_428_poc6.png"), system_tests.path("$data_path/issue_428_poc6.png"),
system_tests.path("$data_path/issue_428_poc7.png"), system_tests.path("$data_path/issue_428_poc7.png"),
] ]
commands = ["$exiv2 " + fname for fname in filenames] commands = ["$exiv2 " + fname for fname in filenames]
stdout = [""] * len(filenames) stdout = [""] * len(filenames)
stderr = [ stderr_exception(fname) for fname in filenames[0:6] ] stderr = [ stderr_exception(fname) for fname in filenames[0:5] ]
stderr.append("""$exiv2_exception_message """ + filenames[5] + """:
$kerInputDataReadFailed
""")
stderr.append("""Error: XMP Toolkit error 201: XML parsing failure stderr.append("""Error: XMP Toolkit error 201: XML parsing failure
Warning: Failed to decode XMP metadata. Warning: Failed to decode XMP metadata.
""" + stderr_exception(filenames[6])) """ + stderr_exception(filenames[6]))

@ -22,6 +22,7 @@ taglist: ${ENV:exiv2_path}/taglist${ENV:binary_extension}
[variables] [variables]
kerOffsetOutOfRange: Offset out of range kerOffsetOutOfRange: Offset out of range
kerFailedToReadImageData: Failed to read image data kerFailedToReadImageData: Failed to read image data
kerInputDataReadFailed: Failed to read input data
kerCorruptedMetadata: corrupted image metadata kerCorruptedMetadata: corrupted image metadata
kerInvalidMalloc: invalid memory allocation request kerInvalidMalloc: invalid memory allocation request
kerInvalidTypeValue: invalid type in tiff structure kerInvalidTypeValue: invalid type in tiff structure

@ -33,13 +33,13 @@ TEST(AFileIO, returnsFileSizeIfItsOpened)
{ {
FileIo file(imagePath); FileIo file(imagePath);
file.open(); file.open();
ASSERT_EQ(118685, file.size()); ASSERT_EQ(118685ul, file.size());
} }
TEST(AFileIO, returnsFileSizeEvenWhenFileItIsNotOpened) TEST(AFileIO, returnsFileSizeEvenWhenFileItIsNotOpened)
{ {
FileIo file(imagePath); FileIo file(imagePath);
ASSERT_EQ(118685, file.size()); ASSERT_EQ(118685ul, file.size());
} }
TEST(AFileIO, isOpenedAtPosition0) TEST(AFileIO, isOpenedAtPosition0)

Loading…
Cancel
Save