From 8a8114cc9c3ae2f9bc866e15ea9f69778c63c3a3 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 12 Nov 2018 13:29:37 +0100 Subject: Remove confusing flag define. What's the difference between PDF_OBJ_FLAG_MARK and PDF_FLAGS_MARKED? PDF_OBJ_FLAG_MARK is used to flag an xref entry as one that we want to keep cached with the pdf_mark_xref/pdf_clear_xref_to_mark functions. PDF_FLAGS_MARKED is used to detect unwanted recursion in PDF structures. Renaming the xref_entry.flags field to xref_entry.marked should remove this source of potential confusion. --- include/mupdf/pdf/xref.h | 7 +------ source/pdf/pdf-xref.c | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/include/mupdf/pdf/xref.h b/include/mupdf/pdf/xref.h index 1924b635..0df1970d 100644 --- a/include/mupdf/pdf/xref.h +++ b/include/mupdf/pdf/xref.h @@ -41,7 +41,7 @@ typedef struct pdf_xref_entry_s pdf_xref_entry; struct pdf_xref_entry_s { char type; /* 0=unset (f)ree i(n)use (o)bjstm */ - unsigned char flags; /* bit 0 = marked */ + unsigned char marked; /* marked to keep alive with pdf_mark_xref */ unsigned short gen; /* generation / objstm index */ int num; /* original object number (for decryption after renumbering) */ int64_t ofs; /* file offset / objstm object number */ @@ -50,11 +50,6 @@ struct pdf_xref_entry_s pdf_obj *obj; /* stored/cached object */ }; -enum -{ - PDF_OBJ_FLAG_MARK = 1, -}; - typedef struct pdf_xref_subsec_s pdf_xref_subsec; struct pdf_xref_subsec_s diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index 71b74b65..4409681e 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -2814,7 +2814,7 @@ void pdf_mark_xref(fz_context *ctx, pdf_document *doc) pdf_xref_entry *entry = &sub->table[e]; if (entry->obj) { - entry->flags |= PDF_OBJ_FLAG_MARK; + entry->marked = 1; } } } @@ -2869,7 +2869,7 @@ void pdf_clear_xref_to_mark(fz_context *ctx, pdf_document *doc) * been updated */ if (entry->obj != NULL && entry->stm_buf == NULL) { - if ((entry->flags & PDF_OBJ_FLAG_MARK) == 0 && pdf_obj_refs(ctx, entry->obj) == 1) + if (!entry->marked && pdf_obj_refs(ctx, entry->obj) == 1) { pdf_drop_obj(ctx, entry->obj); entry->obj = NULL; -- cgit v1.2.3