[66535] trunk/dports/x11/xournal

ryandesign at macports.org ryandesign at macports.org
Fri Apr 16 03:42:23 PDT 2010


Revision: 66535
          http://trac.macports.org/changeset/66535
Author:   ryandesign at macports.org
Date:     2010-04-16 03:42:20 -0700 (Fri, 16 Apr 2010)
Log Message:
-----------
xournal: fix crash when exporting to PDF on 64-bit systems like Snow Leopard using upstream patch

Modified Paths:
--------------
    trunk/dports/x11/xournal/Portfile

Added Paths:
-----------
    trunk/dports/x11/xournal/files/
    trunk/dports/x11/xournal/files/xournal-0.4.5-xoprint-len.patch

Modified: trunk/dports/x11/xournal/Portfile
===================================================================
--- trunk/dports/x11/xournal/Portfile	2010-04-16 10:21:00 UTC (rev 66534)
+++ trunk/dports/x11/xournal/Portfile	2010-04-16 10:42:20 UTC (rev 66535)
@@ -4,6 +4,7 @@
 
 name                    xournal
 version                 0.4.5
+revision                1
 categories              x11
 platforms               darwin
 maintainers             ryandesign
@@ -24,6 +25,9 @@
 
 depends_lib             port:poppler
 
+patch.pre_args          -p1
+patchfiles              xournal-0.4.5-xoprint-len.patch
+
 post-destroot {
     xinstall -d ${destroot}${prefix}/share/doc/${name}
     xinstall -m 644 -W ${worksrcpath} AUTHORS COPYING ChangeLog README ${destroot}${prefix}/share/doc/${name}

Added: trunk/dports/x11/xournal/files/xournal-0.4.5-xoprint-len.patch
===================================================================
--- trunk/dports/x11/xournal/files/xournal-0.4.5-xoprint-len.patch	                        (rev 0)
+++ trunk/dports/x11/xournal/files/xournal-0.4.5-xoprint-len.patch	2010-04-16 10:42:20 UTC (rev 66535)
@@ -0,0 +1,90 @@
+http://sourceforge.net/tracker/?group_id=163434&atid=827733
+http://sourceforge.net/tracker/?func=detail&aid=2897699&group_id=163434&atid=827733
+--- a/src/xo-print.c
++++ b/src/xo-print.c
+@@ -761,7 +761,7 @@ int pdf_draw_bitmap_background(struct Page *pg, GString *str,
+ 
+   make_xref(xref, xref->last+1, pdfbuf->len);
+   g_string_append_printf(pdfbuf, 
+-    "%d 0 obj\n<< /Length %d /Filter /FlateDecode /Type /Xobject "
++    "%d 0 obj\n<< /Length %zu /Filter /FlateDecode /Type /Xobject "
+     "/Subtype /Image /Width %d /Height %d /ColorSpace /DeviceRGB "
+     "/BitsPerComponent 8 >> stream\n",
+     xref->last, zpix->len, width, height);
+@@ -840,8 +840,10 @@ void embed_pdffont(GString *pdfbuf, struct XrefTable *xref, struct PdfFont *font
+   gboolean fallback, is_binary;
+   guchar encoding[256];
+   gushort glyphs[256];
+-  int i, j, num, len1, len2;
+-  gsize len;
++  int i, j, num;
++  guint32 len1, len2;
++  guint32 tt_len;
++  gsize t1_len;
+   TrueTypeFont *ttfnt;
+   char *seg1, *seg2;
+   char *fontdata, *p;
+@@ -862,14 +864,14 @@ void embed_pdffont(GString *pdfbuf, struct XrefTable *xref, struct PdfFont *font
+       }
+     font->num_glyphs_used = num-1;
+     if (OpenTTFont(font->filename, 0, &ttfnt) == SF_OK) {
+-      if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &len, glyphs, encoding, num, 
++      if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &tt_len, glyphs, encoding, num, 
+                    0, NULL, TTCF_AutoName | TTCF_IncludeOS2) == SF_OK) {
+         make_xref(xref, xref->last+1, pdfbuf->len);
+         nobj_fontprog = xref->last;
+         g_string_append_printf(pdfbuf, 
+-          "%d 0 obj\n<< /Length %d /Length1 %d >> stream\n",
+-          nobj_fontprog, (int)len, (int)len);
+-        g_string_append_len(pdfbuf, fontdata, len);
++          "%d 0 obj\n<< /Length %u /Length1 %u >> stream\n",
++          nobj_fontprog, tt_len, tt_len);
++        g_string_append_len(pdfbuf, fontdata, tt_len);
+         g_string_append(pdfbuf, "endstream\nendobj\n");
+         g_free(fontdata);
+       }
+@@ -879,7 +881,7 @@ void embed_pdffont(GString *pdfbuf, struct XrefTable *xref, struct PdfFont *font
+     else fallback = TRUE;
+   } else {
+   // embed the font file: Type1 case
+-    if (g_file_get_contents(font->filename, &fontdata, &len, NULL) && len>=8) {
++    if (g_file_get_contents(font->filename, &fontdata, &t1_len, NULL) && t1_len>=8) {
+       if (fontdata[0]==(char)0x80 && fontdata[1]==(char)0x01) {
+         is_binary = TRUE;
+         len1 = pfb_get_length((unsigned char *)fontdata+2);
+@@ -898,7 +900,7 @@ void embed_pdffont(GString *pdfbuf, struct XrefTable *xref, struct PdfFont *font
+           if (*p=='\n' || *p=='\r') p++;
+           if (*p=='\n' || *p=='\r') p++;
+           len1 = p-fontdata;
+-          p = g_strrstr_len(fontdata, len, T1_SEGMENT_3_END);
++          p = g_strrstr_len(fontdata, t1_len, T1_SEGMENT_3_END);
+           if (p==NULL) fallback = TRUE;
+           else {
+             // rewind 512 zeros
+@@ -936,7 +938,7 @@ void embed_pdffont(GString *pdfbuf, struct XrefTable *xref, struct PdfFont *font
+         make_xref(xref, xref->last+1, pdfbuf->len);
+         nobj_fontprog = xref->last;
+         g_string_append_printf(pdfbuf, 
+-          "%d 0 obj\n<< /Length %d /Length1 %d /Length2 %d /Length3 0 >> stream\n",
++          "%d 0 obj\n<< /Length %u /Length1 %u /Length2 %u /Length3 0 >> stream\n",
+           nobj_fontprog, len1+len2, len1, len2);
+         g_string_append_len(pdfbuf, seg1, len1);
+         g_string_append_len(pdfbuf, seg2, len2);
+@@ -1258,7 +1260,7 @@ gboolean print_to_pdf(char *filename)
+       tmpstr = make_pdfprefix(pdfinfo.pages+(pg->bg->file_page_seq-1),
+                               pg->width, pg->height);
+       g_string_append_printf(pdfbuf,
+-        "%d 0 obj\n<< /Length %d >> stream\n%s\nendstream\nendobj\n",
++        "%d 0 obj\n<< /Length %zu >> stream\n%s\nendstream\nendobj\n",
+         n_obj_prefix, tmpstr->len, tmpstr->str);
+       g_string_free(tmpstr, TRUE);
+       g_string_prepend(pgstrm, "Q Q Q ");
+@@ -1276,7 +1278,7 @@ gboolean print_to_pdf(char *filename)
+     
+     make_xref(&xref, xref.last+1, pdfbuf->len);
+     g_string_append_printf(pdfbuf, 
+-      "%d 0 obj\n<< /Length %d /Filter /FlateDecode>> stream\n",
++      "%d 0 obj\n<< /Length %zu /Filter /FlateDecode>> stream\n",
+       xref.last, zpgstrm->len);
+     g_string_append_len(pdfbuf, zpgstrm->str, zpgstrm->len);
+     g_string_free(zpgstrm, TRUE);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100416/57dbb9f0/attachment.html>


More information about the macports-changes mailing list