aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2018-12-09 00:40:05 +0100
committerMarius Bakke <mbakke@fastmail.com>2018-12-12 20:49:12 +0100
commit143fc1a591c552b0464674cfebf8de63bdde7461 (patch)
treea953283acbac14df55693011727c43de9b57804c /gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
parent127a14e0a638a264108fdba08e83db27716d66f1 (diff)
downloadguix-143fc1a591c552b0464674cfebf8de63bdde7461.tar
guix-143fc1a591c552b0464674cfebf8de63bdde7461.tar.gz
gnu: poppler: Update to 0.72.0.
* gnu/packages/patches/poppler-CVE-2018-19149.patch: Delete file. * gnu/packages/patches/inkscape-poppler-compat3.patch, gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch, gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch, gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch: New files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/pdf.scm (poppler): Update to 0.72.0. [replacement]: Remove field. (poppler/fixed): Remove variable. * gnu/packages/inkscape.scm (inkscape)[source](patches): Add 'inkscape-poppler-compat{3..5}.patch'. * gnu/packages/tex.scm (texlive-bin)[source](patches): Update 'texlive-poppler-compat.patch'. Add 'texlive-bin-{lua,pdf,xe}tex-poppler-compat.patch'. * gnu/packages/emacs.scm (emacs-pdf-tools)[source](modules, snippet): New fields. * gnu/packages/scribus.scm (scribus)[source](patches): Add upstream patch origins. [source](modules, snippet): New fields. * gnu/packages/libreoffice.scm (libreoffice)[source](patches): Add three upstream origins. [source](snippet, modules): New field.
Diffstat (limited to 'gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch')
-rw-r--r--gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch188
1 files changed, 188 insertions, 0 deletions
diff --git a/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
new file mode 100644
index 0000000000..eba4733f32
--- /dev/null
+++ b/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
@@ -0,0 +1,188 @@
+Fix compatibility with Poppler 0.72.
+
+These files are taken from the upstream "poppler0.72.0.cc" variants and
+diffed against the "newpoppler" files from the 20180414 distribution.
+
+See revision 49336:
+https://tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/
+
+--- a/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc 1970-01-01 01:00:00.000000000 +0100
++++ b/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc 2018-12-09 21:14:58.479732695 +0100
+@@ -22,7 +22,7 @@
+ https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk
+ by Arch Linux. A little modifications are made to avoid a crash for
+ some kind of pdf images, such as figure_missing.pdf in gnuplot.
+-The poppler should be 0.59.0 or newer versions.
++The poppler should be 0.72.0 or newer versions.
+ POPPLER_VERSION should be defined.
+ */
+
+@@ -120,7 +120,7 @@
+
+ static InObj *inObjList;
+ static UsedEncoding *encodingList;
+-static GBool isInit = gFalse;
++static bool isInit = false;
+
+ // --------------------------------------------------------------------
+ // Maintain list of open embedded PDF files
+@@ -317,7 +317,7 @@
+ pdf_puts("<<\n");
+ assert(r->type == objFont); // FontDescriptor is in fd_tree
+ for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
+- key = obj->dictGetKey(i);
++ key = (char *)obj->dictGetKey(i);
+ if (strncmp("FontDescriptor", key, strlen("FontDescriptor")) == 0
+ || strncmp("BaseFont", key, strlen("BaseFont")) == 0
+ || strncmp("Encoding", key, strlen("Encoding")) == 0)
+@@ -427,7 +427,7 @@
+ charset = fontdesc.dictLookup("CharSet");
+ if (!charset.isNull() &&
+ charset.isString() && is_subsetable(fontmap))
+- epdf_mark_glyphs(fd, (char *)charset.getString()->getCString());
++ epdf_mark_glyphs(fd, (char *)charset.getString()->c_str());
+ else
+ embed_whole_font(fd);
+ addFontDesc(fontdescRef.getRef(), fd);
+@@ -454,7 +454,7 @@
+ for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
+ fontRef = obj->dictGetValNF(i);
+ if (fontRef.isRef())
+- copyFont(obj->dictGetKey(i), &fontRef);
++ copyFont((char *)obj->dictGetKey(i), &fontRef);
+ else if (fontRef.isDict()) { // some programs generate pdf with embedded font object
+ copyName((char *)obj->dictGetKey(i));
+ pdf_puts(" ");
+@@ -566,7 +566,7 @@
+ pdf_printf("%s", convertNumToPDF(obj->getNum()));
+ } else if (obj->isString()) {
+ s = (GooString *)obj->getString();
+- p = s->getCString();
++ p = (char *)s->c_str();
+ l = s->getLength();
+ if (strlen(p) == (unsigned int) l) {
+ pdf_puts("(");
+@@ -664,7 +664,7 @@
+ ("PDF inclusion: CID fonts are not supported"
+ " (try to disable font replacement to fix this)");
+ }
+- if ((s = ((Gfx8BitFont *) r->font)->getCharName(i)) != 0)
++ if ((s = (char *)((Gfx8BitFont *) r->font)->getCharName(i)) != 0)
+ glyphNames[i] = s;
+ else
+ glyphNames[i] = notdef;
+@@ -683,7 +683,7 @@
+ }
+
+ // get the pagebox according to the pagebox_spec
+-static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
++static const PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
+ {
+ if (pagebox_spec == pdfboxspecmedia)
+ return page->getMediaBox();
+@@ -715,7 +715,7 @@
+ {
+ PdfDocument *pdf_doc;
+ Page *page;
+- PDFRectangle *pagebox;
++ const PDFRectangle *pagebox;
+ #ifdef POPPLER_VERSION
+ int pdf_major_version_found, pdf_minor_version_found;
+ #else
+@@ -724,8 +724,8 @@
+ // initialize
+ if (!isInit) {
+ globalParams = new GlobalParams();
+- globalParams->setErrQuiet(gFalse);
+- isInit = gTrue;
++ globalParams->setErrQuiet(false);
++ isInit = true;
+ }
+ // open PDF file
+ pdf_doc = find_add_document(image_name);
+@@ -849,7 +849,7 @@
+ pageObj = xref->fetch(pageRef->num, pageRef->gen);
+ pageDict = pageObj.getDict();
+ rotate = page->getRotate();
+- PDFRectangle *pagebox;
++ const PDFRectangle *pagebox;
+ // write the Page header
+ pdf_puts("/Type /XObject\n");
+ pdf_puts("/Subtype /Form\n");
+@@ -977,7 +977,7 @@
+ }
+ l = dic1.getLength();
+ for (i = 0; i < l; i++) {
+- groupDict.dictAdd(copyString(dic1.getKey(i)),
++ groupDict.dictAdd((const char *)copyString(dic1.getKey(i)),
+ dic1.getValNF(i));
+ }
+ // end modification
+@@ -1001,14 +1001,14 @@
+ pdf_puts("/Resources <<\n");
+ for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
+ obj2 = obj1->dictGetVal(i);
+- key = obj1->dictGetKey(i);
++ key = (char *)obj1->dictGetKey(i);
+ if (strcmp("Font", key) == 0)
+ copyFontResources(&obj2);
+ else if (strcmp("ProcSet", key) == 0)
+ copyProcSet(&obj2);
+ else
+- copyOtherResources(&obj2, key);
++ copyOtherResources(&obj2, (char *)key);
+ }
+ pdf_puts(">>\n");
+ }
+
+--- a/texk/web2c/pdftexdir/pdftosrc-newpoppler.cc 1970-01-01 01:00:00.000000000 +0100
++++ b/texk/web2c/pdftexdir/pdftosrc-newpoppler.cc 2018-12-09 21:14:58.479732695 +0100
+@@ -20,7 +20,7 @@
+ /*
+ This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at
+ https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk
+-by Arch Linux. The poppler should be 0.59.0 or newer versions.
++by Arch Linux. The poppler should be 0.72.0 or newer versions.
+ POPPLER_VERSION should be defined.
+ */
+
+@@ -109,7 +109,7 @@
+ fprintf(stderr, "No SourceName found\n");
+ exit(1);
+ }
+- outname = (char *)srcName.getString()->getCString();
++ outname = (char *)srcName.getString()->c_str();
+ // We cannot free srcName, as objname shares its string.
+ // srcName.free();
+ } else if (objnum > 0) {
+@@ -118,7 +118,7 @@
+ fprintf(stderr, "Not a Stream object\n");
+ exit(1);
+ }
+- sprintf(buf, "%s", fileName->getCString());
++ sprintf(buf, "%s", fileName->c_str());
+ if ((p = strrchr(buf, '.')) == 0)
+ p = strchr(buf, 0);
+ if (objgen == 0)
+@@ -128,7 +128,7 @@
+ outname = buf;
+ } else { // objnum < 0 means we are extracting the XRef table
+ extract_xref_table = true;
+- sprintf(buf, "%s", fileName->getCString());
++ sprintf(buf, "%s", fileName->c_str());
+ if ((p = strrchr(buf, '.')) == 0)
+ p = strchr(buf, 0);
+ sprintf(p, ".xref");
+@@ -173,9 +173,9 @@
+
+ // parse the header: object numbers and offsets
+ objStr.streamReset();
+- str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first);
++ str = new EmbedStream(objStr.getStream(), Object(objNull), true, first);
+ lexer = new Lexer(xref, str);
+- parser = new Parser(xref, lexer, gFalse);
++ parser = new Parser(xref, lexer, false);
+ for (n = 0; n < nObjects; ++n) {
+ obj1 = parser->getObj();
+ obj2 = parser->getObj();
+