From a615a7788bdbdda26074ce356cefdfbf887e4e34 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 23 May 2004 14:00:27 +0000 Subject: [PATCH] Stop the PDF backend from crashing if no outline elements appear. It still doesn't _work_ properly if there aren't any contents entries, but it's a start. git-svn-id: svn://svn.tartarus.org/sgt/halibut@4250 cda61777-01e9-0310-a592-d414129be87e --- bk_pdf.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/bk_pdf.c b/bk_pdf.c index fa5262a..ce71c5e 100644 --- a/bk_pdf.c +++ b/bk_pdf.c @@ -76,7 +76,10 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords, olist.number = 1; cat = new_object(&olist); - outlines = new_object(&olist); + if (doc->n_outline_elements > 0) + outlines = new_object(&olist); + else + outlines = NULL; pages = new_object(&olist); resources = new_object(&olist); @@ -84,11 +87,16 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords, * The catalogue just contains references to the outlines and * pages objects. */ - objtext(cat, "<<\n/Type /Catalog\n/Outlines "); - objref(cat, outlines); + objtext(cat, "<<\n/Type /Catalog"); + if (outlines) { + objtext(cat, "\n/Outlines "); + objref(cat, outlines); + } objtext(cat, "\n/Pages "); objref(cat, pages); - objtext(cat, "\n/PageMode /UseOutlines\n>>\n"); + if (outlines) + objtext(cat, "\n/PageMode /UseOutlines"); + objtext(cat, "\n>>\n"); /* * Set up the resources dictionary, which mostly means @@ -349,7 +357,7 @@ void pdf_backend(paragraph *sourceform, keywordlist *keywords, /* * Set up the outlines dictionary. */ - { + if (outlines) { int topcount; char buf[80]; -- 2.11.0