diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-07-24 22:43:11 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-07-24 22:43:11 +0000 |
commit | 7b14b75626befe976530136bcf3158a16bd95df0 (patch) | |
tree | 9aefff9670d456ac7402074ffddb1a7f2d7b036d /Build/source/texk/web2c/luatexdir/image | |
parent | b7f40e4f685e941ac062cac36728a4cad0faab6c (diff) |
luatexdir: Sync with the upstream
git-svn-id: svn://tug.org/texlive/trunk@41755 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/image')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/image/pdftoepdf.w | 4 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/image/writeimg.w | 27 |
2 files changed, 20 insertions, 11 deletions
diff --git a/Build/source/texk/web2c/luatexdir/image/pdftoepdf.w b/Build/source/texk/web2c/luatexdir/image/pdftoepdf.w index d86504f82bc..0f3e75d002c 100644 --- a/Build/source/texk/web2c/luatexdir/image/pdftoepdf.w +++ b/Build/source/texk/web2c/luatexdir/image/pdftoepdf.w @@ -596,6 +596,10 @@ void read_pdf_info(image_dict * idict) pdf_doc = refPdfDocument(img_filepath(idict), FE_FAIL); else if (img_type(idict) == IMG_TYPE_PDFMEMSTREAM) { pdf_doc = findPdfDocument(img_filepath(idict)) ; + if (pdf_doc == NULL ) + normal_error("pdf inclusion", "memstream not initialized"); + if (pdf_doc->doc == NULL) + normal_error("pdf inclusion", "memstream document is empty"); pdf_doc->occurences++; } else { normal_error("pdf inclusion","unknown document"); diff --git a/Build/source/texk/web2c/luatexdir/image/writeimg.w b/Build/source/texk/web2c/luatexdir/image/writeimg.w index f8e035f549d..0944509c044 100644 --- a/Build/source/texk/web2c/luatexdir/image/writeimg.w +++ b/Build/source/texk/web2c/luatexdir/image/writeimg.w @@ -281,15 +281,22 @@ void read_img(image_dict * idict) callback_id = callback_defined(find_image_file_callback); if (img_filepath(idict) == NULL) { if (callback_id > 0) { + /* we always callback, also for a mem stream */ if (run_callback(callback_id, "S->S", img_filename(idict),&filepath)) { if (filepath && (strlen(filepath) > 0)) { img_filepath(idict) = strdup(filepath); } } - } else { + } + if (img_filepath(idict) == NULL && (strstr(img_filename(idict),"data:application/pdf,") != NULL)) { + /* we need to check here for a pdf memstream */ + img_filepath(idict) = strdup(img_filename(idict)); + } else if (callback_id == 0) { + /* otherwise we use kpse but only when we don't callback */ img_filepath(idict) = kpse_find_file(img_filename(idict), kpse_tex_format, true); } if (img_filepath(idict) == NULL) { + /* in any case we need a name */ formatted_error("pdf backend","cannot find image file '%s'", img_filename(idict)); } } @@ -420,8 +427,6 @@ void scan_pdfximage(PDF pdf) /* static_pdf */ } @ @c -#define tail cur_list.tail_field - void scan_pdfrefximage(PDF pdf) { int transform = 0; /* one could scan transform as well */ @@ -434,20 +439,20 @@ void scan_pdfrefximage(PDF pdf) idict = idict_array[obj_data_ptr(pdf, cur_val)]; if (img_state(idict) == DICT_NEW) { normal_warning("image","don't rely on the image data to be okay"); - width(tail) = 0; - height(tail) = 0; - depth(tail) = 0; + width(tail_par) = 0; + height(tail_par) = 0; + depth(tail_par) = 0; } else { if (alt_rule.wd != null_flag || alt_rule.ht != null_flag || alt_rule.dp != null_flag) { dim = scale_img(idict, alt_rule, transform); } else { dim = scale_img(idict, img_dimen(idict), img_transform(idict)); } - width(tail) = dim.wd; - height(tail) = dim.ht; - depth(tail) = dim.dp; - rule_transform(tail) = transform; - rule_index(tail) = img_index(idict); + width(tail_par) = dim.wd; + height(tail_par) = dim.ht; + depth(tail_par) = dim.dp; + rule_transform(tail_par) = transform; + rule_index(tail_par) = img_index(idict); } } |