From acc2deba308bb4746d5a48f5b19f5a40b63f0cdd Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sun, 23 May 2004 14:00:27 +0000 Subject: 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. [originally from svn r4250] --- 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]; -- cgit v1.1