dia: 0.97.3.20170622 -> unstable-2022-12-14

This commit is contained in:
Thiago Kenji Okada 2023-01-07 23:09:31 +00:00
parent b29899b83f
commit 467e2a2397
4 changed files with 148 additions and 40 deletions

View File

@ -1,11 +0,0 @@
diff -ru a/app/app_procs.c b/app/app_procs.c
--- a/app/app_procs.c 2021-01-30 11:09:52.000000000 -0500
+++ b/app/app_procs.c 2021-01-30 11:11:05.000000000 -0500
@@ -785,6 +785,7 @@
if (!filename) {
g_print (_("Filename conversion failed: %s\n"), filenames[i]);
+ ++i;
continue;
}

View File

@ -1,40 +1,68 @@
{ lib, stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkg-config, perlPackages,
libxml2, gettext, python2, libxml2Python, docbook5, docbook_xsl,
libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui,
gtk-mac-integration-gtk2 }:
{ lib
, stdenv
, fetchFromGitLab
, appstream-glib
, cmake
, dblatex
, desktop-file-utils
, graphene
, gtk2
, gtk-mac-integration-gtk2
, intltool
, libxml2
, libxslt
, meson
, ninja
, pkg-config
, poppler
, python3
# Building with docs are failing in unstable-2022-12-14
, withDocs ? false
}:
stdenv.mkDerivation {
pname = "dia";
version = "0.97.3.20170622";
version = "unstable-2022-12-14";
src = fetchgit {
url = "https://gitlab.gnome.org/GNOME/dia.git";
rev = "b86085dfe2b048a2d37d587adf8ceba6fb8bc43c";
sha256 = "1fyxfrzdcs6blxhkw3bcgkksaf3byrsj4cbyrqgb4869k3ynap96";
src = fetchFromGitLab {
owner = "GNOME";
repo = "dia";
domain = "gitlab.gnome.org";
rev = "4a619ec7cc93be5ddfbcc48d9e1572d04943bcad";
hash = "sha256-xi45Ak4rlDQjs/FNkdkm145mx76GNHjE6Nrs1dc94ww=";
};
patches = [
./CVE-2019-19451.patch
];
buildInputs =
[ gtk2 libxml2 gettext python2 libxml2Python docbook5
libxslt docbook_xsl libart_lgpl ]
++ lib.optional withGNOME libgnomeui
++ lib.optional stdenv.isDarwin gtk-mac-integration-gtk2;
nativeBuildInputs = [ autoconf automake libtool pkg-config intltool ]
++ (with perlPackages; [ perl XMLParser ]);
patches = [ ./poppler-22_09-build-fix.patch ];
preConfigure = ''
NOCONFIGURE=1 ./autogen.sh # autoreconfHook is not enough
patchShebangs .
'';
configureFlags = lib.optional withGNOME "--enable-gnome";
# error: implicitly declaring library function 'finite' with type 'int (double)'
NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) "-Dfinite=isfinite";
buildInputs = [
graphene
gtk2
libxml2
python3
poppler
] ++
lib.optionals withDocs [
libxslt
] ++
lib.optionals stdenv.isDarwin [
gtk-mac-integration-gtk2
];
hardeningDisable = [ "format" ];
nativeBuildInputs = [
appstream-glib
desktop-file-utils
intltool
meson
ninja
pkg-config
] ++
lib.optionals withDocs [
dblatex
];
meta = with lib; {
description = "Gnome Diagram drawing software";

View File

@ -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;

View File

@ -28326,9 +28326,7 @@ with pkgs;
dht = callPackage ../applications/networking/p2p/dht { };
dia = callPackage ../applications/graphics/dia {
inherit (gnome2) libart_lgpl libgnomeui;
};
dia = callPackage ../applications/graphics/dia { };
direwolf = callPackage ../applications/radio/direwolf {
hamlib = hamlib_4;