X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpdf%2Fxpdf-changes.patch;h=c6c2db060763e8007c653394c86b1d8e91a805dd;hb=70bab22302a67dc820ef021691d1766a30a1aed8;hp=2cd90862005427ac15a0273b3e51f4fb025d36df;hpb=3fe7881245dec2183305329452751ff274387ecc;p=swftools.git diff --git a/lib/pdf/xpdf-changes.patch b/lib/pdf/xpdf-changes.patch index 2cd9086..c6c2db0 100644 --- a/lib/pdf/xpdf-changes.patch +++ b/lib/pdf/xpdf-changes.patch @@ -39,6 +39,24 @@ diff -u -r1.9 -r1.10 } Gfx::Gfx(XRef *xrefA, OutputDev *outA, Dict *resDict, +@@ -3783,6 +3789,7 @@ + pushResources(resDict); + + // save current graphics state ++ GfxState*mystate = state; + saveState(); + + // kill any pre-existing path +@@ -3848,6 +3855,9 @@ + + // restore graphics state + restoreState(); ++ if(state!=mystate) { ++ fprintf(stderr, "Invalid state nesting in PDF file- file broken?\n"); ++ } + + // pop resource stack + popResources(); Index: GfxFont.h =================================================================== RCS file: /home/kramm/cvs/swftools.cache.cvsroot/swftools.cache/pdf2swf/xpdf/GfxFont.h,v @@ -134,6 +152,17 @@ diff -u -r1.10 -r1.12 sizeof(GfxColorComp)); for (i = 0; i <= maxPixel; ++i) { lookup[k][i] = dblToCol(decodeLow[k] + +@@ -3754,7 +3769,10 @@ + } + + void GfxState::setPath(GfxPath *pathA) { ++ if(pathA) { ++ if(path) + delete path; ++ } + path = pathA; + } + Index: GlobalParams.cc =================================================================== RCS file: /home/kramm/cvs/swftools.cache.cvsroot/swftools.cache/pdf2swf/xpdf/GlobalParams.cc,v @@ -172,16 +201,26 @@ diff -u -r1.4 -r1.7 line = 1; while (getLine(buf, sizeof(buf) - 1, f)) { -@@ -659,6 +682,32 @@ - } +@@ -1142,6 +1165,42 @@ + deleteGList(tokens, GString); } ++static char is_absolute(char*filename) ++{ ++ int l = strlen(filename); ++ if(filename[0] == '/' || filename[0] == '\\') ++ return 1; ++ if(l>2 && filename[1]==':' && (filename[2]=='\\' || filename[2]=='/')) ++ return 1; ++ return 0; ++} ++ +static GString* qualify_filename(GString*path, GString*filename) +{ + GString*fullpath = 0; + char*prefix = "/usr/local/share/xpdf/"; + -+ if (filename->getChar(0) != '\\' && filename->getChar(0) != '/') { ++ if (!is_absolute(filename->getCString())) { + /* relative path */ + fullpath = path->copy(); + fullpath->append(filename); @@ -205,15 +244,20 @@ diff -u -r1.4 -r1.7 void GlobalParams::parseNameToUnicode(GList *tokens, GString *fileName, int line) { GString *name; -@@ -673,7 +722,7 @@ +@@ -1156,10 +1215,10 @@ fileName->getCString(), line); return; } - name = (GString *)tokens->get(1); + name = qualify_filename(this->path, (GString *)tokens->get(1)); if (!(f = fopen(name->getCString(), "r"))) { - error(-1, "Couldn't open 'nameToUnicode' file '%s'", - name->getCString()); +- error(-1, "Couldn't open 'nameToUnicode' file '%s'", +- name->getCString()); ++ error(-1, "Couldn't open 'nameToUnicode' file '%s' using path '%s'", ++ name->getCString(), path->getCString()); + return; + } + line2 = 1; @@ -705,10 +754,12 @@ } collection = (GString *)tokens->get(1);