commit c47d183efbe60a7e26168b4a8bd86d17f1afdc71 Author: PBS Date: Tue Oct 7 18:30:45 2025 +0200 Fix build breakage with poppler 25.10.0 Breakage caused by upstream change https://gitlab.freedesktop.org/poppler/poppler/-/commit/f6dcd06445b6b7795b4c8f654206c5aef3d79100#dc7dd8e370 Fixes https://gitlab.com/inkscape/inkscape/-/issues/5954 --- inkscape-1.4.2_2025-05-08_ebf0e940d0/src/extension/internal/pdfinput/pdf-parser.cpp.orig +++ inkscape-1.4.2_2025-05-08_ebf0e940d0/src/extension/internal/pdfinput/pdf-parser.cpp @@ -2258,7 +2258,7 @@ auto font = state->getFont(); int wMode = font->getWMode(); // Vertical/Horizontal/Invalid - builder->beginString(state, s->getLength()); + builder->beginString(state, _POPPLER_GOOSTRING_SIZE(s)); // handle a Type 3 char if (font->getType() == fontType3) { @@ -2269,7 +2269,7 @@ state->textTransformDelta(0, state->getRise(), &riseX, &riseY); auto p = s->getCString(); // char* or const char* - int len = s->getLength(); + int len = _POPPLER_GOOSTRING_SIZE(s); while (len > 0) { --- inkscape-1.4.2_2025-05-08_ebf0e940d0/src/extension/internal/pdfinput/poppler-transition-api.h.orig +++ inkscape-1.4.2_2025-05-08_ebf0e940d0/src/extension/internal/pdfinput/poppler-transition-api.h @@ -15,6 +15,12 @@ #include #include +#if POPPLER_CHECK_VERSION(25, 10, 0) +#define _POPPLER_GOOSTRING_SIZE(x) x->size() +#else +#define _POPPLER_GOOSTRING_SIZE(x) x->getLength() +#endif + #if POPPLER_CHECK_VERSION(25, 7, 0) #define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) textShiftWithUserCoords(dx, dy) #define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make(std::span(font_data), faceIndex) --- inkscape-1.4.2_2025-05-08_ebf0e940d0/src/extension/internal/pdfinput/poppler-utils.cpp.orig +++ inkscape-1.4.2_2025-05-08_ebf0e940d0/src/extension/internal/pdfinput/poppler-utils.cpp @@ -168,7 +168,7 @@ case objString: h->hash('s'); s = obj->getString(); - h->hash(s->c_str(), s->getLength()); + h->hash(s->c_str(), _POPPLER_GOOSTRING_SIZE(s)); break; case objName: h->hash('n'); @@ -586,10 +586,10 @@ std::string getString(const GooString *value) { if (_POPPLER_HAS_UNICODE_BOM(value)) { - return g_convert(value->getCString () + 2, value->getLength () - 2, + return g_convert(value->getCString () + 2, _POPPLER_GOOSTRING_SIZE(value) - 2, "UTF-8", "UTF-16BE", NULL, NULL, NULL); } else if (_POPPLER_HAS_UNICODE_BOMLE(value)) { - return g_convert(value->getCString () + 2, value->getLength () - 2, + return g_convert(value->getCString () + 2, _POPPLER_GOOSTRING_SIZE(value) - 2, "UTF-8", "UTF-16LE", NULL, NULL, NULL); } return value->toStr();