Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pdf/xpdf/GnomeVFSStream.cc36
1 files changed, 20 insertions, 16 deletions
diff --git a/pdf/xpdf/GnomeVFSStream.cc b/pdf/xpdf/GnomeVFSStream.cc
index 324e408..4ff30a5 100644
--- a/pdf/xpdf/GnomeVFSStream.cc
+++ b/pdf/xpdf/GnomeVFSStream.cc
@@ -47,9 +47,10 @@ Stream *GnomeVFSStream::makeSubStream(Guint startA, GBool limitedA,
void GnomeVFSStream::reset() {
GnomeVFSFileSize offsetReturn;
- gnome_vfs_tell(handle, &offsetReturn);
- savePos = (Guint)offsetReturn;
- saved = gTrue;
+ if (gnome_vfs_tell(handle, &offsetReturn) == GNOME_VFS_OK) {
+ savePos = (Guint)offsetReturn;
+ saved = gTrue;
+ }
gnome_vfs_seek(handle, GNOME_VFS_SEEK_START, start);
bufPtr = bufEnd = buf;
bufPos = start;
@@ -83,7 +84,9 @@ GBool GnomeVFSStream::fillBuf() {
} else {
n = gnomeVFSStreamBufSize;
}
- gnome_vfs_read(handle, buf, n, &bytesRead);
+ if (gnome_vfs_read(handle, buf, n, &bytesRead) != GNOME_VFS_OK) {
+ return gFalse;
+ }
bufEnd = buf + bytesRead;
if (bufPtr >= bufEnd) {
return gFalse;
@@ -99,21 +102,22 @@ GBool GnomeVFSStream::fillBuf() {
}
void GnomeVFSStream::setPos(Guint pos, int dir) {
- Guint size;
-
if (dir >= 0) {
- gnome_vfs_seek(handle, GNOME_VFS_SEEK_START, pos);
- bufPos = pos;
+ if (gnome_vfs_seek(handle, GNOME_VFS_SEEK_START, pos) == GNOME_VFS_OK) {
+ bufPos = pos;
+ }
} else {
GnomeVFSFileSize offsetReturn;
- gnome_vfs_seek(handle, GNOME_VFS_SEEK_END, 0);
- gnome_vfs_tell(handle, &offsetReturn);
- size = (Guint)offsetReturn;
- if (pos > size)
- pos = (Guint)size;
- gnome_vfs_seek(handle, GNOME_VFS_SEEK_END, -(int)pos);
- gnome_vfs_tell(handle, &offsetReturn);
- bufPos = (Guint)offsetReturn;
+ if (gnome_vfs_seek(handle, GNOME_VFS_SEEK_END, 0) == GNOME_VFS_OK &&
+ gnome_vfs_tell(handle, &offsetReturn) == GNOME_VFS_OK) {
+ bufPos = (Guint)offsetReturn;
+ if (pos > bufPos)
+ pos = (Guint)bufPos;
+ if (gnome_vfs_seek(handle, GNOME_VFS_SEEK_END, -(int)pos) == GNOME_VFS_OK &&
+ gnome_vfs_tell(handle, &offsetReturn) == GNOME_VFS_OK) {
+ bufPos = (Guint)offsetReturn;
+ }
+ }
}
bufPtr = bufEnd = buf;
}