https://bugs.gentoo.org/843311 https://cgit.freebsd.org/ports/commit/?id=d9b5ef800dbd0366eae81b03bfa89689ec73c6f7 (sam: adapt version check to 22.4.0) From: Sam James Date: Sun, 8 May 2022 21:20:25 +0000 Subject: [PATCH 1/2] Import FreeBSD patch for Poppler 22.04.0 build --- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx @@ -474,11 +474,17 @@ int PDFOutDev::parseFont( long long nNewId, GfxFont* gfxFont, const GfxState* st { // TODO(P3): Unfortunately, need to read stream twice, since // we must write byte count to stdout before +#if !POPPLER_CHECK_VERSION(22, 4, 0) char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize ); +#else + std::optional> pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef() ); +#endif if( pBuf ) { aNewFont.isEmbedded = true; +#if !POPPLER_CHECK_VERSION(22, 4, 0) gfree(pBuf); +#endif } } @@ -492,21 +498,32 @@ void PDFOutDev::writeFontFile( GfxFont* gfxFont ) const return; int nSize = 0; - char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize ); +#if !POPPLER_CHECK_VERSION(22, 4, 0) + char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize ); +#else + std::optional> pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef() ); +#endif if( !pBuf ) return; // ---sync point--- see SYNC STREAMS above fflush(stdout); - +#if !POPPLER_CHECK_VERSION(22, 4, 0) if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != static_cast(nSize) ) +#else + if( fwrite(reinterpret_cast(pBuf.value().data()), sizeof(char), nSize, g_binary_out) != static_cast(nSize) ) +#endif { - gfree(pBuf); +#if !POPPLER_CHECK_VERSION(22, 4, 0) + gfree(pBuf); +#endif exit(1); // error } // ---sync point--- see SYNC STREAMS above fflush(g_binary_out); - gfree(pBuf); +#if !POPPLER_CHECK_VERSION(22, 4, 0) + gfree(pBuf); +#endif } #if POPPLER_CHECK_VERSION(0, 83, 0) @@ -759,7 +776,11 @@ void PDFOutDev::updateFont(GfxState *state) { assert(state); +#if !POPPLER_CHECK_VERSION(22, 4, 0) GfxFont *gfxFont = state->getFont(); +#else + GfxFont *gfxFont = state->getFont().get(); +#endif if( !gfxFont ) return;