Lock out configuring for EBCDIC with non-8-bit libraries.

This commit is contained in:
Philip.Hazel 2015-11-11 17:43:37 +00:00
parent 7bf5d9efd0
commit ab48e8bb73
3 changed files with 17 additions and 3 deletions

View File

@ -284,6 +284,8 @@ a factor of the size of the compiling workspace (it currently is).
82. Small optimizations in code for finding the minimum matching length. 82. Small optimizations in code for finding the minimum matching length.
83. Lock out configuring for EBCDIC with non-8-bit libraries.
Version 10.20 30-June-2015 Version 10.20 30-June-2015
-------------------------- --------------------------

View File

@ -339,13 +339,17 @@ fi
# Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled. # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
# Also check that UTF support is not requested, because PCRE2 cannot handle # Also check that UTF support is not requested, because PCRE2 cannot handle
# EBCDIC and UTF in the same build. To do so it would need to use different # EBCDIC and UTF in the same build. To do so it would need to use different
# character constants depending on the mode. # character constants depending on the mode. Also, EBCDIC cannot be used with
# 16-bit and 32-bit libraries.
# #
if test "x$enable_ebcdic" = "xyes"; then if test "x$enable_ebcdic" = "xyes"; then
enable_rebuild_chartables=yes enable_rebuild_chartables=yes
if test "x$enable_unicode" = "xyes"; then if test "x$enable_unicode" = "xyes"; then
AC_MSG_ERROR([support for EBCDIC and Unicode cannot be enabled at the same time]) AC_MSG_ERROR([support for EBCDIC and Unicode cannot be enabled at the same time])
fi fi
if test "x$enable_pcre2_16" = "xyes" -o "x$enable_pcre2_32" = "xyes"; then
AC_MSG_ERROR([EBCDIC support is available only for the 8-bit library])
fi
fi fi
# Check argument to --with-link-size # Check argument to --with-link-size

View File

@ -39,7 +39,10 @@ POSSIBILITY OF SUCH DAMAGE.
*/ */
/* We do not support both EBCDIC and Unicode at the same time. The "configure" /* We do not support both EBCDIC and Unicode at the same time. The "configure"
script prevents both being selected, but not everybody uses "configure". */ script prevents both being selected, but not everybody uses "configure". EBCDIC
is only supported for the 8-bit library, but the check for this has to be later
in this file, because the first part is not width-dependent, and is included by
pcre2test.c with CODE_UNIT_WIDTH == 0. */
#if defined EBCDIC && defined SUPPORT_UNICODE #if defined EBCDIC && defined SUPPORT_UNICODE
#error The use of both EBCDIC and SUPPORT_UNICODE is not supported. #error The use of both EBCDIC and SUPPORT_UNICODE is not supported.
@ -1803,11 +1806,16 @@ typedef struct pcre2_serialized_data {
#if defined PCRE2_CODE_UNIT_WIDTH && PCRE2_CODE_UNIT_WIDTH != 0 #if defined PCRE2_CODE_UNIT_WIDTH && PCRE2_CODE_UNIT_WIDTH != 0
/* EBCDIC is supported only for the 8-bit library. */
#if defined EBCDIC && PCRE2_CODE_UNIT_WIDTH != 8
#error EBCDIC is not supported for the 16-bit or 32-bit libraries
#endif
/* This is the largest non-UTF code point. */ /* This is the largest non-UTF code point. */
#define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH)) #define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH))
/* Internal shared data tables and variables. These are used by more than one /* Internal shared data tables and variables. These are used by more than one
of the exported public functions. They have to be "external" in the C sense, of the exported public functions. They have to be "external" in the C sense,
but are not part of the PCRE2 public API. Although the data for some of them is but are not part of the PCRE2 public API. Although the data for some of them is