summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2021-06-08 22:22:19 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2021-06-08 22:22:19 +0000
commit57fbf7422b87c19c0458531f042aef0250d42aea (patch)
tree7b8b7a91691efb61c4cda67e7746c8aa8fe91d9f /Build/source/texk/dvipdfm-x
parentd555686463897ab048255c1cd733b133cf76d0b6 (diff)
Replace the changes in rev.59429 for the problem causing segmentation fault (S. Hirata).
git-svn-id: svn://tug.org/texlive/trunk@59525 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x')
-rw-r--r--Build/source/texk/dvipdfm-x/ChangeLog11
-rwxr-xr-xBuild/source/texk/dvipdfm-x/configure22
-rw-r--r--Build/source/texk/dvipdfm-x/configure.ac2
-rw-r--r--Build/source/texk/dvipdfm-x/pdfencoding.c130
4 files changed, 78 insertions, 87 deletions
diff --git a/Build/source/texk/dvipdfm-x/ChangeLog b/Build/source/texk/dvipdfm-x/ChangeLog
index d73eb487ebc..2126228791b 100644
--- a/Build/source/texk/dvipdfm-x/ChangeLog
+++ b/Build/source/texk/dvipdfm-x/ChangeLog
@@ -1,3 +1,14 @@
+2021-06-09 Shunsaku Hirata <shunsaku.hirata74@gmail.com>
+
+ * pdfencoding.c: Replace the changes made on 2021-06-02. The
+ segmentation fault problem was introduced by the changes in
+ rev.7557 which were not just problematic but also making it
+ unclear that it's not possible to freely choose which
+ encodings to use as the base encoding. Remove useless base
+ encoding entry which was causing the problem from the
+ pdf_encoding struct.
+ * configure.ac: Version 20210609.
+
2021-06-05 Shunsaku Hirata <shunsaku.hirata74@gmail.com>
* pdfximage.c: Improved error messages when PDF/PS inclusion
diff --git a/Build/source/texk/dvipdfm-x/configure b/Build/source/texk/dvipdfm-x/configure
index 44e188f1265..a9883238369 100755
--- a/Build/source/texk/dvipdfm-x/configure
+++ b/Build/source/texk/dvipdfm-x/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20210605.
+# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20210609.
#
# Report bugs to <dvipdfmx@tug.org>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dvipdfm-x (TeX Live)'
PACKAGE_TARNAME='dvipdfm-x--tex-live-'
-PACKAGE_VERSION='20210605'
-PACKAGE_STRING='dvipdfm-x (TeX Live) 20210605'
+PACKAGE_VERSION='20210609'
+PACKAGE_STRING='dvipdfm-x (TeX Live) 20210609'
PACKAGE_BUGREPORT='dvipdfmx@tug.org'
PACKAGE_URL=''
@@ -1350,7 +1350,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures dvipdfm-x (TeX Live) 20210605 to adapt to many kinds of systems.
+\`configure' configures dvipdfm-x (TeX Live) 20210609 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1421,7 +1421,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20210605:";;
+ short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20210609:";;
esac
cat <<\_ACEOF
@@ -1551,7 +1551,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-dvipdfm-x (TeX Live) configure 20210605
+dvipdfm-x (TeX Live) configure 20210609
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2390,7 +2390,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by dvipdfm-x (TeX Live) $as_me 20210605, which was
+It was created by dvipdfm-x (TeX Live) $as_me 20210609, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -8072,7 +8072,7 @@ fi
# Define the identity of the package.
PACKAGE='dvipdfm-x--tex-live-'
- VERSION='20210605'
+ VERSION='20210609'
cat >>confdefs.h <<_ACEOF
@@ -14741,7 +14741,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-dvipdfm-x (TeX Live) config.lt 20210605
+dvipdfm-x (TeX Live) config.lt 20210609
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -16631,7 +16631,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by dvipdfm-x (TeX Live) $as_me 20210605, which was
+This file was extended by dvipdfm-x (TeX Live) $as_me 20210609, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16701,7 +16701,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-dvipdfm-x (TeX Live) config.status 20210605
+dvipdfm-x (TeX Live) config.status 20210609
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/texk/dvipdfm-x/configure.ac b/Build/source/texk/dvipdfm-x/configure.ac
index 84414848454..0e104125cf2 100644
--- a/Build/source/texk/dvipdfm-x/configure.ac
+++ b/Build/source/texk/dvipdfm-x/configure.ac
@@ -8,7 +8,7 @@ dnl This file is free software; the copyright holder
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
-AC_INIT([dvipdfm-x (TeX Live)], [20210605], [dvipdfmx@tug.org])
+AC_INIT([dvipdfm-x (TeX Live)], [20210609], [dvipdfmx@tug.org])
AC_PREREQ([2.65])
AC_CONFIG_SRCDIR([agl.c])
AC_CONFIG_AUX_DIR([../../build-aux])
diff --git a/Build/source/texk/dvipdfm-x/pdfencoding.c b/Build/source/texk/dvipdfm-x/pdfencoding.c
index f1206aeb8f8..5714dfe4858 100644
--- a/Build/source/texk/dvipdfm-x/pdfencoding.c
+++ b/Build/source/texk/dvipdfm-x/pdfencoding.c
@@ -1,6 +1,6 @@
/* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
- Copyright (C) 2002-2020 by Jin-Hwan Cho, Matthias Franz, and Shunsaku Hirata,
+ Copyright (C) 2002-2021 by Jin-Hwan Cho, Matthias Franz, and Shunsaku Hirata,
the dvipdfmx project team.
Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks@kettering.edu>
@@ -40,8 +40,7 @@
#include "pdfencoding.h"
static int is_similar_charset (char **encoding, const char **encoding2);
-static pdf_obj *make_encoding_differences (char **encoding, char **baseenc,
- const char *is_used);
+static pdf_obj *make_encoding_differences (char **encoding, const char **baseenc, const char *is_used);
static const char *MacRomanEncoding[256];
static const char *MacExpertEncoding[256];
@@ -67,24 +66,19 @@ static const char *ISOLatin1Encoding[256];
typedef struct pdf_encoding
{
- char *ident;
+ char *ident;
- char *enc_name;
- int flags;
- char *glyphs[256]; /* ".notdef" must be represented as NULL */
- char is_used[256];
+ char *enc_name;
+ int flags;
+ char *glyphs[256]; /* ".notdef" must be represented as NULL */
+ char is_used[256];
- int baseenc_id;
- pdf_obj *tounicode;
+ pdf_obj *tounicode;
- pdf_obj *resource;
+ pdf_obj *resource;
} pdf_encoding;
-static int pdf_encoding_new_encoding (const char *enc_name,
- const char *ident,
- const char **encoding_vec,
- const char *baseenc_name,
- int flags);
+static int pdf_encoding_new_encoding (const char *enc_name, const char *ident, const char **encoding_vec, int flags);
static void
pdf_init_encoding_struct (pdf_encoding *encoding)
@@ -98,35 +92,36 @@ pdf_init_encoding_struct (pdf_encoding *encoding)
memset(encoding->glyphs, 0, 256*sizeof(char *));
memset(encoding->is_used, 0, 256);
- encoding->tounicode = NULL;
+ encoding->tounicode = NULL;
- encoding->baseenc_id= -1;
- encoding->resource = NULL;
+ encoding->resource = NULL;
- encoding->flags = 0;
+ encoding->flags = 0;
return;
}
-/* Creates the PDF Encoding entry for the encoding.
- * If baseenc is non-null, it is used as BaseEncoding entry.
- */
+/* Creates the PDF Encoding entry for the encoding. */
static pdf_obj *
-create_encoding_resource (pdf_encoding *encoding, pdf_encoding *baseenc)
+create_encoding_resource (char **enc_vec, const char *baseenc_name, const char **baseenc_vec, char *is_used)
{
pdf_obj *differences;
- ASSERT(encoding);
- ASSERT(!encoding->resource);
- differences = make_encoding_differences(encoding->glyphs,
- baseenc ? baseenc->glyphs : NULL,
- encoding->is_used);
-
+ ASSERT(enc_vec);
+
+ if (baseenc_name) {
+ if (strcmp(baseenc_name, "MacRomanEncoding") &&
+ strcmp(baseenc_name, "MacExpertEncoding") &&
+ strcmp(baseenc_name, "WinAnsiEncoding")) {
+ ERROR("Invalid encoding name for BaseEncoding: %s", baseenc_name);
+ }
+ }
+
+ differences = make_encoding_differences(enc_vec, baseenc_vec, is_used);
if (differences) {
pdf_obj *resource = pdf_new_dict();
- if (baseenc)
- pdf_add_dict(resource, pdf_new_name("BaseEncoding"),
- pdf_link_obj(baseenc->resource));
+ if (baseenc_name)
+ pdf_add_dict(resource, pdf_new_name("BaseEncoding"), pdf_new_name(baseenc_name));
pdf_add_dict(resource, pdf_new_name("Differences"), differences);
return resource;
} else {
@@ -141,7 +136,7 @@ create_encoding_resource (pdf_encoding *encoding, pdf_encoding *baseenc)
*
* Actually these fonts will be ignored in pdffont.c.
*/
- return baseenc ? pdf_link_obj(baseenc->resource) : NULL;
+ return baseenc_name ? pdf_new_name(baseenc_name) : NULL;
}
}
@@ -212,8 +207,7 @@ is_similar_charset (char **enc_vec, const char **enc_vec2)
int code, same = 0;
for (code = 0; code < 256; code++)
- if (!(enc_vec[code] && strcmp(enc_vec[code], enc_vec2[code]))
- && ++same >= 64)
+ if (!(enc_vec[code] && strcmp(enc_vec[code], enc_vec2[code])) && ++same >= 64)
/* is 64 a good level? */
return 1;
@@ -225,7 +219,7 @@ is_similar_charset (char **enc_vec, const char **enc_vec2)
* are actually used in the document are considered.
*/
static pdf_obj *
-make_encoding_differences (char **enc_vec, char **baseenc, const char *is_used)
+make_encoding_differences (char **enc_vec, const char **baseenc, const char *is_used)
{
pdf_obj *differences = NULL;
int code, count = 0;
@@ -329,8 +323,7 @@ load_encoding_file (const char *filename)
for (code = 0; code < 256; code++) {
enc_vec[code] = pdf_name_value(pdf_get_array(encoding_array, code));
}
- enc_id = pdf_encoding_new_encoding(enc_name ? pdf_name_value(enc_name) : NULL,
- filename, enc_vec, NULL, 0);
+ enc_id = pdf_encoding_new_encoding(enc_name ? pdf_name_value(enc_name) : NULL, filename, enc_vec, 0);
if (enc_name) {
if (dpx_conf.verbose_level > 1)
@@ -370,12 +363,9 @@ pdf_init_encodings (void)
/*
* PDF Predefined Encodings
*/
- pdf_encoding_new_encoding("WinAnsiEncoding", "WinAnsiEncoding",
- WinAnsiEncoding, NULL, FLAG_IS_PREDEFINED);
- pdf_encoding_new_encoding("MacRomanEncoding", "MacRomanEncoding",
- MacRomanEncoding, NULL, FLAG_IS_PREDEFINED);
- pdf_encoding_new_encoding("MacExpertEncoding", "MacExpertEncoding",
- MacExpertEncoding, NULL, FLAG_IS_PREDEFINED);
+ pdf_encoding_new_encoding("WinAnsiEncoding", "WinAnsiEncoding", WinAnsiEncoding, FLAG_IS_PREDEFINED);
+ pdf_encoding_new_encoding("MacRomanEncoding", "MacRomanEncoding", MacRomanEncoding, FLAG_IS_PREDEFINED);
+ pdf_encoding_new_encoding("MacExpertEncoding", "MacExpertEncoding", MacExpertEncoding, FLAG_IS_PREDEFINED);
return;
}
@@ -394,12 +384,10 @@ pdf_init_encodings (void)
*/
static int
-pdf_encoding_new_encoding (const char *enc_name, const char *ident,
- const char **encoding_vec,
- const char *baseenc_name, int flags)
+pdf_encoding_new_encoding (const char *enc_name, const char *ident, const char **encoding_vec, int flags)
{
- int enc_id, code;
-
+ int enc_id;
+ int code;
pdf_encoding *encoding;
enc_id = enc_cache.count;
@@ -419,25 +407,11 @@ pdf_encoding_new_encoding (const char *enc_name, const char *ident,
encoding->flags = flags;
- for (code = 0; code < 256; code++)
+ for (code = 0; code < 256; code++) {
if (encoding_vec[code] && strcmp(encoding_vec[code], ".notdef")) {
encoding->glyphs[code] = NEW(strlen(encoding_vec[code])+1, char);
strcpy(encoding->glyphs[code], encoding_vec[code]);
}
-
- if (!baseenc_name && !(flags & FLAG_IS_PREDEFINED)
- && is_similar_charset(encoding->glyphs, WinAnsiEncoding)) {
- /* Dvipdfmx default setting. */
- baseenc_name = "WinAnsiEncoding";
- }
-
- /* TODO: make base encoding configurable */
- if (baseenc_name) {
- int baseenc_id = pdf_encoding_findresource(baseenc_name);
- if (baseenc_id < 0 || !pdf_encoding_is_predefined(baseenc_id))
- ERROR("Illegal base encoding %s for encoding %s\n",
- baseenc_name, encoding->enc_name);
- encoding->baseenc_id = baseenc_id;
}
if (flags & FLAG_IS_PREDEFINED)
@@ -455,24 +429,30 @@ void pdf_encoding_complete (void)
for (enc_id = 0; enc_id < enc_cache.count; enc_id++) {
if (!pdf_encoding_is_predefined(enc_id)) {
- pdf_encoding *encoding = &enc_cache.encodings[enc_id];
+ pdf_encoding *encoding = &enc_cache.encodings[enc_id];
+ const char *baseenc_name = NULL;
+ const char **baseenc_vec = NULL;
/* Section 5.5.4 of the PDF 1.5 reference says that the encoding
* of a Type 3 font must be completely described by a Differences
* array, but implementation note 56 explains that this is rather
* an incorrect implementation in Acrobat 4 and earlier. Hence,
* we do use a base encodings for PDF versions >= 1.3.
*/
- int with_base = !(encoding->flags & FLAG_USED_BY_TYPE3)
- || pdf_check_version(1, 4) >= 0;
- pdf_encoding *baseenc = (encoding->baseenc_id < 0) ?
- NULL : &enc_cache.encodings[encoding->baseenc_id];
+ int with_base = (!(encoding->flags & FLAG_USED_BY_TYPE3) || pdf_check_version(1, 4) >= 0);
+
ASSERT(!encoding->resource);
- encoding->resource = create_encoding_resource(encoding,
- with_base ? baseenc : NULL);
ASSERT(!encoding->tounicode);
- encoding->tounicode = pdf_create_ToUnicode_CMap(encoding->enc_name,
- encoding->glyphs,
- encoding->is_used);
+
+ /* Currently possible values are WinAnsiEncoding or NULL for BaseEncoding */
+ if (!(encoding->flags & FLAG_IS_PREDEFINED) && with_base) {
+ if (is_similar_charset(encoding->glyphs, WinAnsiEncoding)) {
+ /* Dvipdfmx default setting. */
+ baseenc_name = "WinAnsiEncoding";
+ baseenc_vec = WinAnsiEncoding;
+ }
+ }
+ encoding->resource = create_encoding_resource(encoding->glyphs, baseenc_name, baseenc_vec, encoding->is_used);
+ encoding->tounicode = pdf_create_ToUnicode_CMap(encoding->enc_name, encoding->glyphs, encoding->is_used);
}
}
}