summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2021-09-25 20:19:51 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2021-09-25 20:19:51 +0200
commit4075a14715ef1935dd82f49e4d84eea218087dfd (patch)
treed068cd2b96697cf69c1a8dd9fa4abd74671bf4cc
parentbc0d18c1bb6ce205f034161ea7816638b5d7f5b7 (diff)
Clarify return values and fix a minor issue (#271)
Fix: Fl_Image_Reader::seek() would not clear the error flag when reading from memory.
-rw-r--r--src/Fl_Image_Reader.cxx14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Fl_Image_Reader.cxx b/src/Fl_Image_Reader.cxx
index 63cd145fd..b9a242552 100644
--- a/src/Fl_Image_Reader.cxx
+++ b/src/Fl_Image_Reader.cxx
@@ -124,14 +124,15 @@ unsigned int Fl_Image_Reader::read_dword() {
// Move the current read position to a byte offset from the beginning
// of the file or the original start address in memory.
-// This clears the error flag if the position is valid.
+// This method clears the error flag if the position is valid.
+// If reading from memory and (pStart + n) overflows, then the result is undefined.
+
void Fl_Image_Reader::seek(unsigned int n) {
+ pError = 0;
if (pIsFile) {
int ret = fseek(pFile, n , SEEK_SET);
if (ret < 0)
pError = 2; // read / position error
- else
- pError = 0;
return;
} else if (pIsData) {
if (pStart + n <= pEnd)
@@ -144,9 +145,12 @@ void Fl_Image_Reader::seek(unsigned int n) {
pError = 3;
}
-
// Get the current read position as a byte offset from the
-// beginning of the file or the original start address in memory
+// beginning of the file or the original start address in memory.
+// This method does neither affect the error flag nor is it affected
+// by the current error status. If reading from a file, this may
+// return -1 or any error code from ftell().
+
long Fl_Image_Reader::tell() const {
if (pIsFile) {
return ftell(pFile);