From f7ace61076d0ab3c71e1d2bd70967ddb0b86f220 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Tue, 19 Jun 2018 13:15:31 +0200 Subject: Keep copy of decoded utf8 text string in pdf_obj. Removes the need to alloc/free text strings in the API, allowing for simple functions like pdf_dict_get_text_string. --- platform/gl/gl-annotate.c | 12 +++++------- platform/java/mupdf_native.c | 5 ++--- platform/x11/jstest_main.c | 2 +- platform/x11/pdfapp.c | 9 ++------- platform/x11/pdfapp.h | 2 +- platform/x11/win_main.c | 2 +- platform/x11/x11_main.c | 2 +- 7 files changed, 13 insertions(+), 21 deletions(-) (limited to 'platform') diff --git a/platform/gl/gl-annotate.c b/platform/gl/gl-annotate.c index 304f0f10..9d88dabc 100644 --- a/platform/gl/gl-annotate.c +++ b/platform/gl/gl-annotate.c @@ -314,10 +314,9 @@ static void do_annotate_author(void) { if (pdf_annot_has_author(ctx, selected_annot)) { - char *author = pdf_copy_annot_author(ctx, selected_annot); - if (author && strlen(author) > 0) + const char *author = pdf_get_annot_author(ctx, selected_annot); + if (strlen(author) > 0) ui_label("Author: %s", author); - fz_free(ctx, author); } } @@ -344,14 +343,13 @@ static void do_annotate_contents(void) { static pdf_annot *last_annot = NULL; static struct input input; - char *contents; + const char *contents; if (selected_annot != last_annot) { last_annot = selected_annot; - contents = pdf_copy_annot_contents(ctx, selected_annot); + contents = pdf_get_annot_contents(ctx, selected_annot); ui_input_init(&input, contents); - fz_free(ctx, contents); } ui_label("Contents:"); @@ -387,7 +385,7 @@ static void do_widget_value() } else if (type == PDF_WIDGET_TYPE_COMBOBOX || type == PDF_WIDGET_TYPE_LISTBOX) { - char **options; + const char **options; int n, choice; ui_label("Value:"); n = pdf_choice_widget_options(ctx, selected_annot->page->doc, selected_annot, 0, NULL); diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 74ba2d11..8e9e9f3f 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -8800,7 +8800,7 @@ FUN(PDFAnnotation_getContents)(JNIEnv *env, jobject self) if (!ctx || !annot) return NULL; fz_try(ctx) - contents = pdf_copy_annot_contents(ctx, annot); + contents = pdf_get_annot_contents(ctx, annot); fz_catch(ctx) { jni_rethrow(env, ctx); @@ -8808,7 +8808,6 @@ FUN(PDFAnnotation_getContents)(JNIEnv *env, jobject self) } result = (*env)->NewStringUTF(env, contents); - fz_free(ctx, contents); return result; } @@ -8846,7 +8845,7 @@ FUN(PDFAnnotation_getAuthor)(JNIEnv *env, jobject self) if (!ctx || !annot) return NULL; fz_try(ctx) - author = pdf_copy_annot_author(ctx, annot); + author = pdf_get_annot_author(ctx, annot); fz_catch(ctx) { jni_rethrow(env, ctx); diff --git a/platform/x11/jstest_main.c b/platform/x11/jstest_main.c index 14577bd2..0c729b86 100644 --- a/platform/x11/jstest_main.c +++ b/platform/x11/jstest_main.c @@ -81,7 +81,7 @@ char *wintextinput(pdfapp_t *app, char *inittext, int retry) return inittext; } -int winchoiceinput(pdfapp_t *app, int nopts, char *opts[], int *nvals, char *vals[]) +int winchoiceinput(pdfapp_t *app, int nopts, const char *opts[], int *nvals, const char *vals[]) { return 0; } diff --git a/platform/x11/pdfapp.c b/platform/x11/pdfapp.c index f011b5b0..1c5ae45d 100644 --- a/platform/x11/pdfapp.c +++ b/platform/x11/pdfapp.c @@ -1680,8 +1680,8 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta { int nopts; int nvals; - char **opts = NULL; - char **vals = NULL; + const char **opts = NULL; + const char **vals = NULL; fz_var(opts); fz_var(vals); @@ -1706,12 +1706,7 @@ void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int sta } fz_always(ctx) { - int i; - for (i=0; i < nopts; ++i) - fz_free(ctx, opts[i]); fz_free(ctx, opts); - for (i=0; i < nvals; ++i) - fz_free(ctx, vals[i]); fz_free(ctx, vals); } fz_catch(ctx) diff --git a/platform/x11/pdfapp.h b/platform/x11/pdfapp.h index 09d8f16a..b6c2127c 100644 --- a/platform/x11/pdfapp.h +++ b/platform/x11/pdfapp.h @@ -30,7 +30,7 @@ extern void winrepaint(pdfapp_t*); extern void winrepaintsearch(pdfapp_t*); extern char *winpassword(pdfapp_t*, char *filename); extern char *wintextinput(pdfapp_t*, char *inittext, int retry); -extern int winchoiceinput(pdfapp_t*, int nopts, char *opts[], int *nvals, char *vals[]); +extern int winchoiceinput(pdfapp_t*, int nopts, const char *opts[], int *nvals, const char *vals[]); extern void winopenuri(pdfapp_t*, char *s); extern void wincursor(pdfapp_t*, int curs); extern void windocopy(pdfapp_t*); diff --git a/platform/x11/win_main.c b/platform/x11/win_main.c index 877f8c73..dd406c42 100644 --- a/platform/x11/win_main.c +++ b/platform/x11/win_main.c @@ -450,7 +450,7 @@ char *wintextinput(pdfapp_t *app, char *inittext, int retry) return NULL; } -int winchoiceinput(pdfapp_t *app, int nopts, char *opts[], int *nvals, char *vals[]) +int winchoiceinput(pdfapp_t *app, int nopts, const char *opts[], int *nvals, const char *vals[]) { int code; cd_nopts = nopts; diff --git a/platform/x11/x11_main.c b/platform/x11/x11_main.c index edbb9fa8..7e5942bf 100644 --- a/platform/x11/x11_main.c +++ b/platform/x11/x11_main.c @@ -184,7 +184,7 @@ char *wintextinput(pdfapp_t *app, char *inittext, int retry) return NULL; } -int winchoiceinput(pdfapp_t *app, int nopts, char *opts[], int *nvals, char *vals[]) +int winchoiceinput(pdfapp_t *app, int nopts, const char *opts[], int *nvals, const char *vals[]) { /* FIXME: temporary dummy implementation */ return 0; -- cgit v1.2.3