143fc1a591
* 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.
318 lines
12 KiB
Diff
318 lines
12 KiB
Diff
Fix LuaTeX compatibility with Poppler 0.72.
|
|
|
|
Upstream LuaTeX have moved from Poppler to "pplib" and thus upstream
|
|
fixes are unavailable. This is based on Arch Linux patches, with minor
|
|
changes for Poppler 0.72:
|
|
https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=f1b424435c8fa31d9296c7a6dc17f939a8332780
|
|
|
|
diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
|
|
--- a/texk/web2c/luatexdir/image/pdftoepdf.w
|
|
+++ b/texk/web2c/luatexdir/image/pdftoepdf.w
|
|
@@ -35,7 +35,7 @@
|
|
|
|
extern void md5(Guchar *msg, int msgLen, Guchar *digest);
|
|
|
|
-static GBool isInit = gFalse;
|
|
+static bool isInit = false;
|
|
|
|
/* Maintain AVL tree of all PDF files for embedding */
|
|
|
|
@@ -363,10 +363,10 @@ void copyReal(PDF pdf, double d)
|
|
|
|
static void copyString(PDF pdf, GooString * string)
|
|
{
|
|
- char *p;
|
|
+ const char *p;
|
|
unsigned char c;
|
|
size_t i, l;
|
|
- p = string->getCString();
|
|
+ p = string->c_str();
|
|
l = (size_t) string->getLength();
|
|
if (pdf->cave)
|
|
pdf_out(pdf, ' ');
|
|
@@ -393,7 +393,7 @@ static void copyString(PDF pdf, GooString * string)
|
|
pdf->cave = true;
|
|
}
|
|
|
|
-static void copyName(PDF pdf, char *s)
|
|
+static void copyName(PDF pdf, const char *s)
|
|
{
|
|
pdf_out(pdf, '/');
|
|
for (; *s != 0; s++) {
|
|
@@ -468,14 +468,14 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj)
|
|
break;
|
|
/*
|
|
case objNum:
|
|
- GBool isNum() { return type == objInt || type == objReal; }
|
|
+ bool isNum() { return type == objInt || type == objReal; }
|
|
break;
|
|
*/
|
|
case objString:
|
|
copyString(pdf, (GooString *)obj->getString());
|
|
break;
|
|
case objName:
|
|
- copyName(pdf, (char *)obj->getName());
|
|
+ copyName(pdf, obj->getName());
|
|
break;
|
|
case objNull:
|
|
pdf_add_null(pdf);
|
|
@@ -531,22 +531,22 @@ static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
|
|
{
|
|
switch (pagebox_spec) {
|
|
case PDF_BOX_SPEC_MEDIA:
|
|
- return page->getMediaBox();
|
|
+ return (PDFRectangle *) page->getMediaBox();
|
|
break;
|
|
case PDF_BOX_SPEC_CROP:
|
|
- return page->getCropBox();
|
|
+ return (PDFRectangle *) page->getCropBox();
|
|
break;
|
|
case PDF_BOX_SPEC_BLEED:
|
|
- return page->getBleedBox();
|
|
+ return (PDFRectangle *) page->getBleedBox();
|
|
break;
|
|
case PDF_BOX_SPEC_TRIM:
|
|
- return page->getTrimBox();
|
|
+ return (PDFRectangle *) page->getTrimBox();
|
|
break;
|
|
case PDF_BOX_SPEC_ART:
|
|
- return page->getArtBox();
|
|
+ return (PDFRectangle *) page->getArtBox();
|
|
break;
|
|
default:
|
|
- return page->getMediaBox();
|
|
+ return (PDFRectangle *) page->getMediaBox();
|
|
break;
|
|
}
|
|
}
|
|
@@ -587,11 +587,11 @@ void read_pdf_info(image_dict * idict)
|
|
PDFRectangle *pagebox;
|
|
int pdf_major_version_found, pdf_minor_version_found;
|
|
float xsize, ysize, xorig, yorig;
|
|
- if (isInit == gFalse) {
|
|
+ if (isInit == false) {
|
|
if (!(globalParams))
|
|
globalParams = new GlobalParams();
|
|
- globalParams->setErrQuiet(gFalse);
|
|
- isInit = gTrue;
|
|
+ globalParams->setErrQuiet(false);
|
|
+ isInit = true;
|
|
}
|
|
if (img_type(idict) == IMG_TYPE_PDF)
|
|
pdf_doc = refPdfDocument(img_filepath(idict), FE_FAIL);
|
|
@@ -966,7 +966,7 @@ void epdf_free()
|
|
if (PdfDocumentTree != NULL)
|
|
avl_destroy(PdfDocumentTree, destroyPdfDocument);
|
|
PdfDocumentTree = NULL;
|
|
- if (isInit == gTrue)
|
|
+ if (isInit == true)
|
|
delete globalParams;
|
|
- isInit = gFalse;
|
|
+ isInit = false;
|
|
}
|
|
diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
|
|
--- a/texk/web2c/luatexdir/lua/lepdflib.cc
|
|
+++ b/texk/web2c/luatexdir/lua/lepdflib.cc
|
|
@@ -240,7 +240,7 @@ static int l_new_Attribute(lua_State * L)
|
|
if (uobj->pd != NULL && uobj->pd->pc != uobj->pc)
|
|
pdfdoc_changed_error(L);
|
|
uout = new_Attribute_userdata(L);
|
|
- uout->d = new Attribute(n, nlen, (Object *)uobj->d);
|
|
+ uout->d = new Attribute((GooString)n, (Object *)uobj->d);
|
|
uout->atype = ALLOC_LEPDF;
|
|
uout->pc = uobj->pc;
|
|
uout->pd = uobj->pd;
|
|
@@ -439,7 +439,7 @@ static int l_new_Object(lua_State * L)
|
|
break;
|
|
case 1:
|
|
if (lua_isboolean (L,1)) {
|
|
- uout->d = new Object(lua_toboolean(L, 1)? gTrue : gFalse);
|
|
+ uout->d = new Object(lua_toboolean(L, 1)? true : false);
|
|
uout->atype = ALLOC_LEPDF;
|
|
uout->pc = 0;
|
|
uout->pd = NULL;
|
|
@@ -596,7 +596,7 @@ static int m_##in##_##function(lua_State * L) \
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc) \
|
|
pdfdoc_changed_error(L); \
|
|
- o = ((in *) uin->d)->function(); \
|
|
+ o = (out *) ((in *) uin->d)->function(); \
|
|
if (o != NULL) { \
|
|
uout = new_##out##_userdata(L); \
|
|
uout->d = o; \
|
|
@@ -676,7 +676,7 @@ static int m_##in##_##function(lua_State * L) \
|
|
pdfdoc_changed_error(L); \
|
|
gs = (GooString *)((in *) uin->d)->function(); \
|
|
if (gs != NULL) \
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength()); \
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength()); \
|
|
else \
|
|
lua_pushnil(L); \
|
|
return 1; \
|
|
@@ -911,7 +911,7 @@ static int m_Array_getString(lua_State * L)
|
|
if (i > 0 && i <= len) {
|
|
gs = new GooString();
|
|
if (((Array *) uin->d)->getString(i - 1, gs))
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength());
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength());
|
|
else
|
|
lua_pushnil(L);
|
|
delete gs;
|
|
@@ -1063,7 +1063,7 @@ static int m_Catalog_getJS(lua_State * L)
|
|
if (i > 0 && i <= len) {
|
|
gs = ((Catalog *) uin->d)->getJS(i - 1);
|
|
if (gs != NULL)
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength());
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength());
|
|
else
|
|
lua_pushnil(L);
|
|
delete gs;
|
|
@@ -1125,12 +1125,12 @@ m_poppler_get_INT(Dict, getLength);
|
|
|
|
static int m_Dict_add(lua_State * L)
|
|
{
|
|
- char *s;
|
|
+ const char *s;
|
|
udstruct *uin, *uobj;
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
- s = copyString(luaL_checkstring(L, 2));
|
|
+ s = luaL_checkstring(L, 2);
|
|
uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
|
|
((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
|
|
return 0;
|
|
@@ -1378,7 +1378,7 @@ static int m_GooString__tostring(lua_State * L)
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_GooString);
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
- lua_pushlstring(L, ((GooString *) uin->d)->getCString(),
|
|
+ lua_pushlstring(L, ((GooString *) uin->d)->c_str(),
|
|
((GooString *) uin->d)->getLength());
|
|
return 1;
|
|
}
|
|
@@ -1527,9 +1527,9 @@ static int m_Object_initBool(lua_State * L)
|
|
pdfdoc_changed_error(L);
|
|
luaL_checktype(L, 2, LUA_TBOOLEAN);
|
|
if (lua_toboolean(L, 2) != 0)
|
|
- *((Object *) uin->d) = Object(gTrue);
|
|
+ *((Object *) uin->d) = Object(true);
|
|
else
|
|
- *((Object *) uin->d) = Object(gFalse);
|
|
+ *((Object *) uin->d) = Object(false);
|
|
return 0;
|
|
}
|
|
|
|
@@ -1814,7 +1814,7 @@ static int m_Object_getString(lua_State * L)
|
|
pdfdoc_changed_error(L);
|
|
if (((Object *) uin->d)->isString()) {
|
|
gs = (GooString *)((Object *) uin->d)->getString();
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength());
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength());
|
|
} else
|
|
lua_pushnil(L);
|
|
return 1;
|
|
@@ -2051,7 +2051,7 @@ static int m_Object_dictAdd(lua_State * L)
|
|
pdfdoc_changed_error(L);
|
|
if (!((Object *) uin->d)->isDict())
|
|
luaL_error(L, "Object is not a Dict");
|
|
- ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d)));
|
|
+ ((Object *) uin->d)->dictAdd(s, std::move(*((Object *) uobj->d)));
|
|
return 0;
|
|
}
|
|
|
|
@@ -2470,9 +2470,9 @@ static int m_PDFDoc_getFileName(lua_State * L)
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
- gs = ((PdfDocument *) uin->d)->doc->getFileName();
|
|
+ gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName();
|
|
if (gs != NULL)
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength());
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength());
|
|
else
|
|
lua_pushnil(L);
|
|
return 1;
|
|
@@ -2559,9 +2559,9 @@ static int m_PDFDoc_readMetadata(lua_State * L)
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
|
|
- gs = ((PdfDocument *) uin->d)->doc->readMetadata();
|
|
+ gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata();
|
|
if (gs != NULL)
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength());
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength());
|
|
else
|
|
lua_pushnil(L);
|
|
} else
|
|
@@ -2577,7 +2577,7 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
|
|
- obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
|
|
+ obj = (StructTreeRoot *) ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
|
|
uout = new_StructTreeRoot_userdata(L);
|
|
uout->d = obj;
|
|
uout->pc = uin->pc;
|
|
@@ -3038,12 +3038,12 @@ m_poppler_get_BOOL(Attribute, isHidden);
|
|
|
|
static int m_Attribute_setHidden(lua_State * L)
|
|
{
|
|
- GBool i;
|
|
+ bool i;
|
|
udstruct *uin;
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_Attribute);
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
- i = (GBool) lua_toboolean(L, 2);
|
|
+ i = (bool) lua_toboolean(L, 2);
|
|
((Attribute *) uin->d)->setHidden(i);
|
|
return 0;
|
|
}
|
|
@@ -3180,7 +3180,7 @@ static int m_StructElement_getParentRef(lua_State * L)
|
|
// Ref is false if the C++ functione return false
|
|
static int m_StructElement_getPageRef(lua_State * L)
|
|
{
|
|
- GBool b;
|
|
+ bool b;
|
|
Ref *r;
|
|
udstruct *uin, *uout;
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
|
|
@@ -3226,16 +3226,16 @@ static int m_StructElement_setRevision(lua_State * L)
|
|
|
|
static int m_StructElement_getText(lua_State * L)
|
|
{
|
|
- GBool i;
|
|
+ bool i;
|
|
GooString *gs;
|
|
udstruct *uin;
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
|
|
if (uin->pd != NULL && uin->pd->pc != uin->pc)
|
|
pdfdoc_changed_error(L);
|
|
- i = (GBool) lua_toboolean(L, 2);
|
|
+ i = (bool) lua_toboolean(L, 2);
|
|
gs = ((StructElement *) uin->d)->getText(i);
|
|
if (gs != NULL)
|
|
- lua_pushlstring(L, gs->getCString(), gs->getLength());
|
|
+ lua_pushlstring(L, gs->c_str(), gs->getLength());
|
|
else
|
|
lua_pushnil(L);
|
|
return 1;
|
|
@@ -3321,7 +3321,7 @@ static int m_StructElement_findAttribute(lua_State * L)
|
|
{
|
|
Attribute::Type t;
|
|
Attribute::Owner o;
|
|
- GBool g;
|
|
+ bool g;
|
|
udstruct *uin, *uout;
|
|
const Attribute *a;
|
|
uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
|
|
@@ -3329,7 +3329,7 @@ static int m_StructElement_findAttribute(lua_State * L)
|
|
pdfdoc_changed_error(L);
|
|
t = (Attribute::Type) luaL_checkint(L,1);
|
|
o = (Attribute::Owner) luaL_checkint(L,2);
|
|
- g = (GBool) lua_toboolean(L, 3);
|
|
+ g = (bool) lua_toboolean(L, 3);
|
|
a = ((StructElement *) uin->d)->findAttribute(t,g,o);
|
|
|
|
if (a!=NULL){
|