summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-annot.c
diff options
context:
space:
mode:
authorPaul Gardiner <paul.gardiner@artifex.com>2013-11-06 16:51:20 +0000
committerPaul Gardiner <paul.gardiner@artifex.com>2013-11-06 16:51:20 +0000
commit2880476b2ee10fd8b6e258da5f5c2b7a93746a07 (patch)
tree4bc1df0139f9876a4535d83d2538ea5868c5c334 /source/pdf/pdf-annot.c
parent2901c7d78c9880b6fda7ccf9b000d847724071e4 (diff)
downloadmupdf-2880476b2ee10fd8b6e258da5f5c2b7a93746a07.tar.xz
Place newly created annotations at the end of the annotation list
This fixes bug 694755. Thank you to Michael Cadihac for the patch
Diffstat (limited to 'source/pdf/pdf-annot.c')
-rw-r--r--source/pdf/pdf-annot.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/pdf/pdf-annot.c b/source/pdf/pdf-annot.c
index 338ca1ac..edab4cd5 100644
--- a/source/pdf/pdf-annot.c
+++ b/source/pdf/pdf-annot.c
@@ -710,6 +710,7 @@ pdf_create_annot(pdf_document *doc, pdf_page *page, fz_annot_type type)
{
fz_context *ctx = doc->ctx;
pdf_annot *annot = NULL;
+ pdf_annot **lastptr;
pdf_obj *annot_obj = pdf_new_dict(doc, 0);
pdf_obj *ind_obj = NULL;
@@ -753,10 +754,12 @@ pdf_create_annot(pdf_document *doc, pdf_page *page, fz_annot_type type)
/*
Linking must be done after any call that might throw because
- pdf_free_annot below actually frees a list
+ pdf_free_annot below actually frees a list. Put the new annot
+ at the end of the list, so that it will be drawn last.
*/
- annot->next = page->annots;
- page->annots = annot;
+ for (lastptr = &page->annots; *lastptr; lastptr = &(*lastptr)->next)
+ ;
+ *lastptr = annot;
doc->dirty = 1;
}