diff options
Diffstat (limited to 'pkgs/applications/graphics/dia/poppler-22_09-build-fix.patch')
-rw-r--r-- | pkgs/applications/graphics/dia/poppler-22_09-build-fix.patch | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/applications/graphics/dia/poppler-22_09-build-fix.patch b/pkgs/applications/graphics/dia/poppler-22_09-build-fix.patch new file mode 100644 index 0000000000000..c461d8a642912 --- /dev/null +++ b/pkgs/applications/graphics/dia/poppler-22_09-build-fix.patch @@ -0,0 +1,93 @@ +diff --git a/plug-ins/pdf/pdf-import.cpp b/plug-ins/pdf/pdf-import.cpp +index 189737908..a2a479693 100644 +--- a/plug-ins/pdf/pdf-import.cpp ++++ b/plug-ins/pdf/pdf-import.cpp +@@ -152,12 +152,12 @@ public : + void + updateLineDash (GfxState *state) + { +- double *dashPattern; +- int dashLength; +- double dashStart; +- +- state->getLineDash (&dashPattern, &dashLength, &dashStart); +- this->dash_length = dashLength ? dashPattern[0] * scale : 1.0; ++ const double *dashPattern=NULL; ++ int dashLength=0; ++ double dashStart=0; ++ const std::vector<double> &dash = state->getLineDash(&dashStart); // > Poppler 22.09 ... ++ dashPattern = dash.data(); ++ dashLength = dash.size(); + + if (dashLength == 0) + this->line_style = DIA_LINE_STYLE_SOLID; +@@ -318,10 +318,11 @@ public : + //FIXME: Dia is really unhappy about zero size fonts + if (!(state->getFontSize() > 0.0)) + return; +- GfxFont *f = state->getFont(); ++ const std::shared_ptr<GfxFont> f = state->getFont(); // poppler 22.05 ... header changed ++ gconstpointer f1 = &f; // GLib typedef const void * gconstpointer; + + // instead of building the same font over and over again +- if (g_hash_table_lookup (this->font_map, f)) { ++ if (g_hash_table_lookup (this->font_map, f1)) { + ++font_map_hits; + return; + } +@@ -333,8 +334,9 @@ public : + gchar *family = g_strdup (f->getFamily() ? f->getFamily()->c_str() : "sans"); + + // we are (not anymore) building the same font over and over again ++ f1 = &f; + g_print ("Font 0x%x: '%s' size=%g (* %g)\n", +- GPOINTER_TO_INT (f), family, state->getTransformedFontSize(), scale); ++ GPOINTER_TO_INT (f1), family, state->getTransformedFontSize(), scale); + + // now try to make a fontname Dia/Pango can cope with + // strip style postfix - we already have extracted the style bits above +@@ -354,7 +356,9 @@ public : + fsize *= fabs(fm[3] / fm[0]); + font = dia_font_new (family, style, fsize * scale / 0.8); + +- g_hash_table_insert (this->font_map, f, font); ++ f1 = &f; ++ gpointer f2 = (gpointer)f1; // GLib typedef void* gpointer; ++ g_hash_table_insert (this->font_map, f2, font); + g_free (family); + } + void updateTextShift(GfxState *state, double shift) +@@ -721,11 +725,12 @@ DiaOutputDev::drawString(GfxState *state, GooString *s) + return; + if (!(state->getFontSize() > 0.0)) + return; +- font = (DiaFont *)g_hash_table_lookup (this->font_map, state->getFont()); ++ gconstpointer f_1 = &state->getFont(); ++ font = (DiaFont *)g_hash_table_lookup (this->font_map, f_1); + + // we have to decode the string data first + { +- GfxFont *f = state->getFont(); ++ const std::shared_ptr<GfxFont> f = state->getFont(); + const char *p = s->c_str(); + CharCode code; + int j = 0, m, n; +@@ -870,8 +875,8 @@ import_pdf(const gchar *filename, DiagramData *dia, DiaContext *ctx, void* user_ + std::unique_ptr<PDFDoc> doc; + GooString *fileName = new GooString(filename); + // no passwords yet +- GooString *ownerPW = NULL; +- GooString *userPW = NULL; ++ const std::optional<GooString> ownerPW; ++ const std::optional<GooString> userPW; + gboolean ret = FALSE; + + // without this we will get strange crashes (at least with /O2 build) +@@ -899,6 +904,7 @@ import_pdf(const gchar *filename, DiagramData *dia, DiaContext *ctx, void* user_ + delete diaOut; + ret = TRUE; + } ++ doc.reset(); + delete fileName; + + return ret; |