--- gdal-1.9.2/frmts/pdf/pdfio.h.orig 2013-09-27 19:25:21.549930220 +0200 +++ gdal-1.9.2/frmts/pdf/pdfio.h 2013-09-27 19:50:28.013200337 +0200 @@ -55,10 +55,11 @@ Guint lengthA, Object *dictA); virtual ~VSIPDFFileStream(); - virtual Stream * makeSubStream(Guint startA, GBool limitedA, - Guint lengthA, Object *dictA); - virtual int getPos(); - virtual Guint getStart(); + virtual BaseStream *copy(); + virtual Stream * makeSubStream(Goffset startA, GBool limitedA, + Goffset lengthA, Object *dictA); + virtual Goffset getPos(); + virtual Goffset getStart(); virtual StreamKind getKind(); virtual GooString *getFileName(); @@ -69,8 +70,8 @@ virtual void reset(); virtual void unfilteredReset (); virtual void close(); - virtual void setPos(Guint pos, int dir = 0); - virtual void moveStart(int delta); + virtual void setPos(Goffset pos, int dir = 0); + virtual void moveStart(Goffset delta); private: VSIPDFFileStream *poParent; --- gdal-1.9.2/configure.in.orig 2013-09-27 19:03:37.856651598 +0200 +++ gdal-1.9.2/configure.in 2013-09-27 19:24:36.179932130 +0200 @@ -3000,10 +3000,10 @@ echo 'public:' >> testpoppler.cpp echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp echo ' ~TestStream() {}' >> testpoppler.cpp - echo ' virtual Stream *makeSubStream(Guint start, GBool limited, Guint length, Object *dict) { return 0; }' >> testpoppler.cpp - echo ' virtual void setPos(Guint pos, int dir = 0) { }' >> testpoppler.cpp - echo ' virtual Guint getStart() { return 0; }' >> testpoppler.cpp - echo ' virtual void moveStart(int delta) { }' >> testpoppler.cpp + echo ' virtual Stream *makeSubStream(Goffset start, GBool limited, Goffset length, Object *dict) { return 0; }' >> testpoppler.cpp + echo ' virtual void setPos(Goffset pos, int dir = 0) { }' >> testpoppler.cpp + echo ' virtual Goffset getStart() { return 0; }' >> testpoppler.cpp + echo ' virtual void moveStart(Goffset delta) { }' >> testpoppler.cpp echo '};' >> testpoppler.cpp echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp if test -z "`${CXX} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then --- gdal-1.9.2/frmts/pdf/pdfdataset.cpp.orig 2012-10-09 02:58:26.000000000 +0200 +++ gdal-1.9.2/frmts/pdf/pdfdataset.cpp 2013-09-27 19:40:31.413225370 +0200 @@ -522,12 +522,12 @@ #ifdef USE_POPPLER #ifdef POPPLER_0_20_OR_LATER -static void PDFDatasetErrorFunction(void* userData, ErrorCategory eErrCatagory, int nPos, char *pszMsg) +static void PDFDatasetErrorFunction(void* userData, ErrorCategory eErrCatagory, Goffset nPos, char *pszMsg) { CPLString osError; if (nPos >= 0) - osError.Printf("Pos = %d, ", nPos); + osError.Printf("Pos = %lld, ", (long long)nPos); osError += pszMsg; if (strcmp(osError.c_str(), "Incorrect password") == 0) --- gdal-1.9.2/frmts/pdf/pdfio.cpp.orig 2012-10-09 02:58:26.000000000 +0200 +++ gdal-1.9.2/frmts/pdf/pdfio.cpp 2013-09-27 20:31:25.879764002 +0200 @@ -102,12 +102,17 @@ } } +BaseStream *VSIPDFFileStream::copy() +{ + return new VSIPDFFileStream(*this); +} + /************************************************************************/ /* makeSubStream() */ /************************************************************************/ -Stream *VSIPDFFileStream::makeSubStream(Guint startA, GBool limitedA, - Guint lengthA, Object *dictA) +Stream *VSIPDFFileStream::makeSubStream(Goffset startA, GBool limitedA, + Goffset lengthA, Object *dictA) { return new VSIPDFFileStream(this, startA, limitedA, @@ -118,7 +123,7 @@ /* getPos() */ /************************************************************************/ -int VSIPDFFileStream::getPos() +Goffset VSIPDFFileStream::getPos() { return nCurrentPos; } @@ -127,7 +132,7 @@ /* getStart() */ /************************************************************************/ -Guint VSIPDFFileStream::getStart() +Goffset VSIPDFFileStream::getStart() { return nStart; } @@ -273,7 +278,7 @@ /* setPos() */ /************************************************************************/ -void VSIPDFFileStream::setPos(Guint pos, int dir) +void VSIPDFFileStream::setPos(Goffset pos, int dir) { if (dir >= 0) { @@ -301,7 +306,7 @@ /* moveStart() */ /************************************************************************/ -void VSIPDFFileStream::moveStart(int delta) +void VSIPDFFileStream::moveStart(Goffset delta) { nStart += delta; VSIFSeekL(f, nCurrentPos = nStart, SEEK_SET);