Version in base suite: 8.4.24-1~deb13u1 Version in overlay suite: 8.4.26-1~deb13u1 Base version: php8.4_8.4.26-1~deb13u1 Target version: php8.4_8.4.27-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/p/php8.4/php8.4_8.4.26-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/p/php8.4/php8.4_8.4.27-1~deb13u1.dsc .github/actions/brew/action.yml | 3 .github/actions/configure-macos/action.yml | 2 .github/matrix.php | 5 .github/scripts/windows/find-target-branch.bat | 2 .github/workflows/test-suite.yml | 4 .github/workflows/test.yml | 1 NEWS | 250 TSRM/tsrm_win32.c | 13 Zend/Optimizer/escape_analysis.c | 8 Zend/Optimizer/optimize_func_calls.c | 1 Zend/Optimizer/sccp.c | 30 Zend/Optimizer/zend_call_graph.c | 5 Zend/tests/arginfo_zpp_mismatch.inc | 1 Zend/tests/bug40770.phpt | 4 Zend/tests/bug54268.phpt | 1 Zend/tests/bug76846.phpt | 12 Zend/tests/call_function_trampoline_leak.phpt | 36 Zend/tests/debug_backtrace_sensitive_named_variadic.phpt | 21 Zend/tests/fibers/destructors_013.phpt | 49 Zend/tests/fibers/destructors_014.phpt | 55 Zend/tests/fibers/destructors_015.phpt | 60 Zend/tests/fibers/get-return-after-bailout.phpt | 11 Zend/tests/gh11189.phpt | 5 Zend/tests/gh11189_1.phpt | 3 Zend/tests/gh23896.phpt | 33 Zend/tests/gh24050.phpt | 49 Zend/tests/gh24050_2.phpt | 49 Zend/tests/lazy_objects/gh21999-001.phpt | 47 Zend/tests/lazy_objects/gh21999-002.phpt | 36 Zend/tests/lazy_objects/gh23842.phpt | 32 Zend/tests/lazy_objects/oss_fuzz_536440507.phpt | 21 Zend/tests/oom_SplFixedArray___unserialize.phpt | 20 Zend/tests/oom_SplFixedArray___wakeup.phpt | 21 Zend/tests/oom_SplFixedArray_copy_ctor.phpt | 16 Zend/tests/oom_SplFixedArray_fromArray_001.phpt | 12 Zend/tests/oom_SplFixedArray_fromArray_002.phpt | 14 Zend/tests/oom_after_main_script.phpt | 26 Zend/tests/oom_array_fill_001.phpt | 18 Zend/tests/oom_array_fill_002.phpt | 18 Zend/tests/oom_array_fill_003.phpt | 18 Zend/tests/oom_array_fill_004.phpt | 18 Zend/tests/oom_array_pad_001.phpt | 12 Zend/tests/oom_array_pad_002.phpt | 12 Zend/tests/oom_array_pad_003.phpt | 12 Zend/tests/oom_array_pad_004.phpt | 12 Zend/tests/oom_array_pad_005.phpt | 12 Zend/tests/oom_array_pad_006.phpt | 12 Zend/tests/oom_array_pad_007.phpt | 12 Zend/tests/oom_array_pad_008.phpt | 12 Zend/tests/oom_call_function.phpt | 18 Zend/tests/oom_call_function_002.phpt | 27 Zend/tests/oom_call_function_003.phpt | 39 Zend/tests/oom_debug_backtrace.phpt | 21 Zend/tests/oom_debug_backtrace_args.phpt | 22 Zend/tests/oom_debug_backtrace_named_args.phpt | 29 Zend/tests/oom_error_get_last.phpt | 27 Zend/tests/oom_exception_trace.phpt | 25 Zend/tests/oom_hard_limit_exceeded.phpt | 26 Zend/tests/oom_hard_limit_exceeded_during_complilation.phpt | 42 Zend/tests/oom_interrupt.phpt | 38 Zend/tests/oom_interrupt_unfinished_call_frame.phpt | 21 Zend/tests/oom_interrupt_unfinished_call_frame_fiber.phpt | 18 Zend/tests/oom_json_decode_001.phpt | 14 Zend/tests/oom_json_decode_002.phpt | 15 Zend/tests/oom_json_decode_003.phpt | 22 Zend/tests/oom_json_decode_004.phpt | 19 Zend/tests/oom_json_decode_005.phpt | 22 Zend/tests/oom_json_decode_006.phpt | 19 Zend/tests/oom_json_decode_007.phpt | 14 Zend/tests/oom_pending_at_shutdown.phpt | 16 Zend/tests/oom_range_001.phpt | 18 Zend/tests/oom_range_002.phpt | 18 Zend/tests/oom_range_003.phpt | 18 Zend/tests/oom_range_004.phpt | 18 Zend/tests/oom_request_parsing.phpt | 130 Zend/tests/oom_soft_limit_exceeded.phpt | 19 Zend/tests/oom_soft_limit_exceeded_fcall.phpt | 19 Zend/tests/oom_soft_limit_in_callback.phpt | 27 Zend/tests/oom_str_repeat.phpt | 12 Zend/tests/oom_unserialize_001.phpt | 21 Zend/tests/oom_unserialize_002.phpt | 22 Zend/tests/oom_unserialize_003.phpt | 22 Zend/tests/oom_unserialize_004.phpt | 23 Zend/tests/oom_unserialize_005.phpt | 23 Zend/tests/oom_unserialize_006.phpt | 22 Zend/tests/oom_unserialize_007.phpt | 17 Zend/tests/oom_unserialize_008.phpt | 19 Zend/tests/oom_unserialize_009.phpt | 26 Zend/tests/oom_unserialize_011.phpt | 22 Zend/tests/oom_unserialize_012.phpt | 23 Zend/tests/oom_unserialize_013.phpt | 28 Zend/tests/oom_unserialize_014.phpt | 28 Zend/tests/oom_unserialize_015.phpt | 20 Zend/tests/oom_unserialize_016.phpt | 33 Zend/tests/property_hooks/simple_get_result_type_inference_verification.phpt | 25 Zend/tests/singleton_array.phpt | 140 Zend/zend.c | 10 Zend/zend.h | 2 Zend/zend_API.c | 32 Zend/zend_API.h | 58 Zend/zend_alloc.c | 659 Zend/zend_alloc.h | 63 Zend/zend_atomic.h | 17 Zend/zend_attributes.c | 8 Zend/zend_attributes.h | 2 Zend/zend_builtin_functions.c | 60 Zend/zend_compile.c | 1 Zend/zend_cpuinfo.c | 2 Zend/zend_exceptions.c | 4 Zend/zend_execute.c | 14 Zend/zend_execute_API.c | 57 Zend/zend_gc.c | 10 Zend/zend_globals.h | 4 Zend/zend_hash.c | 302 Zend/zend_hash.h | 60 Zend/zend_lazy_objects.c | 56 Zend/zend_llist.c | 4 Zend/zend_objects.c | 14 Zend/zend_objects.h | 1 Zend/zend_operators.c | 22 Zend/zend_operators.h | 6 Zend/zend_smart_str.c | 60 Zend/zend_smart_str.h | 47 Zend/zend_string.c | 22 Zend/zend_string.h | 116 Zend/zend_types.h | 72 Zend/zend_verify_type_inference.h | 3 Zend/zend_vm_def.h | 28 Zend/zend_vm_execute.h | 66 configure | 9874 ++++------ configure.ac | 2 debian/changelog | 8 ext/bcmath/bcmath.c | 9 ext/bcmath/libbcmath/src/div.c | 12 ext/bcmath/libbcmath/src/raise.c | 3 ext/bcmath/tests/gh17398.phpt | 4 ext/bcmath/tests/number/methods/calc_methods_zero_result_sign.phpt | 35 ext/bz2/bz2.c | 71 ext/bz2/bz2_filter.c | 6 ext/bz2/tests/bzopen_resource_fclose.phpt | 41 ext/bz2/tests/oom_bzcompress.phpt | 30 ext/bz2/tests/oom_bzdecompress.phpt | 17 ext/bz2/tests/oom_bzip2_decompress_filter.phpt | 27 ext/curl/interface.c | 72 ext/curl/tests/curl_callback_lifetime.phpt | 65 ext/curl/tests/curl_callback_lifetime_destructor.phpt | 52 ext/curl/tests/curl_setopt_callback_reentrancy.phpt | 39 ext/curl/tests/curl_setopt_ssl.phpt | 20 ext/curl/tests/oom_curl_exec.phpt | 37 ext/curl/tests/oom_curl_multi_exec.phpt | 43 ext/curl/tests/responder/get.inc | 8 ext/date/lib/parse_date.c | 229 ext/date/lib/parse_date.re | 17 ext/date/lib/parse_iso_intervals.c | 41 ext/date/lib/parse_iso_intervals.re | 5 ext/date/lib/timezonedb.h | 4242 +--- ext/date/tests/bug35499.phpt | 6 ext/date/tests/oom_date_create.phpt | 10 ext/date/tests/oom_date_create_immutable.phpt | 10 ext/date/tests/oom_date_interval_create_from_date_string.phpt | 11 ext/date/tests/oom_date_modify.phpt | 11 ext/date/tests/oom_date_parse.phpt | 11 ext/date/tests/oom_dateinterval_construct.phpt | 18 ext/date/tests/oom_dateinterval_createfromdatestring.phpt | 14 ext/date/tests/oom_dateperiod_construct.phpt | 19 ext/date/tests/oom_datetime_construct.phpt | 14 ext/date/tests/oom_datetime_modify.phpt | 14 ext/date/tests/oom_datetimeimmutable_construct.phpt | 14 ext/date/tests/oom_datetimeimmutable_modify.phpt | 14 ext/date/tests/oom_strtotime.phpt | 10 ext/dl_test/dl_test.c | 22 ext/dl_test/dl_test.stub.php | 5 ext/dl_test/dl_test_arginfo.h | 15 ext/dl_test/tests/frameless_temporary.inc | 8 ext/dl_test/tests/frameless_temporary.phpt | 53 ext/dl_test/tests/frameless_temporary_cgi.inc | 7 ext/dl_test/tests/frameless_temporary_opcache.phpt | 19 ext/dom/config.m4 | 2 ext/dom/html5_parser.c | 8 ext/dom/lexbor/lexbor/css/selectors/pseudo_state.c | 5 ext/dom/lexbor/lexbor/encoding/decode.c | 37 ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch | 2 ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch | 2 ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch | 2 ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch | 2 ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch | 2 ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch | 2 ext/dom/lexbor/patches/0007-CSS-fixed-heap-buffer-overflow-in-lexbor-contains-pa.patch | 35 ext/dom/lexbor/patches/0008-Encoding-fixed-buffer-overflows-in-malformed-decode-.patch | 97 ext/dom/node.c | 5 ext/dom/php_dom.h | 1 ext/dom/tests/DOMDocument_saveHTMLFile_failed_output_encoding.phpt | 31 ext/dom/tests/DOMXPath_reconstruct_callbacks_gc.phpt | 50 ext/dom/tests/DOMXPath_reconstruct_callbacks_ns_gc.phpt | 50 ext/dom/tests/gh23365.phpt | 53 ext/dom/tests/gh23729.phpt | 73 ext/dom/tests/gh23897.phpt | 25 ext/dom/tests/modern/css_selectors/lexbor_contains.phpt | 16 ext/dom/tests/modern/html/parser/HTMLDocument_unprefixed_attributes_in_foreign_content.phpt | 59 ext/dom/tests/oom_xpath.phpt | 22 ext/dom/tests/xpath_reentrant_context.phpt | 54 ext/dom/xpath.c | 34 ext/dom/xpath_callbacks.c | 16 ext/exif/exif.c | 114 ext/exif/tests/oom_exif_big_thumbnail.inc | 47 ext/exif/tests/oom_exif_numeric_metadata.phpt | 38 ext/exif/tests/oom_exif_read_data_tags.phpt | 38 ext/exif/tests/oom_exif_scan_jpeg_header.phpt | 29 ext/exif/tests/oom_exif_thumbnail_large_file_001.phpt | 21 ext/exif/tests/oom_exif_thumbnail_large_file_002.phpt | 22 ext/exif/tests/oom_exif_thumbnail_tiff.phpt | 32 ext/ffi/ffi.c | 34 ext/ffi/tests/callback_create_failure.phpt | 27 ext/ffi/tests/callback_dtor_call.phpt | 33 ext/ffi/tests/callback_object_lifetime.phpt | 31 ext/fileinfo/libmagic.patch | 202 ext/fileinfo/libmagic/apprentice.c | 2 ext/fileinfo/libmagic/cdf.c | 41 ext/fileinfo/tests/cdf_unknown_property_id.phpt | 13 ext/fileinfo/tests/oom_cdf_sector_chain.phpt | 76 ext/filter/filter.c | 30 ext/filter/sanitizing_filters.c | 23 ext/filter/tests/oom_filter_default_encoded.phpt | 126 ext/filter/tests/oom_filter_input.phpt | 56 ext/filter/tests/oom_filter_input_array.phpt | 56 ext/filter/tests/oom_filter_var.phpt | 17 ext/filter/tests/oom_filter_var_array.phpt | 20 ext/filter/tests/oom_filter_var_full_special_chars.phpt | 17 ext/ftp/ftp.c | 5 ext/gd/libgd/gd.c | 37 ext/gd/libgd/gd_gd2.c | 24 ext/gd/libgd/gd_gif_in.c | 8 ext/gd/libgd/gd_tga.c | 8 ext/gd/libgd/gdhelpers.h | 3 ext/gd/libgd/wbmp.c | 2 ext/gd/tests/createfromstring-overflow.phpt | 42 ext/gd/tests/gif-oob.phpt | 63 ext/gd/tests/oom_imagecreatefrombmp.phpt | 28 ext/gd/tests/oom_imagecreatefromgd2.phpt | 31 ext/gd/tests/oom_imagecreatefromgd2_chunkbuf.phpt | 39 ext/gd/tests/oom_imagecreatefromgd2_compbuf.phpt | 38 ext/gd/tests/oom_imagecreatefromgd2part.phpt | 31 ext/gd/tests/oom_imagecreatefromgd2part_chunkbuf.phpt | 39 ext/gd/tests/oom_imagecreatefromgd2part_compbuf.phpt | 38 ext/gd/tests/oom_imagecreatefromgif.phpt | 28 ext/gd/tests/oom_imagecreatefrompng.phpt | 32 ext/gd/tests/oom_imagecreatefromstring.phpt | 26 ext/gd/tests/oom_imagecreatefromtga.phpt | 36 ext/gd/tests/oom_imagecreatefromwbmp.phpt | 33 ext/gd/tests/oom_imagecreatefromxbm.phpt | 27 ext/gd/tests/oom_imagepalettetotruecolor.phpt | 17 ext/hash/hash.c | 2 ext/hash/tests/hash_pbkdf2_max_length.phpt | 4 ext/hash/tests/hash_pbkdf2_max_length_raw.phpt | 4 ext/iconv/iconv.c | 56 ext/iconv/tests/oom_iconv.phpt | 17 ext/iconv/tests/oom_iconv_mime_decode.phpt | 17 ext/iconv/tests/oom_iconv_mime_decode_headers.phpt | 13 ext/iconv/tests/oom_iconv_mime_encode.phpt | 21 ext/iconv/tests/oom_iconv_mime_encode_line_length.phpt | 13 ext/iconv/tests/oom_iconv_stream_filter.phpt | 28 ext/imap/tests/oom_imap_mime_header_decode.phpt | 13 ext/intl/collator/collator_attr.c | 16 ext/intl/collator/collator_class.h | 16 ext/intl/collator/collator_compare.c | 7 ext/intl/collator/collator_locale.c | 7 ext/intl/collator/collator_sort.c | 14 ext/intl/converter/converter.c | 11 ext/intl/dateformat/dateformat_class.c | 7 ext/intl/dateformat/dateformat_parse.c | 21 ext/intl/formatter/formatter_parse.c | 44 ext/intl/grapheme/grapheme_string.c | 32 ext/intl/grapheme/grapheme_util.c | 11 ext/intl/intl_convert.c | 42 ext/intl/intl_convert.h | 8 ext/intl/msgformat/msgformat_class.c | 6 ext/intl/normalizer/normalizer_normalize.c | 11 ext/intl/tests/clone_preserves_php_fields.phpt | 37 ext/intl/tests/collator_attribute_unconstructed.phpt | 55 ext/intl/tests/dateformat_parse_utf8_offset.phpt | 68 ext/intl/tests/grapheme_search_empty_haystack.phpt | 55 ext/intl/tests/grapheme_strpos_ascii_haystack.phpt | 56 ext/intl/tests/grapheme_strrpos_negative_offset_overlap.phpt | 32 ext/intl/tests/grapheme_strstr_canonical_match.phpt | 27 ext/intl/tests/grapheme_strstr_supplementary_prefix.phpt | 27 ext/intl/tests/oom_grapheme_str_split.phpt | 15 ext/intl/tests/oom_normalizer_normalize.phpt | 14 ext/intl/tests/oom_normalizer_normalize_func.phpt | 14 ext/intl/tests/oom_uconverter_convert.phpt | 15 ext/intl/tests/oom_uconverter_transcode.phpt | 14 ext/json/json_encoder.c | 43 ext/json/json_parser.tab.c | 57 ext/json/json_parser.y | 51 ext/json/json_scanner.c | 6 ext/json/json_scanner.re | 6 ext/json/tests/json_decode_oom_utf8_substitute.phpt | 14 ext/json/tests/json_encode_oom_escape.phpt | 11 ext/json/tests/json_encode_oom_partial_output.phpt | 11 ext/json/tests/json_encode_oom_pretty_print.phpt | 11 ext/json/tests/json_encode_oom_string_prealloc.phpt | 13 ext/libxml/libxml.c | 13 ext/mbstring/libmbfl/filters/mbfilter_qprint.c | 2 ext/mbstring/libmbfl/filters/mbfilter_utf8.c | 6 ext/mbstring/libmbfl/mbfl/mbfilter.c | 41 ext/mbstring/libmbfl/mbfl/mbfl_encoding.h | 33 ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c | 19 ext/mbstring/mb_gpc.c | 16 ext/mbstring/mbstring.c | 106 ext/mbstring/php_mbregex.c | 8 ext/mbstring/tests/gh23106.phpt | 22 ext/mbstring/tests/mb_ereg_replace_kname_unterminated_nul.phpt | 4 ext/mbstring/tests/oom_buf_growth.phpt | 17 ext/mbstring/tests/oom_mb_convert_case.phpt | 14 ext/mbstring/tests/oom_mb_convert_encoding.phpt | 14 ext/mbstring/tests/oom_mb_convert_variables.phpt | 14 ext/mbstring/tests/oom_mb_convert_variables_many.phpt | 15 ext/mbstring/tests/oom_mb_decode_mimeheader.phpt | 14 ext/mbstring/tests/oom_mb_encode_mimeheader.phpt | 14 ext/mbstring/tests/oom_mb_encode_numericentity.phpt | 16 ext/mbstring/tests/oom_mb_ereg_replace.phpt | 18 ext/mbstring/tests/oom_mb_eregi_replace.phpt | 18 ext/mbstring/tests/oom_mb_parse_str.phpt | 14 ext/mbstring/tests/oom_mb_parse_str_vars.phpt | 22 ext/mbstring/tests/oom_mb_split.phpt | 17 ext/mbstring/tests/oom_mb_str_pad.phpt | 14 ext/mbstring/tests/oom_mb_str_split.phpt | 13 ext/mbstring/tests/oom_mb_str_split_filter.phpt | 14 ext/mbstring/tests/oom_mb_str_split_fixed_width.phpt | 14 ext/mbstring/tests/oom_mb_str_split_length.phpt | 15 ext/mbstring/tests/oom_mb_strcut_filter.phpt | 19 ext/mbstring/tests/oom_mb_strcut_length.phpt | 12 ext/mbstring/tests/oom_mb_strimwidth.phpt | 17 ext/mbstring/tests/oom_mb_strtoupper.phpt | 18 ext/mbstring/tests/oom_mb_substr_count.phpt | 17 ext/mbstring/tests/oom_mb_substr_length.phpt | 12 ext/mbstring/tests/surrogates_to_utf8.phpt | 47 ext/mysqli/mysqli.c | 1 ext/mysqli/mysqli_nonapi.c | 2 ext/mysqli/mysqli_prop.c | 6 ext/mysqli/tests/gh22854.phpt | 83 ext/mysqli/tests/mysqli_stmt_close_killed_connection.phpt | 32 ext/mysqli/tests/mysqli_stmt_next_result_field_count.phpt | 34 ext/mysqlnd/mysqlnd_ext_plugin.h | 2 ext/mysqlnd/mysqlnd_ps.c | 13 ext/opcache/ZendAccelerator.c | 33 ext/opcache/ZendAccelerator.h | 11 ext/opcache/jit/ir/ir_private.h | 5 ext/opcache/jit/ir/ir_x86.dasc | 19 ext/opcache/jit/zend_jit.c | 16 ext/opcache/jit/zend_jit_ir.c | 72 ext/opcache/jit/zend_jit_trace.c | 16 ext/opcache/tests/file_cache_frameless_handler.phpt | 81 ext/opcache/tests/jit/frameless_interrupt_001.phpt | 31 ext/opcache/tests/jit/frameless_interrupt_002.phpt | 31 ext/opcache/tests/jit/frameless_interrupt_003.phpt | 31 ext/opcache/tests/jit/gh23693.phpt | 41 ext/opcache/tests/jit/gh23991.phpt | 36 ext/opcache/tests/opt/call_graph_stack_overflow.phpt | 17 ext/opcache/tests/opt/dce_015.phpt | 45 ext/opcache/tests/opt/dce_016.phpt | 50 ext/opcache/tests/opt/dce_017.phpt | 55 ext/opcache/tests/opt/gh24063.phpt | 46 ext/opcache/tests/opt/oss_fuzz_546798343.phpt | 19 ext/opcache/tests/opt/sccp_isset_dim_partial_object.phpt | 36 ext/opcache/zend_file_cache.c | 8 ext/opcache/zend_persist.c | 67 ext/openssl/tests/stream_crypto_enable_timeout_blocking.phpt | 53 ext/openssl/tests/stream_eof_after_close_notify.phpt | 58 ext/openssl/xp_ssl.c | 7 ext/pcntl/pcntl.c | 78 ext/pcntl/tests/gh23986.phpt | 29 ext/pcntl/tests/pcntl_cpuaffinity_bound.phpt | 52 ext/pcntl/tests/pcntl_qosclass.phpt | 5 ext/pcntl/tests/pcntl_signal_dispatch_exception_2.phpt | 44 ext/pcntl/tests/pcntl_signal_dispatch_exception_3.phpt | 47 ext/pcntl/tests/pcntl_signal_dispatch_exception_pending.phpt | 24 ext/pcntl/tests/pcntl_signal_dispatch_exception_pending_user_frame.phpt | 33 ext/pcre/php_pcre.c | 115 ext/pcre/tests/oom_preg_filter.phpt | 11 ext/pcre/tests/oom_preg_match_all.phpt | 11 ext/pcre/tests/oom_preg_match_all_named_groups.phpt | 17 ext/pcre/tests/oom_preg_match_captures.phpt | 12 ext/pcre/tests/oom_preg_replace.phpt | 11 ext/pcre/tests/oom_preg_replace_callback.phpt | 11 ext/pcre/tests/oom_preg_replace_callback_array.phpt | 11 ext/pcre/tests/oom_preg_split.phpt | 11 ext/pdo/pdo_dbh.c | 19 ext/pdo/pdo_stmt.c | 170 ext/pdo/php_pdo_driver.h | 3 ext/pdo/tests/get_gc_bound_params.phpt | 66 ext/pdo/tests/pdo_030.phpt | 23 ext/pdo/tests/pdo_bindcolumn_unknown_column.phpt | 41 ext/pdo/tests/pdo_setfetchmode_atomic.phpt | 73 ext/pdo/tests/pdo_setfetchmode_reentrant_fetch.phpt | 75 ext/pdo/tests/pdo_setfetchmode_reentrant_setmode.phpt | 53 ext/pdo_dblib/dblib_driver.c | 7 ext/pdo_dblib/dblib_stmt.c | 14 ext/pdo_dblib/tests/gh23741.phpt | 38 ext/pdo_dblib/tests/gh23741_2.phpt | 27 ext/pdo_firebird/firebird_statement.c | 2 ext/pdo_firebird/tests/gh23758.phpt | 52 ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset_columncount.phpt | 39 ext/pdo_odbc/tests/getcolumnmeta_bounds.phpt | 49 ext/pdo_sqlite/tests/gh23962.phpt | 31 ext/pdo_sqlite/tests/pdo_driver_options_weakref.phpt | 35 ext/pdo_sqlite/tests/pdo_sqlite_failed_execute.phpt | 83 ext/pdo_sqlite/tests/pdo_sqlite_reentrant_bind.phpt | 102 ext/readline/readline_cli.c | 8 ext/reflection/php_reflection.c | 2 ext/session/mod_user.c | 8 ext/session/php_session.h | 2 ext/session/session.c | 73 ext/session/tests/rfc1867_incomplete_class_reserved_props.phpt | 139 ext/session/tests/rfc1867_no_user_code.phpt | 217 ext/session/tests/rfc1867_sid_invalid.phpt | 54 ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt | 5 ext/session/tests/user_session_module/session_create_sid_return_destructor_throws.phpt | 37 ext/session/tests/user_session_module/session_regenerate_id_create_sid_throws.phpt | 57 ext/session/tests/user_session_module/session_start_create_sid_throws.phpt | 64 ext/session/tests/user_session_module/session_start_strict_recreate_create_sid_fails.phpt | 49 ext/shmop/shmop.c | 5 ext/shmop/tests/tsrm_shmat.phpt | 24 ext/simplexml/simplexml.c | 82 ext/simplexml/tests/oom_array_cast.phpt | 20 ext/simplexml/tests/oom_json_encode.phpt | 20 ext/simplexml/tests/oom_tostring.phpt | 15 ext/simplexml/tests/oom_xpath.phpt | 20 ext/simplexml/tests/reconstruct_with_retained_child.phpt | 19 ext/snmp/tests/gh23453.phpt | 2 ext/soap/php_encoding.c | 17 ext/soap/php_http.c | 28 ext/soap/php_sdl.c | 7 ext/soap/soap.c | 31 ext/soap/tests/GHSA-rgrp-mwpx-f6rm-href-chain.phpt | 6 ext/soap/tests/GHSA-rgrp-mwpx-f6rm-href-cycle.phpt | 6 ext/soap/tests/bugs/GHSA-cj93-vc83-wgqv.phpt | 1 ext/soap/tests/bugs/bug62900.phpt | 11 ext/soap/tests/bugs/gh22895.phpt | 96 ext/soap/tests/load_wsdl_ex-failure-leak.phpt | 18 ext/soap/tests/load_wsdl_ex-failure-leak.wsdl | 7 ext/soap/tests/oom_http_server.inc | 69 ext/soap/tests/oom_soap_response.inc | 33 ext/soap/tests/oom_soapclient_call.phpt | 16 ext/soap/tests/oom_soapclient_dorequest_chunked.phpt | 24 ext/soap/tests/oom_soapclient_dorequest_close.phpt | 28 ext/soap/tests/oom_soapclient_dorequest_content_length.phpt | 24 ext/soap/tests/oom_soapclient_response_headers.phpt | 26 ext/soap/tests/oom_soapclient_soapcall.phpt | 16 ext/soap/tests/oom_soapserver_handle_array.phpt | 30 ext/soap/tests/oom_soapserver_handle_headers.phpt | 26 ext/soap/tests/oom_soapserver_handle_parameters.phpt | 25 ext/sockets/sockets.c | 23 ext/sockets/tests/bug63000.phpt | 17 ext/sockets/tests/socket_select_fd_setsize_overflow.phpt | 50 ext/spl/spl_fixedarray.c | 117 ext/spl/tests/SplFixedArray_setSize_destruct_reinit_during_clear.phpt | 68 ext/spl/tests/SplFixedArray_subclass_without_parent_construct.phpt | 63 ext/sqlite3/php_sqlite3_structs.h | 3 ext/sqlite3/sqlite3.c | 52 ext/sqlite3/tests/sqlite3_close_from_callback.phpt | 35 ext/sqlite3/tests/sqlite3_close_from_callback_aggregate.phpt | 41 ext/sqlite3/tests/sqlite3_close_from_callback_authorizer.phpt | 38 ext/sqlite3/tests/sqlite3_close_from_callback_collation.phpt | 39 ext/standard/array.c | 69 ext/standard/assert.c | 4 ext/standard/basic_functions.c | 17 ext/standard/basic_functions.h | 1 ext/standard/config.m4 | 2 ext/standard/file.c | 20 ext/standard/filters.c | 2 ext/standard/head.c | 14 ext/standard/html.c | 12 ext/standard/image.c | 15 ext/standard/iptc.c | 3 ext/standard/levenshtein.c | 29 ext/standard/pack.c | 5 ext/standard/php_incomplete_class.h | 5 ext/standard/php_var.h | 2 ext/standard/proc_open.c | 32 ext/standard/sha1.c | 6 ext/standard/string.c | 180 ext/standard/tests/GHSA-96wq-48vp-hh57.phpt | 3 ext/standard/tests/array/oom_array_chunk.phpt | 12 ext/standard/tests/array/oom_array_map_zip.phpt | 12 ext/standard/tests/file/fread_oom_chunk_size.phpt | 16 ext/standard/tests/file/fread_oom_filter_chunk_size.phpt | 17 ext/standard/tests/file/fread_oom_length.phpt | 15 ext/standard/tests/file/ghsa-9f67-6fw4-hpfp-win32.phpt | 22 ext/standard/tests/file/oom_file.phpt | 22 ext/standard/tests/file/oom_file_get_contents.phpt | 21 ext/standard/tests/filters/qp_decode_lowercase.phpt | 20 ext/standard/tests/general_functions/proc_open_descriptor_0_setup_failure.phpt | 29 ext/standard/tests/general_functions/proc_open_socket_descriptor_0_setup_failure.phpt | 29 ext/standard/tests/image/iptcembed_reentrant.phpt | 34 ext/standard/tests/image/oom_getimagesize_cws.inc | 17 ext/standard/tests/image/oom_getimagesize_cws.phpt | 27 ext/standard/tests/image/oom_getimagesize_xbm.phpt | 23 ext/standard/tests/image/oom_getimagesizefromstring_cws.phpt | 27 ext/standard/tests/serialize/incomplete_class_raw_payload_markers.phpt | 15 ext/standard/tests/streams/bug61115-1.phpt | 3 ext/standard/tests/streams/oom_stream_copy_to_stream_memory.phpt | 22 ext/standard/tests/streams/oom_stream_get_contents.phpt | 21 ext/standard/tests/streams/persistent_stream_context_shutdown.phpt | 63 ext/standard/tests/streams/stream_get_line_oom_chunk_size.phpt | 16 ext/standard/tests/strings/chunk_split_variation3.phpt | 18 ext/standard/tests/strings/oom_explode.phpt | 17 ext/standard/tests/strings/oom_implode.phpt | 15 ext/standard/tests/strings/oom_levenshtein.phpt | 15 ext/standard/tests/strings/oom_nl2br.phpt | 15 ext/standard/tests/strings/oom_setcookie_value.phpt | 15 ext/standard/tests/strings/oom_str_getcsv.phpt | 17 ext/standard/tests/strings/oom_str_ireplace.phpt | 15 ext/standard/tests/strings/oom_str_replace.phpt | 15 ext/standard/tests/strings/oom_str_split.phpt | 17 ext/standard/tests/strings/oom_str_word_count.phpt | 17 ext/standard/tests/strings/oom_strtr.phpt | 15 ext/standard/tests/strings/oom_substr_replace.phpt | 15 ext/standard/tests/strings/oom_unpack.phpt | 17 ext/standard/tests/strings/sha1_file_stream_error.phpt | 77 ext/standard/tests/strings/str_pad_variation1.phpt | 2 ext/standard/tests/strings/wordwrap_memory_limit_002.phpt | 19 ext/standard/tests/strings/wordwrap_memory_limit_003.phpt | 19 ext/standard/tests/strings/wordwrap_memory_limit_004.phpt | 21 ext/standard/tests/strings/wordwrap_trailing_break.phpt | 28 ext/standard/url_scanner_ex.c | 7 ext/standard/url_scanner_ex.h | 1 ext/standard/url_scanner_ex.re | 7 ext/standard/var.c | 62 ext/standard/var_unserializer.c | 139 ext/standard/var_unserializer.re | 139 ext/tidy/tests/reparse_node.phpt | 66 ext/tidy/tidy.c | 54 ext/tokenizer/tests/token_get_all_TOKEN_PARSE_oom_feedback.phpt | 15 ext/tokenizer/tokenizer.c | 64 ext/xml/tests/oom_xml_parse_attributes.phpt | 22 ext/xml/tests/oom_xml_parse_into_struct.phpt | 16 ext/xml/tests/oom_xml_parse_ns.phpt | 27 ext/xml/tests/xml_set_handler_reentrancy.phpt | 43 ext/xml/xml.c | 51 ext/xmlreader/php_xmlreader.c | 10 ext/xmlreader/tests/oom_xmlreader_getattribute.phpt | 32 ext/xmlreader/tests/oom_xmlreader_getattributeno.phpt | 32 ext/xmlreader/tests/oom_xmlreader_getattributens.phpt | 31 ext/xmlreader/tests/oom_xmlreader_lookupnamespace.phpt | 32 ext/xmlreader/tests/oom_xmlreader_readinnerxml.phpt | 36 ext/xmlreader/tests/oom_xmlreader_readouterxml.phpt | 32 ext/xmlreader/tests/oom_xmlreader_readstring.phpt | 36 ext/xmlwriter/php_xmlwriter.c | 6 ext/xsl/php_xsl.h | 1 ext/xsl/tests/gh23730.phpt | 81 ext/xsl/tests/gh23897.phpt | 36 ext/xsl/tests/throw_in_autoload.phpt | 4 ext/xsl/xsltprocessor.c | 12 ext/zend_test/observer.c | 4 ext/zend_test/php_test.h | 1 ext/zend_test/test.c | 174 ext/zend_test/test.stub.php | 11 ext/zend_test/test_arginfo.h | 32 ext/zend_test/tests/observer_bug81430_2.phpt | 21 ext/zend_test/tests/observer_bug81435.phpt | 13 ext/zend_test/tests/observer_error_01.phpt | 18 ext/zend_test/tests/observer_fiber_functions_03.phpt | 17 ext/zend_test/tests/zend_test_handle_post_data.phpt | 85 ext/zip/php_zip.c | 44 ext/zip/php_zip.h | 1 ext/zip/tests/gh18431.phpt | 6 ext/zip/tests/gh23747.phpt | 102 ext/zip/tests/oo_extract_array_keys.phpt | 38 ext/zlib/tests/oom_deflate_add.phpt | 34 ext/zlib/tests/oom_gzcompress.phpt | 32 ext/zlib/tests/oom_gzdecode.phpt | 26 ext/zlib/tests/oom_gzfile.phpt | 35 ext/zlib/tests/oom_gzgets.phpt | 36 ext/zlib/tests/oom_gzpassthru.phpt | 37 ext/zlib/tests/oom_inflate_add.phpt | 27 ext/zlib/tests/oom_readgzfile.phpt | 36 ext/zlib/tests/oom_zlib_inflate_filter.phpt | 37 ext/zlib/zlib.c | 48 ext/zlib/zlib_filter.c | 6 main/SAPI.c | 4 main/fopen_wrappers.c | 8 main/main.c | 50 main/php_config.h.in | 8 main/php_streams.h | 2 main/php_variables.c | 34 main/php_version.h | 6 main/rfc1867.c | 216 main/snprintf.c | 2 main/streams/memory.c | 18 main/streams/streams.c | 78 run-tests.php | 14 sapi/cli/php_cli.c | 11 sapi/cli/php_cli_server.c | 29 sapi/cli/tests/oom_request_parsing_next_request.phpt | 36 sapi/cli/tests/oom_shutdown_function_next_request.phpt | 37 sapi/cli/tests/php_cli_server_ipv6_error_message.phpt | 6 sapi/cli/tests/php_cli_server_reset_before_accept.phpt | 26 sapi/fpm/tests/bug77023-pm-dynamic-blocking-sigquit.phpt | 1 sapi/fpm/tests/request_parse_body_multipart_options_post_max_size.phpt | 52 sapi/fuzzer/fuzzer-sapi.c | 8 sapi/phpdbg/phpdbg.c | 2 tests/basic/GHSA-2cv3-554h-jpmh_multipart.phpt | 37 tests/basic/GHSA-2cv3-554h-jpmh_urlencoded.phpt | 29 tests/basic/GHSA-f883-x959-3vr9_001.phpt | 20 tests/basic/GHSA-f883-x959-3vr9_002.phpt | 21 tests/basic/GHSA-f883-x959-3vr9_003.phpt | 21 tests/basic/GHSA-f883-x959-3vr9_004.phpt | 23 tests/basic/GHSA-f883-x959-3vr9_005.phpt | 23 tests/basic/GHSA-f883-x959-3vr9_006.phpt | 43 tests/basic/GHSA-f883-x959-3vr9_007.inc | 3 tests/basic/GHSA-f883-x959-3vr9_007.phpt | 63 tests/basic/GHSA-f883-x959-3vr9_008.phpt | 44 tests/basic/GHSA-f883-x959-3vr9_009.phpt | 44 tests/basic/GHSA-f883-x959-3vr9_010.phpt | 45 tests/basic/GHSA-f883-x959-3vr9_011.phpt | 20 tests/basic/oom_rfc1867.inc | 88 tests/basic/oom_rfc1867_array_upload_name.phpt | 45 tests/basic/oom_rfc1867_early_report.phpt | 34 tests/basic/oom_rfc1867_field_name.phpt | 25 tests/basic/oom_rfc1867_files.phpt | 29 tests/basic/oom_rfc1867_files_registration.phpt | 58 tests/basic/oom_rfc1867_files_registration_full_path.phpt | 26 tests/basic/oom_rfc1867_form_value.phpt | 19 tests/basic/oom_rfc1867_header_continuation.phpt | 18 tests/basic/oom_rfc1867_header_count.phpt | 18 tests/basic/oom_rfc1867_long_header_line.phpt | 45 tests/basic/oom_rfc1867_mb_encoding.phpt | 114 tests/basic/oom_rfc1867_mb_skipif.inc | 5 tests/basic/oom_rfc1867_post_vars.phpt | 16 tests/basic/oom_rfc1867_session_skipif.inc | 5 tests/basic/oom_rfc1867_skipif.inc | 7 tests/basic/oom_rfc1867_target.inc | 2 tests/basic/oom_rfc1867_upload_progress.phpt | 98 tests/output/gh15179.phpt | 2 tests/output/oom_in_internal_output_handler.phpt | 20 tests/security/open_basedir_nul_win32.phpt | 57 636 files changed, 24672 insertions(+), 8901 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpuof88id7/php8.4_8.4.26-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpuof88id7/php8.4_8.4.27-1~deb13u1.dsc: no acceptable signature found diff -Nru php8.4-8.4.26/.github/actions/brew/action.yml php8.4-8.4.27/.github/actions/brew/action.yml --- php8.4-8.4.26/.github/actions/brew/action.yml 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/.github/actions/brew/action.yml 2026-10-19 14:38:59.000000000 +0000 @@ -32,4 +32,5 @@ t1lib \ libxml2 \ libjpeg \ - libxslt + libxslt \ + openssl@3 diff -Nru php8.4-8.4.26/.github/actions/configure-macos/action.yml php8.4-8.4.27/.github/actions/configure-macos/action.yml --- php8.4-8.4.26/.github/actions/configure-macos/action.yml 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/.github/actions/configure-macos/action.yml 2026-10-19 14:38:59.000000000 +0000 @@ -11,7 +11,7 @@ set -x BREW_OPT="$(brew --prefix)"/opt export PATH="$BREW_OPT/bison/bin:$PATH" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$BREW_OPT/openssl/lib/pkgconfig" + export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$BREW_OPT/openssl@3/lib/pkgconfig" export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$BREW_OPT/curl/lib/pkgconfig" export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$BREW_OPT/libffi/lib/pkgconfig" export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$BREW_OPT/libxml2/lib/pkgconfig" diff -Nru php8.4-8.4.26/.github/matrix.php php8.4-8.4.27/.github/matrix.php --- php8.4-8.4.26/.github/matrix.php 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/.github/matrix.php 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,8 @@ 'master', 'ref' => 'master', 'version' => [8, 6]], + ['name' => 'master', 'ref' => 'master', 'version' => [8, 7]], + ['name' => 'PHP-8.6', 'ref' => 'PHP-8.6', 'version' => [8, 6]], ['name' => 'PHP-8.5', 'ref' => 'PHP-8.5', 'version' => [8, 5]], ['name' => 'PHP-8.4', 'ref' => 'PHP-8.4', 'version' => [8, 4]], ['name' => 'PHP-8.3', 'ref' => 'PHP-8.3', 'version' => [8, 3]], @@ -128,7 +129,7 @@ $jobs['MACOS']['matrix'] = $all_variations ? ['arch' => $test_arm ? ['X64', 'ARM64'] : ['X64'], 'debug' => [true, false], 'zts' => [true, false]] : ['include' => [['arch' => $test_arm ? 'ARM64' : 'X64', 'debug' => true, 'zts' => false]]]; - $jobs['MACOS']['config']['arm64_version'] = version_compare($php_version, '8.4', '>=') ? '15' : '14'; + $jobs['MACOS']['config']['version'] = version_compare($php_version, '8.4', '>=') ? '26' : '15'; } if ($all_jobs || $test_msan) { $jobs['MSAN'] = true; diff -Nru php8.4-8.4.26/.github/scripts/windows/find-target-branch.bat php8.4-8.4.27/.github/scripts/windows/find-target-branch.bat --- php8.4-8.4.26/.github/scripts/windows/find-target-branch.bat 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/.github/scripts/windows/find-target-branch.bat 2026-10-19 14:38:59.000000000 +0000 @@ -3,6 +3,6 @@ for /f "usebackq tokens=3" %%i in (`findstr PHP_MAJOR_VERSION main\php_version.h`) do set BRANCH=%%i for /f "usebackq tokens=3" %%i in (`findstr PHP_MINOR_VERSION main\php_version.h`) do set BRANCH=%BRANCH%.%%i -if /i "%BRANCH%" equ "8.6" ( +if /i "%BRANCH%" equ "8.7" ( set BRANCH=master ) diff -Nru php8.4-8.4.26/.github/workflows/test-suite.yml php8.4-8.4.27/.github/workflows/test-suite.yml --- php8.4-8.4.26/.github/workflows/test-suite.yml 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/.github/workflows/test-suite.yml 2026-10-19 14:38:59.000000000 +0000 @@ -312,7 +312,7 @@ fail-fast: false matrix: ${{ fromJson(inputs.branch).jobs.MACOS.matrix }} name: "MACOS_${{ matrix.arch }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" - runs-on: macos-${{ matrix.arch == 'X64' && '15-intel' || fromJson(inputs.branch).jobs.MACOS.config.arm64_version }} + runs-on: macos-${{ fromJson(inputs.branch).jobs.MACOS.config.version }}${{ matrix.arch == 'X64' && '-intel' || '' }} timeout-minutes: 180 steps: - name: git checkout @@ -853,7 +853,7 @@ PHP_BUILD_CACHE_BASE_DIR: C:\build-cache PHP_BUILD_OBJ_DIR: C:\obj PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk - PHP_BUILD_SDK_BRANCH: php-sdk-2.8.2 + PHP_BUILD_SDK_BRANCH: php-sdk-2.8.4 PHP_BUILD_CRT: ${{ fromJson(inputs.branch).jobs.WINDOWS.config.vs_crt_version }} PLATFORM: ${{ matrix.x64 && 'x64' || 'x86' }} THREAD_SAFE: "${{ matrix.zts && '1' || '0' }}" diff -Nru php8.4-8.4.26/.github/workflows/test.yml php8.4-8.4.27/.github/workflows/test.yml --- php8.4-8.4.26/.github/workflows/test.yml 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/.github/workflows/test.yml 2026-10-19 14:38:59.000000000 +0000 @@ -18,6 +18,7 @@ - PHP-8.3 - PHP-8.4 - PHP-8.5 + - PHP-8.6 - master pull_request: paths-ignore: *ignore_paths diff -Nru php8.4-8.4.26/NEWS php8.4-8.4.27/NEWS --- php8.4-8.4.26/NEWS 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/NEWS 2026-10-19 14:38:59.000000000 +0000 @@ -1,5 +1,253 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +22 Oct 2026, PHP 8.4.27 + +- Core: + . Fixed GHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp (Avoid state corruption via + bailout). (CVE-2026-109618, CVE-2026-109619) (Arnaud, ilutov, Jakub Zelenka, + ndossche, Nicolas Grekas) + . Fix GH-21999: GC inconsistency with lazy object, var_dump(), and object + comparison. (Arnaud) + . Fixed OSS-Fuzz #536440507 (Immutable class incorrect assertion). + (ndossche) + . Fixed AVX being reported as supported when the OS has not enabled AVX + state. (Ilia Alshanetsky) + . Fixed GH-23980 (ZEND_ASSERT violation @ ZEND_INCLUDE_OR_EVAL). (ndossche) + . Fixed bug GH-23896 (Assertion failure in zend_call_function() after a + throwing deprecation). (lazerg) + . Fixed use-after-free when a dl()-loaded extension declares a frameless + function and a later request calls it. (Ilia Alshanetsky) + . Fixed System V shared memory emulation for Windows attaching segments past + the end of their mapping. (Ilia Alshanetsky) + . Fixed bug GH-24050 (GC frees an object still held by a resurrected closure + when (object) and use share an array). (David Carlier) + . Fixed exception thrown by destructor during GC in a Fiber not being rethrown + into the frame that triggered the GC. (Nicolas Grekas) + +- BCMath: + . Fixed BcMath\Number results that truncate to zero keeping a negative sign + and comparing less than zero. (Ilia Alshanetsky) + +- BZ2: + . Fixed double close of the descriptor and use-after-free of the inner + stream when bzopen() is given a stream resource. (Jakub Zelenka) + +- CLI: + . Fix GH-22567 (Windows ZTS CLI SAPI should refresh its TSRMLS cache during + request activation). (matyhtf) + . Fixed bug GH-23764 (Built-in server leaks a file descriptor on every HEAD + request for a static file). (jakubskopal) + . Fixed crash in the built-in server when a client is reset before being + accepted. (David Carlier) + . Fixed the built-in server truncating an error page and leaking its + unsent part after a partial socket write. (Ilia Alshanetsky) + +- DOM: + . Fixed use-after-free when re-constructing a DOMXPath whose php:function + registrations are freed while still reachable from the cycle collector. + (Ilia Alshanetsky) + . Fixed bug GH-23365 (DOMNode::insertBefore($n, $n) drops the node and + leaves a self-referencing sibling list). (David Carlier) + . Fixed Dom\HTMLDocument::getElementById() not finding ids of SVG and + MathML elements. (Ilia Alshanetsky) + . Fixed Dom\HTMLDocument giving attributes the namespace of their element + when a fragment is parsed with an xlink, xml or xmlns context element. + (Ilia Alshanetsky) + . Fixed bug GH-23729 (DOMXPath::__construct() use-after-free during an + evaluation). (David Carlier) + . Fixed bug GH-23897 (php:function() assertion failure after a failed + registerPHPFunctions()). (David Carlier) + . Fixed DOMXPath and Dom\XPath losing the context node and in-scope + namespaces of an evaluation after a php:function() callback evaluated + another expression on the same object. (Ilia Alshanetsky) + +- FFI: + . Fixed crashes with FFI callbacks created from __call() trampolines + and array callables whose object is released. (Ilia Alshanetsky) + +- FTP: + . Fixed bug GH-23619 (cryptic error on servers that don't support TLS + session resumption on data connection). (ndossche) + +- GD: + . Fixed undefined behavior with GD2 images with `INT_MAX`-sized chunks. + (DanielEScherzer, cmb) + . Fixed undefined behavior with GIFs with problematic LZW compression data. + (DanielEScherzer, vapier) + +- Intl: + . Fixed IntlDateFormatter::parse(), localtime() and parseToCalendar() + treating the offset as UTF-16 code units instead of bytes. + (Ilia Alshanetsky) + . Fixed cloning IntlDateFormatter and MessageFormatter losing PHP-side state + such as dateType, timeType, calendar and the message pattern. + (Ilia Alshanetsky) + . Fixed Collator attribute and strength methods not rejecting an + unconstructed Collator. (Ilia Alshanetsky) + . Fixed grapheme_strstr() and grapheme_stristr() returning incorrect substrings + when supplementary characters precede the match. (Weilin Du) + . Fixed grapheme_strstr() and grapheme_strpos() missing canonically + equivalent matches, and grapheme searches reporting ICU errors for empty + haystacks. (Weilin Du) + . Fixed grapheme_strrpos() and grapheme_strripos() skipping overlapping matches + when using a negative offset. (Weilin Du) + +- Lexbor: + . Merge patches lexbor/lexbor@8a14bc0 and lexbor/lexbor@f67ce4b, fixing a + heap buffer overflow in :lexbor-contains() parsing and buffer overflows + in malformed decode replay. (alexandre-daubois) + +- MBString: + . Fixed bug GH-23106 (mb_strpos() reads past the end of a haystack ending in + a truncated UTF-8 sequence). (Lazizbek Ergashev) + . Fixed mbstring functions emitting surrogates in UTF-8 output and flagging + it as valid UTF-8. (Nicolas Grekas) + +- MySQLi: + . Fix GH-22854: Fixed failed assertion when accessing mysqli property after + failed reconnection. (Kamil Tekiela) + +- MySQLnd: + . Fixed field_count not resetting on OK packet. (Kamil Tekiela) + . Fixed memory leak when closing a prepared statement after its connection + was killed. (Kamil Tekiela) + +- Opcache: + . Fixed OSS-Fuzz #546798343 (Heap-buffer-overflow in optimizer with + FCCs and inlining). (ndossche) + . Fixed bug GH-23693 (Tracing JIT produces wrong results for a guard on a + loop-invariant addition). (Ilia Alshanetsky) + . Fixed OSS-Fuzz #5674034779193344 (Read of uninitialized memory in + is_cacheable_stream_path()). (ndossche) + . Fix zend_analyze_calls() call_stack buffer overrun. (Mrmaxmeier) + . Fixed bug GH-23637 (PHP-FPM worker SIGSEGV: run_time_cache map_ptr offset + beyond CG(map_ptr_last) when a class is reached through the CE cache). + (David Carlier) + . Fix multiple incorrect DCE due to unsound escape analysis. (ndossche, + arnaud-lb) + . Fixed bug GH-24063 (OPcache optimizer folds `$cond ? -0.0 : 0.0` into a + single `-0.0` constant). (lazerg) + . Fixed crash when a file cache is reused with a different set of + extensions declaring frameless functions. (Ilia Alshanetsky) + . Fixed bug GH-23991 (JIT generates invalid IR for multiple recursive calls). + (ndossche) + . Fix SCCP evaluation of isset()/empty() on dimension of non-escaping object. + (ndossche) + +- OpenSSL: + . Fixed stream_socket_enable_crypto() leaving the socket non-blocking + after a handshake timeout. (Ilia Alshanetsky) + . Fixed feof() on a TLS stream staying false after a close_notify on Windows. + (Jakub Zelenka) + +- PCNTL: + . Fixed pcntl_signal_dispatch() dropping the queued signals when it runs while + an exception is pending. (nicolas-grekas) + . Fixed pcntl_signal_dispatch() dropping the signals queued behind a handler + that throws. (nicolas-grekas) + . Fixed pcntl_setcpuaffinity() error message advertising the cpu count as + the inclusive upper bound. (lacatoire) + . Fixed pcntl_setqos_class() requiring its optional $qos_class argument. + (lacatoire) + . Fixed bug GH-23986 (/proc/self paths resolve to the parent process after + pcntl_fork()). (Lazizbek Ergashev) + +- PDO: + . Fixed PDOStatement::getColumnMeta() reading out of bounds for an invalid + column index. (Ilia Alshanetsky) + . Fixed PDOStatement::bindColumn() registering a binding for a column name + that is not in the result set. (Ilia Alshanetsky) + . Fixed PDOStatement::execute() leaving the previous result available + after a failed execution. (Ilia Alshanetsky) + . Fixed a use-after-free when bindValue()/execute()/closeCursor() is called + from a bound parameter's __toString() during execute(). (Ilia Alshanetsky) + . Fixed bug GH-23962 (Destroying a persistent PDO instance rolls back a + transaction still in use by another instance). (Lazizbek Ergashev) + . Fixed PDO::setAttribute() installing a PDO::ATTR_STATEMENT_CLASS class + whose constructor arguments it rejects. (Ilia Alshanetsky) + . Fixed PDO::ATTR_STATEMENT_CLASS constructor_args type errors reporting + "array given" regardless of the value passed. (Ilia Alshanetsky) + . Fixed PDOStatement::bindParam() and bindColumn() leaking the driver + options value. (Ilia Alshanetsky) + . Fixed PDOStatement not reporting its bound parameters and columns to the + cycle collector. (Ilia Alshanetsky) + . Fixed PDOStatement::setFetchMode() not applying changes atomically. + (Ilia Alshanetsky) + +- PDO_DBLIB: + . Fixed bug GH-23741 (segfault after a failed query inside a PDO + transaction). Errors raised by beginTransaction(), commit(), rollBack() + and lastInsertId() are now reported instead of being dropped. + (Ilia Alshanetsky) + +- PDO_Firebird: + . Fixed bug GH-23758 (PDO_Firebird returns null for non-null empty BLOBs). + (Lazizbek Ergashev) + +- Readline: + . Fixed a heap over-read in the interactive shell prompt when cli.prompt is + set to an empty string. (Ilia Alshanetsky) + +- Session: + . Fixed session_start() continuing after a failed create_sid() when + session.use_strict_mode rejects the supplied ID. (Ilia Alshanetsky) + . Fixed exceptions from user-defined create_sid() handlers being replaced + by return-value validation errors. (Ilia Alshanetsky) + +- SimpleXML: + . Fixed reconstructing a SimpleXMLElement freeing a child element that + another variable still references. (Ilia Alshanetsky) + +- SOAP: + . Fixed bug GH-22895 (Heap use-after-free while encoding a Traversable with + an illegal key). (David Carlier) + . Fixed memory leak when load_wsdl_ex() failed to load. (DanielEScherzer) + +- Sockets: + . Fixed socket_select() silently truncating sets larger than FD_SETSIZE on + Windows. (David Carlier) + +- SPL: + . Fixed SplFixedArray::setSize() doing nothing on subclasses whose + constructor does not call parent::__construct(). (Marc Bennewitz) + . Fixed memory leak when __construct(), __wakeup() or __unserialize() is + called from an element destructor during setSize(0). (Marc Bennewitz) + +- SQLite: + . Fixed a crash when SQLite3::close() is called from a userland callback. + (Ilia Alshanetsky) + +- Standard: + . Fixed sha1_file() returning a digest for incomplete data after a stream + read failure. (Ilia Alshanetsky) + . Fixed iptcembed() corrupting JPEG headers when called recursively from an + output handler. (Ilia Alshanetsky) + . Fixed proc_open() leaking descriptor zero when descriptor setup fails. + (Ilia Alshanetsky) + . Fixed three Windows-only proc_open() defects: an uninitialized + PROCESS_INFORMATION, an indeterminate comspec pointer after a failed + lookup, and an unchecked CreateFileA() failure. (Ilia Alshanetsky) + . Fix persistent stream context lifetime during shutdown (Levi Morrison) + . Fix wordwrap() ignoring an existing break at the end of the string + (Nicolas Grekas) + . Fixed convert.quoted-printable-decode decoding lowercase hex digits to + the wrong byte. (Ilia Alshanetsky) + +- Tidy: + . Fixed a use-after-free when a tidyNode is used after its document is + reparsed. (Ilia Alshanetsky) + +- XSL: + . Fixed bug GH-23730 (use-after-free when XSLTProcessor::importStylesheet() + is called during a transformation). (David Carlier) + +- Zip: + . Fixed ZipArchive::extractTo() ignoring files given in a non-list array. + (David Carlier) + . Fixed bug GH-23747 (ZipArchive::close() use-after-free from a progress or + cancel callback). (David Carlier) + + 24 Sep 2026, PHP 8.4.26 - BCMath: @@ -232,6 +480,8 @@ parent slot when a child class hooks an inherited property. (iliaal) . Fixed segfault in ReflectionMethod::createFromMethodName() on an uninstantiable subclass. (iliaal) + . Fixed bug GH-23842 (ReflectionProperty::skipLazyInitialization() copies + invalid constant defaults with OPcache). (DirkTrunkstar, Lazizbek Ergashev) - Readline: . Fixed class constant completion in the interactive shell. (Weilin Du) diff -Nru php8.4-8.4.26/TSRM/tsrm_win32.c php8.4-8.4.27/TSRM/tsrm_win32.c --- php8.4-8.4.26/TSRM/tsrm_win32.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/TSRM/tsrm_win32.c 2026-10-19 14:38:59.000000000 +0000 @@ -635,6 +635,7 @@ TSRM_API int shmget(key_t key, size_t size, int flags) {/*{{{*/ shm_pair *shm; + size_t mapping_size; char shm_segment[sizeof(SEGMENT_PREFIX INT_MIN_AS_STRING)]; HANDLE shm_handle = NULL, info_handle = NULL; BOOL created = FALSE; @@ -650,16 +651,16 @@ if (!shm_handle) { if (flags & IPC_CREAT) { - if (size == 0 || size > SIZE_MAX - sizeof(shm->descriptor)) { + if (size == 0 || size > SIZE_MAX - sizeof(*shm->descriptor)) { return -1; } - size += sizeof(shm->descriptor); + mapping_size = size + sizeof(*shm->descriptor); #if SIZEOF_SIZE_T == 8 - DWORD high = size >> 32; - DWORD low = (DWORD)size; + DWORD high = mapping_size >> 32; + DWORD low = (DWORD)mapping_size; #else DWORD high = 0; - DWORD low = size; + DWORD low = mapping_size; #endif shm_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, high, low, key == IPC_PRIVATE ? NULL : shm_segment); created = TRUE; @@ -730,7 +731,7 @@ return (void*)-1; } - shm->addr = shm->descriptor + sizeof(shm->descriptor); + shm->addr = shm->descriptor + 1; shm->descriptor->shm_atime = time(NULL); shm->descriptor->shm_lpid = getpid(); shm->descriptor->shm_nattch++; diff -Nru php8.4-8.4.26/Zend/Optimizer/escape_analysis.c php8.4-8.4.27/Zend/Optimizer/escape_analysis.c --- php8.4-8.4.26/Zend/Optimizer/escape_analysis.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/Optimizer/escape_analysis.c 2026-10-19 14:38:59.000000000 +0000 @@ -173,6 +173,8 @@ && !ce->destructor && !ce->__get && !ce->__set + && !ce->__isset + && !ce->num_hooked_props && !(ce->ce_flags & forbidden_flags) && (ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { return 1; @@ -242,6 +244,8 @@ && !ce->destructor && !ce->__get && !ce->__set + && !ce->__isset + && !ce->num_hooked_props && !ce->parent) { return 1; } @@ -300,8 +304,10 @@ case ZEND_ASSIGN_STATIC_PROP_OP: case ZEND_ASSIGN_DIM: case ZEND_ASSIGN_OBJ: - case ZEND_ASSIGN_OBJ_REF: break; + case ZEND_ASSIGN_OBJ_REF: + /* The property may now alias a variable outside of the object. */ + return true; case ZEND_PRE_INC_OBJ: case ZEND_PRE_DEC_OBJ: case ZEND_POST_INC_OBJ: diff -Nru php8.4-8.4.26/Zend/Optimizer/optimize_func_calls.c php8.4-8.4.27/Zend/Optimizer/optimize_func_calls.c --- php8.4-8.4.26/Zend/Optimizer/optimize_func_calls.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/Optimizer/optimize_func_calls.c 2026-10-19 14:38:59.000000000 +0000 @@ -63,6 +63,7 @@ case ZEND_DO_ICALL: case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: + case ZEND_CALLABLE_CONVERT: call++; break; case ZEND_SEND_VAL: diff -Nru php8.4-8.4.26/Zend/Optimizer/sccp.c php8.4-8.4.27/Zend/Optimizer/sccp.c --- php8.4-8.4.26/Zend/Optimizer/sccp.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/Optimizer/sccp.c 2026-10-19 14:38:59.000000000 +0000 @@ -436,7 +436,11 @@ } else if (Z_TYPE_P(op1) == IS_STRING) { // TODO return FAILURE; + } else if (IS_PARTIAL_OBJECT(op1)) { + /* Objects may implement ArrayAccess or throw. */ + return FAILURE; } else { + ZEND_ASSERT(Z_TYPE_P(op1) <= IS_DOUBLE); ZVAL_BOOL(result, (extended_value & ZEND_ISEMPTY)); return SUCCESS; } @@ -1946,6 +1950,28 @@ scdf_mark_edge_feasible(scdf, block_num, block->successors[s]); } +/* Unlike zend_is_identical(), this does not treat 0.0 and -0.0 as the same value. + * Returns int to be usable as compare_func_t. */ +static int sccp_values_differ(const void *p1, const void *p2) +{ + const zval *a = p1; + const zval *b = p2; + + if (Z_TYPE_P(a) != Z_TYPE_P(b)) { + return 1; + } + if (Z_TYPE_P(a) == IS_DOUBLE) { + return memcmp(&Z_DVAL_P(a), &Z_DVAL_P(b), sizeof(double)) != 0; + } + if (Z_TYPE_P(a) == IS_ARRAY) { + return Z_ARRVAL_P(a) != Z_ARRVAL_P(b) + && zend_hash_compare(Z_ARRVAL_P(a), Z_ARRVAL_P(b), sccp_values_differ, 1) != 0; + } + ZEND_ASSERT(IS_PARTIAL_ARRAY(a) || IS_PARTIAL_OBJECT(a) + || ((1 << Z_TYPE_P(a)) & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_BOOL|MAY_BE_LONG|MAY_BE_STRING))); + return !zend_is_identical(a, b); +} + static void join_hash_tables(HashTable *ret, HashTable *ht1, HashTable *ht2) { zend_ulong index; @@ -1958,7 +1984,7 @@ } else { val2 = zend_hash_index_find(ht2, index); } - if (val2 && zend_is_identical(val1, val2)) { + if (val2 && !sccp_values_differ(val1, val2)) { if (key) { val1 = zend_hash_add_new(ret, key, val1); } else { @@ -2026,7 +2052,7 @@ zval_ptr_dtor_nogc(a); MAKE_BOT(a); } - } else if (!zend_is_identical(a, b)) { + } else if (sccp_values_differ(a, b)) { if (join_partial_arrays(a, b) == FAILURE) { zval_ptr_dtor_nogc(a); MAKE_BOT(a); diff -Nru php8.4-8.4.26/Zend/Optimizer/zend_call_graph.c php8.4-8.4.27/Zend/Optimizer/zend_call_graph.c --- php8.4-8.4.26/Zend/Optimizer/zend_call_graph.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/Optimizer/zend_call_graph.c 2026-10-19 14:38:59.000000000 +0000 @@ -54,7 +54,10 @@ ALLOCA_FLAG(use_heap); bool is_prototype; - call_stack = do_alloca((op_array->last / 2) * sizeof(zend_call_info*), use_heap); + // Note: Reserve one call stack slot per operation. Each opcode pushes at + // most one entry to the call stack, and (with dead code elimination) it's + // possible to never pop from the stack. + call_stack = do_alloca(op_array->last * sizeof(zend_call_info*), use_heap); call_info = NULL; while (opline != end) { switch (opline->opcode) { diff -Nru php8.4-8.4.26/Zend/tests/arginfo_zpp_mismatch.inc php8.4-8.4.27/Zend/tests/arginfo_zpp_mismatch.inc --- php8.4-8.4.26/Zend/tests/arginfo_zpp_mismatch.inc 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/arginfo_zpp_mismatch.inc 2026-10-19 14:38:59.000000000 +0000 @@ -18,6 +18,7 @@ || (is_string($function) && str_starts_with($function, 'ob_')) || $function === 'output_add_rewrite_var' || $function === 'error_log' + || $function === 'syslog' /* may spend a lot of time waiting for connection timeouts */ || (is_string($function) && str_contains($function, 'connect')) || (is_string($function) && str_starts_with($function, 'snmp')) diff -Nru php8.4-8.4.26/Zend/tests/bug40770.phpt php8.4-8.4.27/Zend/tests/bug40770.phpt --- php8.4-8.4.26/Zend/tests/bug40770.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/bug40770.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -16,9 +16,9 @@ --EXPECTF-- diff -Nru php8.4-8.4.26/Zend/tests/bug54268.phpt php8.4-8.4.27/Zend/tests/bug54268.phpt --- php8.4-8.4.26/Zend/tests/bug54268.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/bug54268.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -2,6 +2,7 @@ Bug #54268 (Double free when destroy_zend_class fails) --INI-- memory_limit=8M +opcache.jit=disable --SKIPIF-- c = $this; + } +} register_shutdown_function(function() { - new stdClass; + new C; }); -$ary = []; while (true) { - $ary[] = new stdClass; + new C; } ?> diff -Nru php8.4-8.4.26/Zend/tests/call_function_trampoline_leak.phpt php8.4-8.4.27/Zend/tests/call_function_trampoline_leak.phpt --- php8.4-8.4.26/Zend/tests/call_function_trampoline_leak.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/call_function_trampoline_leak.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +zend_call_function() must release the trampoline when it bails before the call +--FILE-- +getMessage(), "\n"; +} + +try { + $call([Closure::fromCallable('strcmp'), '__invoke'], ['string2' => 'b']); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +Exception: Method A::foo() is deprecated +ArgumentCountError: Closure::__invoke(): Argument #1 ($string1) not passed diff -Nru php8.4-8.4.26/Zend/tests/debug_backtrace_sensitive_named_variadic.phpt php8.4-8.4.27/Zend/tests/debug_backtrace_sensitive_named_variadic.phpt --- php8.4-8.4.26/Zend/tests/debug_backtrace_sensitive_named_variadic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/debug_backtrace_sensitive_named_variadic.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +Backtrace args of a #[SensitiveParameter] variadic called with named arguments +--FILE-- +getTrace()[0]['args']); +?> +--EXPECT-- +array(2) { + ["a"]=> + object(SensitiveParameterValue)#2 (0) { + } + ["b"]=> + object(SensitiveParameterValue)#3 (0) { + } +} diff -Nru php8.4-8.4.26/Zend/tests/fibers/destructors_013.phpt php8.4-8.4.27/Zend/tests/fibers/destructors_013.phpt --- php8.4-8.4.26/Zend/tests/fibers/destructors_013.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/fibers/destructors_013.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,49 @@ +--TEST-- +Fibers in destructors 013: Exception thrown by a destructor called by the GC is thrown by the statement that triggered the GC +--INI-- +zend.enable_gc=1 +--FILE-- +self = $this; + } + public function __destruct() { + echo "Cycle::__destruct\n"; + throw new Exception('Cycle::__destruct'); + } +} + +$objects = []; +for ($i = 0; $i < 20000; $i++) { + $objects[] = new stdClass(); +} + +function f() { + global $objects; + try { + $copies = [...$objects]; + new Cycle(); + // Releasing the copies fills the GC root buffer + $copies = null; + echo "Not reached\n"; + } catch (Exception $e) { + echo 'Caught: ', $e->getMessage(), "\n"; + } +} + +$fiber = new Fiber(function () { + try { + f(); + } catch (Exception $e) { + echo 'Escaped: ', $e->getMessage(), "\n"; + } +}); +$fiber->start(); + +?> +--EXPECT-- +Cycle::__destruct +Caught: Cycle::__destruct diff -Nru php8.4-8.4.26/Zend/tests/fibers/destructors_014.phpt php8.4-8.4.27/Zend/tests/fibers/destructors_014.phpt --- php8.4-8.4.26/Zend/tests/fibers/destructors_014.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/fibers/destructors_014.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,55 @@ +--TEST-- +Fibers in destructors 014: Exception thrown by a destructor called by the GC during exception unwinding is chained +--INI-- +zend.enable_gc=1 +--FILE-- +self = $this; + } + public function __destruct() { + echo "Cycle::__destruct\n"; + throw new Exception('Cycle::__destruct'); + } +} + +$objects = []; +for ($i = 0; $i < 20000; $i++) { + $objects[] = new stdClass(); +} + +function f() { + global $objects; + // Releasing these copies during unwinding fills the GC root buffer + $copies = [...$objects]; + new Cycle(); + throw new Exception('f'); +} + +function g() { + try { + f(); + echo "Not reached\n"; + } catch (Exception $e) { + echo 'Caught: ', $e->getMessage(), "\n"; + echo 'Previous: ', $e->getPrevious()->getMessage(), "\n"; + } +} + +$fiber = new Fiber(function () { + try { + g(); + } catch (Exception $e) { + echo 'Escaped: ', $e->getMessage(), "\n"; + } +}); +$fiber->start(); + +?> +--EXPECT-- +Cycle::__destruct +Caught: Cycle::__destruct +Previous: f diff -Nru php8.4-8.4.26/Zend/tests/fibers/destructors_015.phpt php8.4-8.4.27/Zend/tests/fibers/destructors_015.phpt --- php8.4-8.4.26/Zend/tests/fibers/destructors_015.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/fibers/destructors_015.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,60 @@ +--TEST-- +Fibers in destructors 015: Exception thrown by a destructor called by the GC from internal code +--INI-- +zend.enable_gc=1 +--FILE-- +self = $this; + } + public function __destruct() { + echo "Cycle::__destruct\n"; + throw new Exception('Cycle::__destruct'); + } +} + +$fiber = new Fiber(function () { + try { + new Cycle(); + gc_collect_cycles(); + echo "Not reached\n"; + } catch (Exception $e) { + echo 'Caught: ', $e->getMessage(), "\n"; + } +}); +$fiber->start(); + +$objects = []; +for ($i = 0; $i < 20000; $i++) { + $objects[] = new stdClass(); +} + +function create_fiber() { + global $objects; + $copies = [...$objects]; + + // The fiber releases the copies after its function returned, which fills the GC root buffer + return new Fiber(function () use ($copies) { + new Cycle(); + echo "Return\n"; + }); +} + +$fiber = create_fiber(); +try { + $fiber->start(); + echo "Not reached\n"; +} catch (Exception $e) { + echo 'Caught: ', $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +Cycle::__destruct +Caught: Cycle::__destruct +Return +Cycle::__destruct +Caught: Cycle::__destruct diff -Nru php8.4-8.4.26/Zend/tests/fibers/get-return-after-bailout.phpt php8.4-8.4.27/Zend/tests/fibers/get-return-after-bailout.phpt --- php8.4-8.4.26/Zend/tests/fibers/get-return-after-bailout.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/fibers/get-return-after-bailout.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -1,12 +1,5 @@ --TEST-- Fiber::getReturn() after bailout ---SKIPIF-- - --FILE-- start(); ?> --EXPECTF-- -Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) %sget-return-after-bailout.php on line %d +Fatal error: __debuginfo() must return an array in %s on line %d Fatal error: Uncaught FiberError: Cannot get fiber return value: The fiber exited with a fatal error in %sget-return-after-bailout.php:%d Stack trace: diff -Nru php8.4-8.4.26/Zend/tests/gh11189.phpt php8.4-8.4.27/Zend/tests/gh11189.phpt --- php8.4-8.4.26/Zend/tests/gh11189.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/gh11189.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -8,7 +8,7 @@ if (getenv("USE_ZEND_ALLOC") === "0") die("skip ZMM is disabled"); ?> --INI-- -memory_limit=2M +memory_limit=10M --FILE-- --EXPECTF-- -Success -Fatal error: Allowed memory size of %s bytes exhausted%s(tried to allocate %s bytes) in %s on line %d +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/gh11189_1.phpt php8.4-8.4.27/Zend/tests/gh11189_1.phpt --- php8.4-8.4.26/Zend/tests/gh11189_1.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/gh11189_1.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -28,5 +28,4 @@ ?> --EXPECTF-- -Success -Fatal error: Allowed memory size of %s bytes exhausted%s(tried to allocate %s bytes) in %s on line %d +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/gh23896.phpt php8.4-8.4.27/Zend/tests/gh23896.phpt --- php8.4-8.4.26/Zend/tests/gh23896.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/gh23896.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +GH-23896 (Assertion failure in zend_call_function() when the error handler throws during parent:: callable resolution) +--FILE-- +u('O:3:"FOO":0:{}'); + } catch (Exception $e) { + echo $e->getMessage(), "\n"; + var_dump($e->getPrevious()); + } +} +?> +--EXPECT-- +Use of "parent" in callables is deprecated +NULL +Cannot load Loader +NULL diff -Nru php8.4-8.4.26/Zend/tests/gh24050.phpt php8.4-8.4.27/Zend/tests/gh24050.phpt --- php8.4-8.4.26/Zend/tests/gh24050.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/gh24050.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,49 @@ +--TEST-- +GH-24050 (GC frees an object still held by a resurrected closure when (object) and use share an array) +--CREDITS-- +OllieCrook +--FILE-- +closure; + } +} + +class Holder +{ + public $castObject; + public $resurrector; + public $self; +} + +$array = ['victim' => new stdClass(), 'key' => 'value']; + +$holder = new Holder(); +$resurrector = new Resurrector(); +$holder->castObject = (object) $array; +$resurrector->closure = function () use ($array) { + return $array; +}; +$holder->resurrector = $resurrector; +$holder->self = $holder; +$resurrector->self = $resurrector; + +unset($array); +gc_collect_cycles(); + +unset($holder, $resurrector); +gc_collect_cycles(); +gc_collect_cycles(); + +var_dump($resurrected()['victim']); +?> +--EXPECT-- +object(stdClass)#1 (0) { +} diff -Nru php8.4-8.4.26/Zend/tests/gh24050_2.phpt php8.4-8.4.27/Zend/tests/gh24050_2.phpt --- php8.4-8.4.26/Zend/tests/gh24050_2.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/gh24050_2.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,49 @@ +--TEST-- +GH-24050 (GC frees an object still held by a resurrected closure when (array) and use share a properties table) +--FILE-- +closure; + } +} + +class Holder +{ + public $obj; + public $resurrector; + public $self; +} + +$obj = new stdClass(); +$obj->victim = new stdClass(); + +$holder = new Holder(); +$resurrector = new Resurrector(); +$holder->obj = $obj; +$array = (array) $obj; +$resurrector->closure = function () use ($array) { + return $array; +}; +$holder->resurrector = $resurrector; +$holder->self = $holder; +$resurrector->self = $resurrector; + +unset($array, $obj); +gc_collect_cycles(); + +unset($holder, $resurrector); +gc_collect_cycles(); +gc_collect_cycles(); + +var_dump($resurrected()['victim']); +?> +--EXPECT-- +object(stdClass)#2 (0) { +} diff -Nru php8.4-8.4.26/Zend/tests/lazy_objects/gh21999-001.phpt php8.4-8.4.27/Zend/tests/lazy_objects/gh21999-001.phpt --- php8.4-8.4.26/Zend/tests/lazy_objects/gh21999-001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/lazy_objects/gh21999-001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,47 @@ +--TEST-- +GH-21999: GC inconsistency with lazy object, var_dump(), and object comparison +--CREDITS-- +kid-lxy +--FILE-- +getProperty('a')->setRawValueWithoutLazyInitialization($obj, new stdClass); + var_dump(!$reflector->isUninitializedLazyObject($obj)); + var_dump($obj); // builds obj->properties +} + +$reflector = new ReflectionClass(C::class); +$obj = $reflector->newLazyGhost(function ($obj) { + $obj->__construct(); // throws: initialization fails +}); +test('Ghost', $obj); +try { + // zend_std_compare() fetches obj->properties. zend_compare_symbol_tables() + // adds obj->properties to GC roots. + $obj > $reflector->newLazyProxy(function () { + return new C(); + }); +} catch (\Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + gc_collect_cycles(); +} + +?> +--EXPECTF-- +bool(false) +lazy ghost object(C)#%d (1) { + ["a"]=> + object(stdClass)#%d (0) { + } +} +ArgumentCountError: 2 arguments are required, 1 given diff -Nru php8.4-8.4.26/Zend/tests/lazy_objects/gh21999-002.phpt php8.4-8.4.27/Zend/tests/lazy_objects/gh21999-002.phpt --- php8.4-8.4.26/Zend/tests/lazy_objects/gh21999-002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/lazy_objects/gh21999-002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +GH-21999: GC inconsistency with lazy object, var_dump(), and object comparison +--FILE-- +getProperty('a')->setRawValueWithoutLazyInitialization($obj, new stdClass); + var_dump(!$reflector->isUninitializedLazyObject($obj)); + var_dump($obj); +} + +$reflector = new ReflectionClass(C::class); +$obj = $reflector->newLazyGhost(function ($obj) { + $obj->__construct(); +}); +$reflector->getProperty('a')->setRawValueWithoutLazyInitialization($obj, $obj); + +try { + var_dump($obj < $reflector->newLazyGhost(function () {})); +} catch (\Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + gc_collect_cycles(); +} + +?> +--EXPECT-- +ArgumentCountError: 2 arguments are required, 1 given diff -Nru php8.4-8.4.26/Zend/tests/lazy_objects/gh23842.phpt php8.4-8.4.27/Zend/tests/lazy_objects/gh23842.phpt --- php8.4-8.4.26/Zend/tests/lazy_objects/gh23842.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/lazy_objects/gh23842.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +GH-23842: skipLazyInitialization() copies an unresolved constant default with opcache +--CREDITS-- +DirkTrunkstar +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache_only=0 +--FILE-- +newLazyGhost(function () { + throw new \Exception('initializer'); +}); +$reflector->getProperty('currency')->skipLazyInitialization($product); + +var_dump($product->currency); + +?> +--EXPECT-- +string(3) "EUR" diff -Nru php8.4-8.4.26/Zend/tests/lazy_objects/oss_fuzz_536440507.phpt php8.4-8.4.27/Zend/tests/lazy_objects/oss_fuzz_536440507.phpt --- php8.4-8.4.26/Zend/tests/lazy_objects/oss_fuzz_536440507.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/lazy_objects/oss_fuzz_536440507.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +OSS-Fuzz #536440507 (Immutable class incorrect assertion) +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +--FILE-- +newLazyGhost(function ($obj) {}); +var_dump($o->b); + +?> +--EXPECTF-- +Deprecated: Implicit conversion from float 3.4028236692093845E+32 to int loses precision in %s on line %d +int(%s) diff -Nru php8.4-8.4.26/Zend/tests/oom_SplFixedArray___unserialize.phpt php8.4-8.4.27/Zend/tests/oom_SplFixedArray___unserialize.phpt --- php8.4-8.4.26/Zend/tests/oom_SplFixedArray___unserialize.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_SplFixedArray___unserialize.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +OOM SplFixedArray::__unserialize() +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 11 diff -Nru php8.4-8.4.26/Zend/tests/oom_SplFixedArray___wakeup.phpt php8.4-8.4.27/Zend/tests/oom_SplFixedArray___wakeup.phpt --- php8.4-8.4.26/Zend/tests/oom_SplFixedArray___wakeup.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_SplFixedArray___wakeup.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +OOM SplFixedArray::fromArray() 003 +--INI-- +memory_limit=16M +--FILE-- +{$i} = 0; +} + +$pad = str_repeat('a', max(16*1024*1024 - memory_get_usage(true) - 512*1024, 1)); + +$a->__wakeup(); + +?> +--EXPECTF-- +Deprecated: Method SplFixedArray::__wakeup() is deprecated since 8.4, this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize() in %s on line %d + +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in %s on line 10 diff -Nru php8.4-8.4.26/Zend/tests/oom_SplFixedArray_copy_ctor.phpt php8.4-8.4.27/Zend/tests/oom_SplFixedArray_copy_ctor.phpt --- php8.4-8.4.26/Zend/tests/oom_SplFixedArray_copy_ctor.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_SplFixedArray_copy_ctor.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +OOM SplFixedArray copy ctor +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 7 diff -Nru php8.4-8.4.26/Zend/tests/oom_SplFixedArray_fromArray_001.phpt php8.4-8.4.27/Zend/tests/oom_SplFixedArray_fromArray_001.phpt --- php8.4-8.4.26/Zend/tests/oom_SplFixedArray_fromArray_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_SplFixedArray_fromArray_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM SplFixedArray::fromArray() +--INI-- +memory_limit=10M +--FILE-- + 0], true); + +?> +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_SplFixedArray_fromArray_002.phpt php8.4-8.4.27/Zend/tests/oom_SplFixedArray_fromArray_002.phpt --- php8.4-8.4.26/Zend/tests/oom_SplFixedArray_fromArray_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_SplFixedArray_fromArray_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +OOM SplFixedArray::fromArray() 002 +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 5 diff -Nru php8.4-8.4.26/Zend/tests/oom_after_main_script.phpt php8.4-8.4.27/Zend/tests/oom_after_main_script.phpt --- php8.4-8.4.26/Zend/tests/oom_after_main_script.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_after_main_script.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +OOM: shutdown functions run after an OOM raised at the end of the main script +--INI-- +memory_limit=8M +opcache.optimization_level=0 +--FILE-- + +--EXPECTF-- +Done + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +Shutdown function called diff -Nru php8.4-8.4.26/Zend/tests/oom_array_fill_001.phpt php8.4-8.4.27/Zend/tests/oom_array_fill_001.phpt --- php8.4-8.4.26/Zend/tests/oom_array_fill_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_fill_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM array_fill() packed +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_fill_002.phpt php8.4-8.4.27/Zend/tests/oom_array_fill_002.phpt --- php8.4-8.4.26/Zend/tests/oom_array_fill_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_fill_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM array_fill() mixed +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_fill_003.phpt php8.4-8.4.27/Zend/tests/oom_array_fill_003.phpt --- php8.4-8.4.26/Zend/tests/oom_array_fill_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_fill_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM array_fill() packed > HT_MAX_SIZE +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Possible integer overflow in memory allocation (1073741825 * 32 + 32) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_fill_004.phpt php8.4-8.4.27/Zend/tests/oom_array_fill_004.phpt --- php8.4-8.4.26/Zend/tests/oom_array_fill_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_fill_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM array_fill() mixed > HT_MAX_SIZE +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Possible integer overflow in memory allocation (1073741825 * 32 + 32) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_001.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_001.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad left packed +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_002.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_002.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad right packed +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_003.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_003.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad left mixed +--INI-- +memory_limit=10M +--FILE-- + 'bar'], -1*1024*1024, (string)time())); + +?> +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_004.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_004.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad right mixed +--INI-- +memory_limit=10M +--FILE-- + 'bar'], 1024*1024, (string)time())); + +?> +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_005.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_005.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_005.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_005.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad left packed, non-refcounted pad value +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_006.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_006.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_006.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_006.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad right packed, non-refcounted pad value +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_007.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_007.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_007.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_007.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad left mixed, non-refcounted pad value +--INI-- +memory_limit=10M +--FILE-- + 'bar'], -1*1024*1024, 0x4141414141)); + +?> +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_array_pad_008.phpt php8.4-8.4.27/Zend/tests/oom_array_pad_008.phpt --- php8.4-8.4.26/Zend/tests/oom_array_pad_008.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_array_pad_008.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM array_pad right mixed, non-refcounted pad value +--INI-- +memory_limit=10M +--FILE-- + 'bar'], 1024*1024, 0x4141414141)); + +?> +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_call_function.phpt php8.4-8.4.27/Zend/tests/oom_call_function.phpt --- php8.4-8.4.26/Zend/tests/oom_call_function.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_call_function.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM OOM in zend_call_function() +--INI-- +memory_limit=10M +--ENV-- +call_user_func=call_user_func +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 6 diff -Nru php8.4-8.4.26/Zend/tests/oom_call_function_002.phpt php8.4-8.4.27/Zend/tests/oom_call_function_002.phpt --- php8.4-8.4.26/Zend/tests/oom_call_function_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_call_function_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +OOM zend_call_function() after OOM: destructor called by an internal function +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_call_function_003.phpt php8.4-8.4.27/Zend/tests/oom_call_function_003.phpt --- php8.4-8.4.26/Zend/tests/oom_call_function_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_call_function_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +OOM zend_call_function() after OOM: delayed __unserialize() call +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +array(1) { + [0]=> + *RECURSION* +} diff -Nru php8.4-8.4.26/Zend/tests/oom_debug_backtrace.phpt php8.4-8.4.27/Zend/tests/oom_debug_backtrace.phpt --- php8.4-8.4.26/Zend/tests/oom_debug_backtrace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_debug_backtrace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +OOM: debug_backtrace() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + 0) { + f($n - 1); + return; + } + debug_backtrace(); +} + +f(30000); + +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_debug_backtrace_args.phpt php8.4-8.4.27/Zend/tests/oom_debug_backtrace_args.phpt --- php8.4-8.4.26/Zend/tests/oom_debug_backtrace_args.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_debug_backtrace_args.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM: debug_backtrace() doesn't reach hard limit - args +--INI-- +memory_limit=8M +--FILE-- + 0) { + f($n - 1, ...$GLOBALS['args']); + return; + } + debug_backtrace(); +} + +$args = array_fill(0, 512, 1); +f(680, ...$args); + +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_debug_backtrace_named_args.phpt php8.4-8.4.27/Zend/tests/oom_debug_backtrace_named_args.phpt --- php8.4-8.4.26/Zend/tests/oom_debug_backtrace_named_args.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_debug_backtrace_named_args.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +OOM: debug_backtrace() doesn't reach hard limit - named args +--INI-- +memory_limit=8M +--FILE-- + 0) { + f($n - 1, ...$GLOBALS['named']); + return; + } + debug_backtrace(); +} + +$named = []; +for ($i = 0; $i < 512; $i++) { + $named["a$i"] = 1; +} +$GLOBALS['named'] = $named; + +f(450, ...$named); + +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_error_get_last.phpt php8.4-8.4.27/Zend/tests/oom_error_get_last.phpt --- php8.4-8.4.26/Zend/tests/oom_error_get_last.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_error_get_last.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +OOM: the message returned by error_get_last() can outlive the error state +--INI-- +memory_limit=8M +opcache.optimization_level=0 +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) diff -Nru php8.4-8.4.26/Zend/tests/oom_exception_trace.phpt php8.4-8.4.27/Zend/tests/oom_exception_trace.phpt --- php8.4-8.4.26/Zend/tests/oom_exception_trace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_exception_trace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +OOM: Exception constructor doesn't reach hard limit while fetching backtrace +--INI-- +memory_limit=8M +zend.exception_ignore_args=0 +--FILE-- + 0) { + f($n - 1); + return; + } + throw new Exception(); +} + +try { + f(30000); +} catch (Exception $e) { +} + +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_hard_limit_exceeded.phpt php8.4-8.4.27/Zend/tests/oom_hard_limit_exceeded.phpt --- php8.4-8.4.26/Zend/tests/oom_hard_limit_exceeded.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_hard_limit_exceeded.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +OOM: Hard limit exceeded +--EXTENSIONS-- +zend_test +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Hard memory limit of 20971520 bytes exhausted %S(tried to allocate %d bytes) in %s on line 5 + +Termsig=9 diff -Nru php8.4-8.4.26/Zend/tests/oom_hard_limit_exceeded_during_complilation.phpt php8.4-8.4.27/Zend/tests/oom_hard_limit_exceeded_during_complilation.phpt --- php8.4-8.4.26/Zend/tests/oom_hard_limit_exceeded_during_complilation.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_hard_limit_exceeded_during_complilation.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,42 @@ +--TEST-- +OOM: Hard limit exceeded during compilation +--INI-- +memory_limit=10M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Hard memory limit of 20971520 bytes %s (tried to allocate %d bytes) in %s on line %d + +Termsig=9 diff -Nru php8.4-8.4.26/Zend/tests/oom_interrupt.phpt php8.4-8.4.27/Zend/tests/oom_interrupt.phpt --- php8.4-8.4.26/Zend/tests/oom_interrupt.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_interrupt.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +OOM: zend_interrupt_function +--EXTENSIONS-- +pcntl +posix +--FILE-- += 10) { + exit; + } +}); + +$a = []; +for ($i = 0; ; $i++) { + $a[0] = $i; + posix_kill(posix_getpid(), SIGTERM); +} + +?> +--EXPECT-- +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM +Handled SIGTERM diff -Nru php8.4-8.4.26/Zend/tests/oom_interrupt_unfinished_call_frame.phpt php8.4-8.4.27/Zend/tests/oom_interrupt_unfinished_call_frame.phpt --- php8.4-8.4.26/Zend/tests/oom_interrupt_unfinished_call_frame.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_interrupt_unfinished_call_frame.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +Delayed OOM while a call frame is only partially built +--DESCRIPTION-- +A delayed OOM throws from the VM interrupt handler, which runs between two +oplines. Argument unpacking grows test()'s frame past a VM stack page, so it is +ZEND_CALL_ALLOCATED and owns the page; the interrupt is then delivered after the +explode() call, while that frame is still pending. +--FILE-- + +===DONE=== +--EXPECT-- +===DONE=== diff -Nru php8.4-8.4.26/Zend/tests/oom_interrupt_unfinished_call_frame_fiber.phpt php8.4-8.4.27/Zend/tests/oom_interrupt_unfinished_call_frame_fiber.phpt --- php8.4-8.4.26/Zend/tests/oom_interrupt_unfinished_call_frame_fiber.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_interrupt_unfinished_call_frame_fiber.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +Delayed OOM while a call frame is only partially built (fiber VM stack) +--FILE-- +start(); + +?> +===DONE=== +--EXPECT-- +===DONE=== diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_001.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_001.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +OOM json_decode() array +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 5 diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_002.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_002.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +OOM json_decode() nested arrays +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 6 diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_003.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_003.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM json_decode() object +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_004.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_004.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +OOM json_decode() nested objects +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 10 diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_005.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_005.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_005.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_005.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM json_decode() object as arrays +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_006.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_006.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_006.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_006.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +OOM json_decode() nested objects as arrays +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 10 diff -Nru php8.4-8.4.26/Zend/tests/oom_json_decode_007.phpt php8.4-8.4.27/Zend/tests/oom_json_decode_007.phpt --- php8.4-8.4.26/Zend/tests/oom_json_decode_007.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_json_decode_007.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +OOM json_decode() empty objects +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 5 diff -Nru php8.4-8.4.26/Zend/tests/oom_pending_at_shutdown.phpt php8.4-8.4.27/Zend/tests/oom_pending_at_shutdown.phpt --- php8.4-8.4.26/Zend/tests/oom_pending_at_shutdown.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_pending_at_shutdown.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +An OOM left pending by a shutdown function is reported +--INI-- +memory_limit=16M +--FILE-- + +--EXPECTF-- +Shutdown function called + +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_range_001.phpt php8.4-8.4.27/Zend/tests/oom_range_001.phpt --- php8.4-8.4.26/Zend/tests/oom_range_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_range_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM range() decreasing float +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_range_002.phpt php8.4-8.4.27/Zend/tests/oom_range_002.phpt --- php8.4-8.4.26/Zend/tests/oom_range_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_range_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM range() increasing float +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_range_003.phpt php8.4-8.4.27/Zend/tests/oom_range_003.phpt --- php8.4-8.4.26/Zend/tests/oom_range_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_range_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM range() decreasing int +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_range_004.phpt php8.4-8.4.27/Zend/tests/oom_range_004.phpt --- php8.4-8.4.26/Zend/tests/oom_range_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_range_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +OOM range() increasing int +--INI-- +memory_limit=100M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_request_parsing.phpt php8.4-8.4.27/Zend/tests/oom_request_parsing.phpt --- php8.4-8.4.26/Zend/tests/oom_request_parsing.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_request_parsing.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,130 @@ +--TEST-- +Request parsing doesn't reach hard limit +--SKIPIF-- + +--FILE-- + 'POST', + 'CONTENT_TYPE' => 'application/x-www-form-urlencoded', + 'CONTENT_LENGTH' => (string) strlen($body), + 'SCRIPT_FILENAME' => $script, + 'REDIRECT_STATUS' => '1', + ] + ); + proc_close($p); + unlink($bodyFile); +} + +/* Deeply nested variable names, at the default max_input_vars and + * max_input_nesting_level. */ +oom_post( + implode('&', array_fill(0, 1000, 'a[]' . str_repeat('[b]', 63) . '=c')), + $tiny, + ['memory_limit=8M', 'html_errors=0'] +); + +$ini = ['memory_limit=8M', 'post_max_size=1G', 'max_input_vars=10000000', 'html_errors=0']; + +/* One value with no '&' in it: nothing consumes it, so add_post_vars() never + * gets a complete variable to check and only the read loop can notice. */ +$oneValue = 'a=' . str_repeat('x', 6 * 1024 * 1024); + +/* Many small variables: the limit is reached while registering them. */ +$manyVars = ''; +for ($i = 0; $i < 200000; $i++) { + $manyVars .= ($i ? '&' : '') . "k$i=v$i"; +} + +/* A big value followed by many small ones: add_post_var() copies the value + * once with estrndup() and again when registering it, and each half fits even + * though the pair doesn't. */ +$mixed = 'a=' . str_repeat('x', 3 * 1024 * 1024); +for ($i = 0; $i < 100000; $i++) { + $mixed .= "&k$i=v$i"; +} + +foreach ([$oneValue, $manyVars, $mixed] as $body) { + foreach ([$tiny, $big] as $script) { + oom_post($body, $script, $ini); + } +} +?> +--CLEAN-- + +--EXPECTF-- +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_soft_limit_exceeded.phpt php8.4-8.4.27/Zend/tests/oom_soft_limit_exceeded.phpt --- php8.4-8.4.26/Zend/tests/oom_soft_limit_exceeded.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_soft_limit_exceeded.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +OOM: Soft limit exceeded +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes %s (tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_soft_limit_exceeded_fcall.phpt php8.4-8.4.27/Zend/tests/oom_soft_limit_exceeded_fcall.phpt --- php8.4-8.4.26/Zend/tests/oom_soft_limit_exceeded_fcall.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_soft_limit_exceeded_fcall.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +OOM: Soft limit exceeded in FCALL +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes %s (tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/Zend/tests/oom_soft_limit_in_callback.phpt php8.4-8.4.27/Zend/tests/oom_soft_limit_in_callback.phpt --- php8.4-8.4.26/Zend/tests/oom_soft_limit_in_callback.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_soft_limit_in_callback.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +OOM: Soft limit exceeded in library callback +--EXTENSIONS-- +zend_test +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in %s on line 4 +Executed diff -Nru php8.4-8.4.26/Zend/tests/oom_str_repeat.phpt php8.4-8.4.27/Zend/tests/oom_str_repeat.phpt --- php8.4-8.4.26/Zend/tests/oom_str_repeat.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_str_repeat.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +OOM str_repeat() +--INI-- +memory_limit=100M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_001.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_001.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +OOM unserialize() array +--INI-- +memory_limit=200M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 12 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_002.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_002.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM unserialize() array of strings +--INI-- +memory_limit=200M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_003.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_003.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM unserialize() array of string=>int +--INI-- +memory_limit=200M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_004.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_004.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +OOM unserialize() array of old strings +--INI-- +memory_limit=200M +error_reporting=E_ALL&~E_DEPRECATED +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_005.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_005.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_005.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_005.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +OOM unserialize() object +--INI-- +memory_limit=200M +error_reporting=E_ALL&~E_DEPRECATED +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_006.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_006.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_006.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_006.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM unserialize() object of int=>int +--INI-- +memory_limit=200M +error_reporting=E_ALL&~E_DEPRECATED +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line 12 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_007.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_007.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_007.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_007.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +OOM unserialize() classname +--INI-- +memory_limit=200M +error_reporting=E_ALL&~E_DEPRECATED +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line 7 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_008.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_008.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_008.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_008.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +OOM unserialize() classname (2) +--INI-- +memory_limit=200M +error_reporting=E_ALL&~E_DEPRECATED +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line 9 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_009.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_009.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_009.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_009.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +OOM unserialize() Serializable +--INI-- +memory_limit=200M +error_reporting=E_ALL&~E_DEPRECATED +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line 10 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_011.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_011.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_011.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_011.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +OOM unserialize() array of objects +--INI-- +memory_limit=200M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line 13 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_012.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_012.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_012.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_012.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +OOM unserialize() object fextend +--INI-- +memory_limit=200M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 14 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_013.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_013.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_013.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_013.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +OOM unserialize() object __wakeup +--INI-- +memory_limit=100M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 5 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_014.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_014.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_014.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_014.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +OOM unserialize() object __unserialize (2) +--INI-- +memory_limit=200M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 19 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_015.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_015.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_015.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_015.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +OOM unserialize() object __unserialize (2) +--INI-- +memory_limit=100M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 104857600 bytes exhausted %S(tried to allocate %d bytes) in %s on line 5 diff -Nru php8.4-8.4.26/Zend/tests/oom_unserialize_016.phpt php8.4-8.4.27/Zend/tests/oom_unserialize_016.phpt --- php8.4-8.4.26/Zend/tests/oom_unserialize_016.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/oom_unserialize_016.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +OOM unserialize() cleans up BG(unserialize) after a delayed OOM +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +array(1) { + [0]=> + *RECURSION* +} diff -Nru php8.4-8.4.26/Zend/tests/property_hooks/simple_get_result_type_inference_verification.phpt php8.4-8.4.27/Zend/tests/property_hooks/simple_get_result_type_inference_verification.phpt --- php8.4-8.4.26/Zend/tests/property_hooks/simple_get_result_type_inference_verification.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/property_hooks/simple_get_result_type_inference_verification.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +Result type inference verification for simple get is skipped +--FILE-- + $this->backing; + } + + public function test(): void { + $prop = $this->prop; + } +} + +$foo = new Foo; +$foo->test(); +$foo->test(); +echo "Done\n"; + +?> +--EXPECT-- +Done diff -Nru php8.4-8.4.26/Zend/tests/singleton_array.phpt php8.4-8.4.27/Zend/tests/singleton_array.phpt --- php8.4-8.4.26/Zend/tests/singleton_array.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/Zend/tests/singleton_array.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,140 @@ +--TEST-- +array_init_singleton() +--EXTENSIONS-- +zend_test +--FILE-- + 2 -> 4 -> 8 -> 16 */ +$a = zend_new_singleton_array(); +for ($i = 0; $i < 10; $i++) { + $a[] = $i; +} +var_dump($a === range(0, 9)); + +/* First insert is a string key: goes straight to a mixed table of size 1, + * whose hash area is only 2 slots wide. */ +$a = zend_new_singleton_array(); +$a['foo'] = 1; +$a['bar'] = 2; +$a['baz'] = 3; +var_dump($a); + +/* Packed -> hash conversion of a size 1 table. */ +$a = zend_new_singleton_array(); +$a[] = 'first'; +$a['key'] = 'second'; +var_dump($a); + +/* An out of range integer key also skips the packed representation. */ +$a = zend_new_singleton_array(); +$a[100] = 'hundred'; +$a[0] = 'zero'; +var_dump($a); + +/* Deletion, rehashing and reuse. */ +$a = zend_new_singleton_array(); +$a['a'] = 1; +$a['b'] = 2; +unset($a['a']); +$a['c'] = 3; +unset($a['b']); +$a['d'] = 4; +var_dump($a); + +/* Separation (zend_array_dup) of a size 1 table. */ +$a = zend_new_singleton_array(); +$a['x'] = 1; +$b = $a; +$b['y'] = 2; +var_dump($a, $b); + +/* Sorting and renumbering. */ +$a = zend_new_singleton_array(); +$a['c'] = 3; +$a['a'] = 1; +$a['b'] = 2; +asort($a); +var_dump($a); +sort($a); +var_dump($a); + +/* Round-trips. */ +$a = zend_new_singleton_array(); +$a['only'] = 'one'; +var_dump(unserialize(serialize($a)) === $a); +var_dump(json_decode(json_encode($a), true) === $a); + +/* Iteration. */ +$a = zend_new_singleton_array(); +$a[] = 'a'; +$a[] = 'b'; +foreach ($a as $k => $v) { + echo "$k => $v\n"; +} + +?> +--EXPECT-- +array(0) { +} +int(0) +bool(true) +array(3) { + ["foo"]=> + int(1) + ["bar"]=> + int(2) + ["baz"]=> + int(3) +} +array(2) { + [0]=> + string(5) "first" + ["key"]=> + string(6) "second" +} +array(2) { + [100]=> + string(7) "hundred" + [0]=> + string(4) "zero" +} +array(2) { + ["c"]=> + int(3) + ["d"]=> + int(4) +} +array(1) { + ["x"]=> + int(1) +} +array(2) { + ["x"]=> + int(1) + ["y"]=> + int(2) +} +array(3) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) +} +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +bool(true) +bool(true) +0 => a +1 => b diff -Nru php8.4-8.4.26/Zend/zend.c php8.4-8.4.27/Zend/zend.c --- php8.4-8.4.26/Zend/zend.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend.c 2026-10-19 14:38:59.000000000 +0000 @@ -747,6 +747,8 @@ memset(base, 0, (zend_map_ptr_static_size + compiler_globals->map_ptr_last) * sizeof(void*)); } zend_init_internal_run_time_cache(); + + compiler_globals->interned_strings_fallible = false; } /* }}} */ @@ -846,6 +848,7 @@ sizeof(executor_globals->strtod_state.freelist)); executor_globals->strtod_state.p5s = NULL; executor_globals->strtod_state.result = NULL; + memset(&executor_globals->delayed_oom, 0, sizeof(executor_globals->delayed_oom)); } /* }}} */ @@ -1384,6 +1387,8 @@ zend_map_ptr_reset(); } + zend_mm_oom_info_dtor(&EG(delayed_oom)); + #if GC_BENCH gc_bench_print(); #endif @@ -1464,7 +1469,7 @@ } /* Report about uncaught exception in case of fatal errors */ - if (EG(exception)) { + if (EG(exception) && EXPECTED(EG(delayed_oom).state != ZEND_OOM_STATE_HANDLING)) { zend_execute_data *ex; const zend_op *opline; @@ -1935,6 +1940,9 @@ zend_result ret = SUCCESS; if (op_array) { zend_execute(op_array, retval); + if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); + } zend_exception_restore(); if (UNEXPECTED(EG(exception))) { if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF) { diff -Nru php8.4-8.4.26/Zend/zend.h php8.4-8.4.27/Zend/zend.h --- php8.4-8.4.26/Zend/zend.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend.h 2026-10-19 14:38:59.000000000 +0000 @@ -20,7 +20,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "4.4.26" +#define ZEND_VERSION "4.4.27" #define ZEND_ENGINE_3 diff -Nru php8.4-8.4.26/Zend/zend_API.c php8.4-8.4.27/Zend/zend_API.c --- php8.4-8.4.26/Zend/zend_API.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_API.c 2026-10-19 14:38:59.000000000 +0000 @@ -34,6 +34,7 @@ #include "zend_enum.h" #include "zend_object_handlers.h" #include "zend_observer.h" +#include "zend_system_id.h" #include @@ -1936,6 +1937,18 @@ } /* }}} */ +ZEND_API bool object_finit(zval *arg) +{ + zend_object *obj = zend_objects_fnew(zend_standard_class_def); + + if (UNEXPECTED(obj == NULL)) { + ZVAL_NULL(arg); + return false; + } + ZVAL_OBJ(arg, obj); + return true; +} + ZEND_API void add_assoc_long_ex(zval *arg, const char *key, size_t key_len, zend_long n) /* {{{ */ { zval tmp; @@ -2252,6 +2265,9 @@ break; case IS_RESOURCE: zend_use_resource_as_offset(key); + if (UNEXPECTED(EG(exception))) { + return FAILURE; + } result = zend_hash_index_update(ht, Z_RES_HANDLE_P(key), value); break; case IS_FALSE: @@ -2263,9 +2279,14 @@ case IS_LONG: result = zend_hash_index_update(ht, Z_LVAL_P(key), value); break; - case IS_DOUBLE: - result = zend_hash_index_update(ht, zend_dval_to_lval_safe(Z_DVAL_P(key)), value); + case IS_DOUBLE: { + zend_long lval = zend_dval_to_lval_safe(Z_DVAL_P(key)); + if (UNEXPECTED(EG(exception))) { + return FAILURE; + } + result = zend_hash_index_update(ht, lval, value); break; + } default: zend_illegal_container_offset(ZSTR_KNOWN(ZEND_STR_ARRAY), key, BP_VAR_W); result = NULL; @@ -2976,7 +2997,11 @@ internal_function->prototype = NULL; internal_function->prop_info = NULL; internal_function->attributes = NULL; - internal_function->frameless_function_infos = ptr->frameless_function_infos; + if (type == MODULE_TEMPORARY) { + internal_function->frameless_function_infos = NULL; + } else { + internal_function->frameless_function_infos = ptr->frameless_function_infos; + } if (EG(active)) { // at run-time: this ought to only happen if registered with dl() or somehow temporarily at runtime ZEND_MAP_PTR_INIT(internal_function->run_time_cache, zend_arena_calloc(&CG(arena), 1, zend_internal_run_time_cache_reserved_size())); } else { @@ -3099,6 +3124,7 @@ } zend_flf_handlers[zend_flf_count] = flf_info->handler; zend_flf_functions[zend_flf_count] = (zend_function *)reg_function; + zend_add_system_entropy("frameless", ZSTR_VAL(reg_function->function_name), &flf_info->num_args, sizeof(flf_info->num_args)); zend_flf_count++; flf_info++; } diff -Nru php8.4-8.4.26/Zend/zend_API.h php8.4-8.4.27/Zend/zend_API.h --- php8.4-8.4.26/Zend/zend_API.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_API.h 2026-10-19 14:38:59.000000000 +0000 @@ -536,7 +536,45 @@ #define array_init(arg) ZVAL_ARR((arg), zend_new_array(0)) #define array_init_size(arg, size) ZVAL_ARR((arg), zend_new_array(size)) +#define array_init_singleton(arg) ZVAL_ARR((arg), zend_new_array_singleton()) + +/* Fallible array_init()/object_init(): on failure return false and leave arg as + * IS_NULL, so arg stays safe to destroy. */ +static zend_always_inline bool _array_finit(zval *arg, size_t size) +{ + zend_array *ht = zend_fnew_array(size); + if (UNEXPECTED(ht == NULL)) { + ZVAL_NULL(arg); + return false; + } + ZVAL_ARR(arg, ht); + return true; +} + +static zend_always_inline bool _array_finit_ex(zval *arg, size_t size, bool packed) +{ + zend_array *ht = zend_fnew_array(size); + if (UNEXPECTED(ht == NULL)) { + ZVAL_NULL(arg); + return false; + } + if (UNEXPECTED(zend_hash_real_finit(ht, packed, /* fallible */ true) == FAILURE)) { + efree(ht); + ZVAL_NULL(arg); + return false; + } + ZVAL_ARR(arg, ht); + return true; +} + +#define array_finit(arg) _array_finit((arg), 0) +#define array_finit_size(arg, size) _array_finit((arg), (size)) +#define array_finit_size_ex(arg, size, packed) _array_finit_ex((arg), (size), (packed)) +#define array_finit_size_packed(arg, size) _array_finit_ex((arg), (size), /* packed */ true) +#define array_finit_size_mixed(arg, size) _array_finit_ex((arg), (size), /* packed */ false) + ZEND_API void object_init(zval *arg); +ZEND_API bool object_finit(zval *arg); ZEND_API zend_result object_init_ex(zval *arg, zend_class_entry *ce); ZEND_API zend_result object_init_with_constructor(zval *arg, zend_class_entry *class_type, uint32_t param_count, zval *params, HashTable *named_params); ZEND_API zend_result object_and_properties_init(zval *arg, zend_class_entry *ce, HashTable *properties); @@ -953,11 +991,26 @@ ZVAL_NEW_STR(z, zend_string_init(s, l, 0)); \ } while (0) +/* Fallible variant of ZVAL_STRINGL() to be used when 's' is not managed by zend_alloc */ +static zend_always_inline bool ZVAL_FSTRINGL(zval *z, const char *s, size_t l) { + zend_string *str = zend_string_finit(s, l, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!str)) { + ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC()); + return false; + } + ZVAL_NEW_STR(z, str); + return true; +} + #define ZVAL_STRING(z, s) do { \ const char *_s = (s); \ ZVAL_STRINGL(z, _s, strlen(_s)); \ } while (0) +static zend_always_inline bool ZVAL_FSTRING(zval *z, const char *s) { + return ZVAL_FSTRINGL(z, s, strlen(s)); +} + #define ZVAL_EMPTY_STRING(z) do { \ ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC()); \ } while (0) @@ -1018,6 +1071,8 @@ #define RETVAL_STRINGL(s, l) ZVAL_STRINGL(return_value, s, l) #define RETVAL_STRING_FAST(s) ZVAL_STRING_FAST(return_value, s) #define RETVAL_STRINGL_FAST(s, l) ZVAL_STRINGL_FAST(return_value, s, l) +#define RETVAL_FSTRING(s) ZVAL_FSTRING(return_value, s) +#define RETVAL_FSTRINGL(s, l) ZVAL_FSTRINGL(return_value, s, l) #define RETVAL_EMPTY_STRING() ZVAL_EMPTY_STRING(return_value) #define RETVAL_CHAR(c) ZVAL_CHAR(return_value, c) #define RETVAL_RES(r) ZVAL_RES(return_value, r) @@ -1044,6 +1099,8 @@ #define RETURN_STRINGL(s, l) do { RETVAL_STRINGL(s, l); return; } while (0) #define RETURN_STRING_FAST(s) do { RETVAL_STRING_FAST(s); return; } while (0) #define RETURN_STRINGL_FAST(s, l) do { RETVAL_STRINGL_FAST(s, l); return; } while (0) +#define RETURN_FSTRING(s) do { RETVAL_FSTRING(s); return; } while (0) +#define RETURN_FSTRINGL(s, l) do { RETVAL_FSTRINGL(s, l); return; } while (0) #define RETURN_EMPTY_STRING() do { RETVAL_EMPTY_STRING(); return; } while (0) #define RETURN_CHAR(c) do { RETVAL_CHAR(c); return; } while (0) #define RETURN_RES(r) do { RETVAL_RES(r); return; } while (0) @@ -1058,6 +1115,7 @@ #define RETURN_FALSE do { RETVAL_FALSE; return; } while (0) #define RETURN_TRUE do { RETVAL_TRUE; return; } while (0) #define RETURN_THROWS() do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0) +#define RETURN_OOM() do { ZEND_ASSERT(ZEND_HAS_OOM()); (void) return_value; return; } while (0) #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL))) #define ZVAL_IS_NULL(z) (Z_TYPE_P(z) == IS_NULL) diff -Nru php8.4-8.4.26/Zend/zend_alloc.c php8.4-8.4.27/Zend/zend_alloc.c --- php8.4-8.4.26/Zend/zend_alloc.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_alloc.c 2026-10-19 14:38:59.000000000 +0000 @@ -53,6 +53,7 @@ #include "zend.h" #include "zend_alloc.h" +#include "zend_API.h" #include "zend_globals.h" #include "zend_hrtime.h" #include "zend_operators.h" @@ -60,6 +61,8 @@ #include "zend_bitset.h" #include "zend_mmap.h" #include "zend_portability.h" +#include "zend_string.h" +#include "zend_exceptions.h" #include #ifdef HAVE_UNISTD_H @@ -217,6 +220,10 @@ #define ZEND_MM_BINS 30 +#if ZEND_MM_LIMIT +# define ZEND_MM_LIMIT_MAX ((size_t)Z_L(-1) >> 1) +#endif + #if UINTPTR_MAX == UINT64_MAX # define BSWAPPTR(u) ZEND_BYTES_SWAP64(u) #else @@ -230,6 +237,7 @@ typedef struct _zend_mm_huge_list zend_mm_huge_list; static bool zend_mm_use_huge_pages = false; +static bool zend_mm_max_allocs_reached = false; /* * Memory is retrieved from OS by chunks of fixed size 2MB. @@ -284,8 +292,11 @@ #endif #if ZEND_MM_LIMIT size_t limit; /* memory limit */ + size_t hard_limit; + zend_long hard_limit_percent; int overflow; /* memory overflow flag */ #endif + bool fallible; zend_mm_huge_list *huge_list; /* list of huge allocated blocks */ @@ -306,6 +317,7 @@ void (*_shutdown)(bool full, bool silent); } custom_heap; HashTable *tracked_allocs; + uint64_t max_allocs; #endif pid_t pid; zend_random_bytes_insecure_state rand_state; @@ -398,31 +410,160 @@ abort(); } -static ZEND_COLD ZEND_NORETURN void zend_mm_safe_error(zend_mm_heap *heap, - const char *format, - size_t limit, -#if ZEND_DEBUG - const char *filename, - uint32_t lineno, -#endif - size_t size) +static ZEND_COLD ZEND_NORETURN void zend_out_of_memory(void); + +static ZEND_COLD void zend_mm_delayed_verror(const char *format, va_list args) { + if (ZEND_HAS_OOM()) { + return; + } - heap->overflow = 1; - zend_try { - zend_error_noreturn(E_ERROR, - format, - limit, -#if ZEND_DEBUG - filename, - lineno, -#endif - size); - } zend_catch { - } zend_end_try(); - heap->overflow = 0; - zend_bailout(); - exit(1); + zend_string *script_filename = NULL; + uint32_t script_lineno = 0; + + if (zend_is_executing()) { + script_filename = zend_get_executed_filename_ex(); + script_lineno = zend_get_executed_lineno(); + } else if (zend_is_compiling()) { + script_filename = zend_get_compiled_filename(); + script_lineno = zend_get_compiled_lineno(); + } + + if (script_filename == NULL) { + script_filename = ZSTR_KNOWN(ZEND_STR_UNKNOWN_CAPITALIZED); + script_lineno = 0; + } + + char buf[1024]; + vsnprintf(buf, sizeof(buf), format, args); + + EG(delayed_oom).message = zend_string_init(buf, strlen(buf), /* persistent */ true); + GC_MAKE_PERSISTENT_LOCAL(EG(delayed_oom).message); + zend_string_addref(script_filename); + EG(delayed_oom).filename = script_filename; + EG(delayed_oom).lineno = script_lineno; + EG(delayed_oom).state = ZEND_OOM_STATE_PENDING; + + zend_atomic_bool_store_ex(&EG(vm_interrupt), true); +} + +ZEND_ATTRIBUTE_FORMAT(printf, 1, 2) +static ZEND_COLD void zend_mm_delayed_error(const char *format, ...) +{ + va_list args; + va_start(args, format); + zend_mm_delayed_verror(format, args); + va_end(args); +} + +ZEND_ATTRIBUTE_FORMAT(printf, 2, 3) +ZEND_API ZEND_COLD void zend_mm_delayed_error_or_panic(bool delay, const char *format, ...) +{ + va_list args; + va_start(args, format); + + if (delay) { + zend_mm_delayed_verror(format, args); + } else { + char buf[1024]; + vsnprintf(buf, sizeof(buf), format, args); + zend_mm_panic(buf); + } + + va_end(args); +} + +ZEND_COLD void zend_mm_oom_info_dtor(zend_oom_info *info) +{ + if (info->message) { + zend_string_release(info->message); + info->message = NULL; + } + if (info->filename) { + zend_string_release(info->filename); + info->filename = NULL; + } +} + +#ifdef ZEND_MM_LIMIT +static ZEND_COLD ZEND_NORETURN void zend_mm_hard_limit_error(zend_mm_heap *heap, + size_t add_size ZEND_FILE_LINE_DC) +{ + zend_string *script_filename = NULL; + uint32_t script_lineno = 0; + + if (zend_is_executing()) { + script_filename = zend_get_executed_filename_ex(); + script_lineno = zend_get_executed_lineno(); + } else if (zend_is_compiling()) { + script_filename = zend_get_compiled_filename(); + script_lineno = zend_get_compiled_lineno(); + } + + if (script_filename == NULL) { + script_filename = ZSTR_KNOWN(ZEND_STR_UNKNOWN_CAPITALIZED); + script_lineno = 0; + } + + fprintf(stderr, +# if ZEND_DEBUG + "Hard memory limit of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes) in %s on line %d\n", +# else + "Hard memory limit of %zu bytes exhausted (tried to allocate %zu bytes) in %s on line %d\n", +# endif + heap->hard_limit + ZEND_FILE_LINE_RELAY_CC, + add_size, + ZSTR_VAL(script_filename), + script_lineno); + + /* See http://support.microsoft.com/kb/190351 */ +# ifdef ZEND_WIN32 + fflush(stderr); +# endif + + _exit(137); +} +#endif /* ZEND_MM_LIMIT */ + +/* Returns FAILURE if allocation should fail (in case the heap is fallible). + * When the soft limit is to be exceeded, a delayed OOM error is queued. + * When the hard limit is to be exceeded, the function does not return. + */ +static zend_always_inline zend_result zend_mm_check_limit(zend_mm_heap *heap, size_t add_size, bool gc, bool *did_gc ZEND_FILE_LINE_DC) +{ +#if ZEND_MM_LIMIT + /* Is the soft limit exceeded or going to be exceeded? */ + if (UNEXPECTED(heap->limit < heap->real_size || add_size > heap->limit - heap->real_size)) { + if (gc && zend_mm_gc(heap)) { + if (did_gc) { + *did_gc = true; + } + } + ZEND_ASSERT(heap->hard_limit >= heap->limit && heap->hard_limit >= heap->real_size); + if (!heap->fallible && add_size > heap->hard_limit - heap->real_size) { + zend_mm_hard_limit_error(heap, add_size ZEND_FILE_LINE_RELAY_CC); + } + /* Check soft limit again as gc may have reduced memory usage */ + if (!gc || (heap->limit < heap->real_size || add_size > heap->limit - heap->real_size)) { + if (!ZEND_HAS_OOM()) { + zend_mm_delayed_error( +# if ZEND_DEBUG + "Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)", +# else + "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", +# endif + heap->limit + ZEND_FILE_LINE_RELAY_CC, + add_size); + } + + return heap->fallible ? FAILURE : SUCCESS; + } + } +#endif /* ZEND_MM_LIMIT */ + + return SUCCESS; } #ifdef _WIN32 @@ -1040,20 +1181,13 @@ chunk = heap->cached_chunks; heap->cached_chunks = chunk->next; } else { -#if ZEND_MM_LIMIT - if (UNEXPECTED(ZEND_MM_CHUNK_SIZE > heap->limit - heap->real_size)) { - if (zend_mm_gc(heap)) { - goto get_chunk; - } else if (heap->overflow == 0) { -#if ZEND_DEBUG - zend_mm_safe_error(heap, "Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)", heap->limit, __zend_filename, __zend_lineno, size); -#else - zend_mm_safe_error(heap, "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", heap->limit, ZEND_MM_PAGE_SIZE * pages_count); -#endif - return NULL; - } + bool did_gc = false; + if (UNEXPECTED(zend_mm_check_limit(heap, ZEND_MM_CHUNK_SIZE, /* gc */ true, &did_gc ZEND_FILE_LINE_RELAY_CC) == FAILURE)) { + return NULL; + } else if (did_gc) { + goto get_chunk; } -#endif + chunk = (zend_mm_chunk*)zend_mm_chunk_alloc(heap, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE); if (UNEXPECTED(chunk == NULL)) { /* insufficient memory */ @@ -1061,13 +1195,7 @@ (chunk = (zend_mm_chunk*)zend_mm_chunk_alloc(heap, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE)) != NULL) { /* pass */ } else { -#if !ZEND_MM_LIMIT - zend_mm_safe_error(heap, "Out of memory"); -#elif ZEND_DEBUG - zend_mm_safe_error(heap, "Out of memory (allocated %zu bytes) at %s:%d (tried to allocate %zu bytes)", heap->real_size, __zend_filename, __zend_lineno, size); -#else - zend_mm_safe_error(heap, "Out of memory (allocated %zu bytes) (tried to allocate %zu bytes)", heap->real_size, ZEND_MM_PAGE_SIZE * pages_count); -#endif + zend_out_of_memory(); return NULL; } } @@ -1128,6 +1256,9 @@ #else void *ptr = zend_mm_alloc_pages(heap, pages_count ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); #endif + if (UNEXPECTED(ptr == NULL)) { + return NULL; + } #if ZEND_MM_STAT do { size_t size = heap->size + pages_count * ZEND_MM_PAGE_SIZE; @@ -1350,6 +1481,11 @@ #endif if (UNEXPECTED(bin == NULL)) { /* insufficient memory */ +#if ZEND_MM_STAT + /* heap->size was incremented by the caller. Decrement here to preserve + * the tail call. */ + heap->size -= bin_data_size[bin_num]; +#endif return NULL; } @@ -1480,30 +1616,34 @@ size = MAX(size, 1); size = ZEND_MM_ALIGNED_SIZE(size) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info)); if (UNEXPECTED(size < real_size)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu + %zu)", ZEND_MM_ALIGNED_SIZE(real_size), ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))); + zend_mm_delayed_error_or_panic(heap->fallible, "Possible integer overflow in memory allocation (%zu + %zu)", ZEND_MM_ALIGNED_SIZE(real_size), ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))); return NULL; } #endif if (EXPECTED(size <= ZEND_MM_MAX_SMALL_SIZE)) { ptr = zend_mm_alloc_small(heap, ZEND_MM_SMALL_SIZE_TO_BIN(size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); #if ZEND_DEBUG - dbg = zend_mm_get_debug_info(heap, ptr); - dbg->size = real_size; - dbg->filename = __zend_filename; - dbg->orig_filename = __zend_orig_filename; - dbg->lineno = __zend_lineno; - dbg->orig_lineno = __zend_orig_lineno; + if (EXPECTED(ptr != NULL)) { + dbg = zend_mm_get_debug_info(heap, ptr); + dbg->size = real_size; + dbg->filename = __zend_filename; + dbg->orig_filename = __zend_orig_filename; + dbg->lineno = __zend_lineno; + dbg->orig_lineno = __zend_orig_lineno; + } #endif return ptr; } else if (EXPECTED(size <= ZEND_MM_MAX_LARGE_SIZE)) { ptr = zend_mm_alloc_large(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); #if ZEND_DEBUG - dbg = zend_mm_get_debug_info(heap, ptr); - dbg->size = real_size; - dbg->filename = __zend_filename; - dbg->orig_filename = __zend_orig_filename; - dbg->lineno = __zend_lineno; - dbg->orig_lineno = __zend_orig_lineno; + if (EXPECTED(ptr != NULL)) { + dbg = zend_mm_get_debug_info(heap, ptr); + dbg->size = real_size; + dbg->filename = __zend_filename; + dbg->orig_filename = __zend_orig_filename; + dbg->lineno = __zend_lineno; + dbg->orig_lineno = __zend_orig_lineno; + } #endif return ptr; } else { @@ -1576,10 +1716,16 @@ size_t orig_peak = heap->peak; #endif ret = zend_mm_alloc_heap(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); - memcpy(ret, ptr, copy_size); - zend_mm_free_heap(heap, ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + if (EXPECTED(ret != NULL)) { + memcpy(ret, ptr, copy_size); + zend_mm_free_heap(heap, ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + } else { + /* original block is left untouched */ + } #if ZEND_MM_STAT - heap->peak = MAX(orig_peak, heap->size); + if (EXPECTED(ret != NULL)) { + heap->peak = MAX(orig_peak, heap->size); + } } while (0); #endif return ret; @@ -1635,20 +1781,10 @@ return ptr; } } else /* if (new_size > old_size) */ { -#if ZEND_MM_LIMIT - if (UNEXPECTED(new_size - old_size > heap->limit - heap->real_size)) { - if (zend_mm_gc(heap) && new_size - old_size <= heap->limit - heap->real_size) { - /* pass */ - } else if (heap->overflow == 0) { -#if ZEND_DEBUG - zend_mm_safe_error(heap, "Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)", heap->limit, __zend_filename, __zend_lineno, size); -#else - zend_mm_safe_error(heap, "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", heap->limit, size); -#endif - return NULL; - } + if (UNEXPECTED(zend_mm_check_limit(heap, new_size - old_size, /* gc */ true, NULL ZEND_FILE_LINE_RELAY_CC) == FAILURE)) { + return NULL; } -#endif + /* try to map tail right after this block */ if (zend_mm_chunk_extend(heap, ptr, old_size, new_size)) { #if ZEND_MM_STAT || ZEND_MM_LIMIT @@ -1717,6 +1853,9 @@ if (old_bin_num > 0 && size < bin_data_size[old_bin_num - 1]) { /* truncation */ ret = zend_mm_alloc_small(heap, ZEND_MM_SMALL_SIZE_TO_BIN(size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + if (UNEXPECTED(ret == NULL)) { + goto failed; + } copy_size = use_copy_size ? MIN(size, copy_size) : size; memcpy(ret, ptr, copy_size); zend_mm_free_small(heap, ptr, old_bin_num); @@ -1732,6 +1871,9 @@ size_t orig_peak = heap->peak; #endif ret = zend_mm_alloc_small(heap, ZEND_MM_SMALL_SIZE_TO_BIN(size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + if (UNEXPECTED(ret == NULL)) { + goto failed; + } copy_size = use_copy_size ? MIN(old_size, copy_size) : old_size; memcpy(ret, ptr, copy_size); zend_mm_free_small(heap, ptr, old_bin_num); @@ -1753,6 +1895,10 @@ dbg->orig_lineno = __zend_orig_lineno; #endif return ret; + +failed: + /* original block is left untouched */ + return NULL; } while (0); } else /* if (info & ZEND_MM_IS_LARGE_RUN) */ { @@ -1840,6 +1986,8 @@ static void zend_mm_add_huge_block(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) #endif { + bool was_fallible = heap->fallible; + heap->fallible = false; zend_mm_huge_list *list = (zend_mm_huge_list*)zend_mm_alloc_heap(heap, sizeof(zend_mm_huge_list) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); list->ptr = ptr; list->size = size; @@ -1852,6 +2000,7 @@ list->dbg.orig_lineno = __zend_orig_lineno; #endif heap->huge_list = list; + heap->fallible = was_fallible; } static size_t zend_mm_del_huge_block(zend_mm_heap *heap, void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) @@ -1929,23 +2078,14 @@ void *ptr; if (UNEXPECTED(new_size < size)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu + %zu)", size, alignment); + zend_mm_delayed_error_or_panic(heap->fallible, "Possible integer overflow in memory allocation (%zu + %zu)", size, alignment); + return NULL; } -#if ZEND_MM_LIMIT - if (UNEXPECTED(new_size > heap->limit - heap->real_size)) { - if (zend_mm_gc(heap) && new_size <= heap->limit - heap->real_size) { - /* pass */ - } else if (heap->overflow == 0) { -#if ZEND_DEBUG - zend_mm_safe_error(heap, "Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)", heap->limit, __zend_filename, __zend_lineno, size); -#else - zend_mm_safe_error(heap, "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", heap->limit, size); -#endif - return NULL; - } + if (UNEXPECTED(zend_mm_check_limit(heap, new_size, /* gc */ true, NULL ZEND_FILE_LINE_RELAY_CC) == FAILURE)) { + return NULL; } -#endif + ptr = zend_mm_chunk_alloc(heap, new_size, ZEND_MM_CHUNK_SIZE); if (UNEXPECTED(ptr == NULL)) { /* insufficient memory */ @@ -1953,13 +2093,7 @@ (ptr = zend_mm_chunk_alloc(heap, new_size, ZEND_MM_CHUNK_SIZE)) != NULL) { /* pass */ } else { -#if !ZEND_MM_LIMIT - zend_mm_safe_error(heap, "Out of memory"); -#elif ZEND_DEBUG - zend_mm_safe_error(heap, "Out of memory (allocated %zu bytes) at %s:%d (tried to allocate %zu bytes)", heap->real_size, __zend_filename, __zend_lineno, size); -#else - zend_mm_safe_error(heap, "Out of memory (allocated %zu bytes) (tried to allocate %zu bytes)", heap->real_size, size); -#endif + zend_out_of_memory(); return NULL; } } @@ -2055,9 +2189,12 @@ #endif zend_mm_init_key(heap); #if ZEND_MM_LIMIT - heap->limit = (size_t)Z_L(-1) >> 1; + heap->limit = ZEND_MM_LIMIT_MAX; + heap->hard_limit = ZEND_MM_LIMIT_MAX; + heap->hard_limit_percent = -1; heap->overflow = 0; #endif + heap->fallible = false; #if ZEND_MM_CUSTOM heap->use_custom_heap = ZEND_MM_CUSTOM_HEAP_NONE; #endif @@ -2402,6 +2539,7 @@ if (silent) { tracked_free_all(heap); } + heap->max_allocs = 0; zend_hash_clean(heap->tracked_allocs); if (full) { zend_hash_destroy(heap->tracked_allocs); @@ -2779,33 +2917,54 @@ return _zend_mm_block_size(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); } +#define ZEND_MM_SAFE_ADDRESS_GUARDED(dest, nmemb, size, offset) do { \ + size_t __nmemb = (nmemb); \ + size_t __size = (size); \ + size_t __offset = (offset); \ + bool overflow; \ + (dest) = zend_safe_address(__nmemb, __size, __offset, &overflow); \ + if (UNEXPECTED(overflow)) { \ + zend_mm_delayed_error_or_panic(AG(mm_heap)->fallible, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", __nmemb, __size, __offset); \ + return NULL; \ + } \ + } while (0) + ZEND_API void* ZEND_FASTCALL _safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { - return _emalloc(zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + size_t actual_size; + ZEND_MM_SAFE_ADDRESS_GUARDED(actual_size, nmemb, size, offset); + return _emalloc(actual_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); } ZEND_API void* ZEND_FASTCALL _safe_malloc(size_t nmemb, size_t size, size_t offset) { - return pemalloc(zend_safe_address_guarded(nmemb, size, offset), 1); + size_t actual_size; + ZEND_MM_SAFE_ADDRESS_GUARDED(actual_size, nmemb, size, offset); + return pemalloc(actual_size, 1); } ZEND_API void* ZEND_FASTCALL _safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { - return _erealloc(ptr, zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + size_t actual_size; + ZEND_MM_SAFE_ADDRESS_GUARDED(actual_size, nmemb, size, offset); + return _erealloc(ptr, actual_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); } ZEND_API void* ZEND_FASTCALL _safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset) { - return perealloc(ptr, zend_safe_address_guarded(nmemb, size, offset), 1); + size_t actual_size; + ZEND_MM_SAFE_ADDRESS_GUARDED(actual_size, nmemb, size, offset); + return perealloc(ptr, actual_size, 1); } ZEND_API void* ZEND_FASTCALL _ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { void *p; + size_t actual_size; + ZEND_MM_SAFE_ADDRESS_GUARDED(actual_size, nmemb, size, 0); - size = zend_safe_address_guarded(nmemb, size, 0); - p = _emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); - memset(p, 0, size); + p = _emalloc(actual_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + memset(p, 0, actual_size); return p; } @@ -2816,7 +2975,8 @@ length = strlen(s); if (UNEXPECTED(length + 1 == 0)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (1 * %zu + 1)", length); + zend_mm_delayed_error_or_panic(AG(mm_heap)->fallible, "Possible integer overflow in memory allocation (1 * %zu + 1)", length); + return NULL; } p = (char *) _emalloc(length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); memcpy(p, s, length+1); @@ -2828,7 +2988,8 @@ char *p; if (UNEXPECTED(length + 1 == 0)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (1 * %zu + 1)", length); + zend_mm_delayed_error_or_panic(AG(mm_heap)->fallible, "Possible integer overflow in memory allocation (1 * %zu + 1)", length); + return NULL; } p = (char *) _emalloc(length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); memcpy(p, s, length); @@ -2836,14 +2997,13 @@ return p; } -static ZEND_COLD ZEND_NORETURN void zend_out_of_memory(void); - ZEND_API char* ZEND_FASTCALL zend_strndup(const char *s, size_t length) { char *p; if (UNEXPECTED(length + 1 == 0)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (1 * %zu + 1)", length); + zend_mm_delayed_error_or_panic(AG(mm_heap)->fallible, "Possible integer overflow in memory allocation (1 * %zu + 1)", length); + return NULL; } p = (char *) malloc(length + 1); if (UNEXPECTED(p == NULL)) { @@ -2856,11 +3016,119 @@ return p; } +/* Fallible allocation */ + +#define ZEND_MM_FALLIBLE_FORWARD(expr) do { \ + bool __was_fallible = AG(mm_heap)->fallible; \ + AG(mm_heap)->fallible = true; \ + void *__result = (expr); \ + AG(mm_heap)->fallible = __was_fallible; \ + return __result; \ + } while (0) + +ZEND_API void* ZEND_FASTCALL _femalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + ZEND_MM_FALLIBLE_FORWARD(_emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)); +} + +ZEND_API void* ZEND_FASTCALL _fecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + void *p = _safe_femalloc(nmemb, size, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + + if (!p) { + return NULL; + } + + memset(p, 0, nmemb * size); + return p; +} + +ZEND_API void* ZEND_FASTCALL _ferealloc(void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + ZEND_MM_FALLIBLE_FORWARD(_erealloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)); +} + +ZEND_API void* ZEND_FASTCALL _ferealloc2(void *ptr, size_t size, size_t copy_size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + ZEND_MM_FALLIBLE_FORWARD(_erealloc2(ptr, size, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)); +} + +ZEND_API void* ZEND_FASTCALL _safe_femalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + ZEND_MM_FALLIBLE_FORWARD(_safe_emalloc(nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)); +} + +ZEND_API void* ZEND_FASTCALL _safe_ferealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + ZEND_MM_FALLIBLE_FORWARD(_safe_erealloc(ptr, nmemb, size, offset ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)); +} + +#if ZEND_MM_LIMIT +static size_t scale_by_percent(size_t value, zend_long percent) +{ + if (percent <= 0) { + return 0; + } + + size_t p = (size_t)percent; + size_t q = value / 100; + size_t r = value % 100; + + if (q > SIZE_MAX / p) { + return SIZE_MAX; + } + + size_t hi = q * p; + size_t lo = r * (p / 100) + r * (p % 100) / 100; + + if (hi > SIZE_MAX - lo) { + return SIZE_MAX; + } + return hi + lo; +} + +static void zend_mm_update_hard_limit(zend_mm_heap *heap) +{ + ZEND_ASSERT(heap->real_size <= heap->limit); + + zend_long percent = heap->hard_limit_percent; + + if (percent == -1) { + /* For memory limit >= 1G, use a fixed 1G buffer */ + if (heap->limit > 1*1024*1024*1024) { + size_t offset = 1*1024*1024*1024; + if (ZEND_MM_LIMIT_MAX - heap->limit < offset) { + heap->hard_limit = ZEND_MM_LIMIT_MAX; + } else { + heap->hard_limit = heap->limit + offset; + } + ZEND_ASSERT(heap->hard_limit >= heap->real_size); + return; + } + percent = 200; + } + + ZEND_ASSERT(percent >= 100); + + size_t hard_limit = scale_by_percent(heap->limit, percent); + if (hard_limit > ZEND_MM_LIMIT_MAX) { + hard_limit = ZEND_MM_LIMIT_MAX; + } + + heap->hard_limit = hard_limit; + ZEND_ASSERT(heap->hard_limit >= heap->real_size); +} +#endif + ZEND_API zend_result zend_set_memory_limit(size_t memory_limit) { #if ZEND_MM_LIMIT zend_mm_heap *heap = AG(mm_heap); + if (memory_limit > ZEND_MM_LIMIT_MAX) { + memory_limit = ZEND_MM_LIMIT_MAX; + } + if (UNEXPECTED(memory_limit < heap->real_size)) { if (memory_limit >= heap->real_size - heap->cached_chunks_count * ZEND_MM_CHUNK_SIZE) { /* free some cached chunks to fit into new memory limit */ @@ -2871,11 +3139,34 @@ heap->cached_chunks_count--; heap->real_size -= ZEND_MM_CHUNK_SIZE; } while (memory_limit < heap->real_size); + heap->limit = memory_limit; + zend_mm_update_hard_limit(heap); return SUCCESS; } return FAILURE; } - AG(mm_heap)->limit = memory_limit; + heap->limit = memory_limit; + zend_mm_update_hard_limit(heap); +#endif + return SUCCESS; +} + +ZEND_API zend_result zend_set_memory_hard_limit_percent(zend_long percent) +{ +#if ZEND_MM_LIMIT + zend_mm_heap *heap = AG(mm_heap); + + if (percent < 100 && percent != -1) { + return FAILURE; + } + + if (heap->real_size > heap->limit) { + /* Do not update memory limits while the soft limit is exceeded, as this + * could break invariant hard_limit >= real_size. */ + return FAILURE; + } + heap->hard_limit_percent = percent; + zend_mm_update_hard_limit(heap); #endif return SUCCESS; } @@ -2922,6 +3213,19 @@ #endif } +ZEND_API void zend_mm_set_max_allocs(uint64_t max_allocs) +{ +#if ZEND_MM_CUSTOM + AG(mm_heap)->max_allocs = max_allocs; + zend_mm_max_allocs_reached = false; +#endif +} + +ZEND_API bool zend_mm_max_allocs_hit(void) +{ + return zend_mm_max_allocs_reached; +} + ZEND_API void shutdown_memory_manager(bool silent, bool full_shutdown) { zend_mm_shutdown(AG(mm_heap), full_shutdown, silent); @@ -2949,26 +3253,50 @@ return size_zv; } -static zend_always_inline void tracked_check_limit(zend_mm_heap *heap, size_t add_size) { -#if ZEND_MM_STAT - if (add_size > heap->limit - heap->size && !heap->overflow) { +static zend_always_inline zend_result tracked_check_limit(zend_mm_heap *heap, size_t add_size ZEND_FILE_LINE_DC) { + return zend_mm_check_limit(heap, add_size, /* gc */ false, NULL ZEND_FILE_LINE_RELAY_CC); +} + +/* ZEND_MM_MAX_ALLOCS fails the n-th allocation of the request in the same way + * as the memory limit would, so that the OOM handling can be exercised at an + * arbitrary allocation rather than only at the ones large enough to reach the + * limit. */ +static zend_never_inline ZEND_COLD zend_result tracked_max_allocs_error(zend_mm_heap *heap, size_t add_size ZEND_FILE_LINE_DC) { + zend_mm_max_allocs_reached = true; + + if (!ZEND_HAS_OOM()) { + zend_mm_delayed_error( #if ZEND_DEBUG - zend_mm_safe_error(heap, - "Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)", - heap->limit, "file", 0, add_size); + "Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)", #else - zend_mm_safe_error(heap, - "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", - heap->limit, add_size); + "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", #endif + heap->limit + ZEND_FILE_LINE_RELAY_CC, + add_size); } -#endif + + return heap->fallible ? FAILURE : SUCCESS; +} + +static zend_always_inline zend_result tracked_check_max_allocs(zend_mm_heap *heap, size_t add_size ZEND_FILE_LINE_DC) { + if (UNEXPECTED(heap->max_allocs && !--heap->max_allocs)) { + return tracked_max_allocs_error(heap, add_size ZEND_FILE_LINE_RELAY_CC); + } + + return SUCCESS; } static void *tracked_malloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { zend_mm_heap *heap = AG(mm_heap); - tracked_check_limit(heap, size); + if (UNEXPECTED(tracked_check_limit(heap, size ZEND_FILE_LINE_CC) == FAILURE)) { + return NULL; + } + + if (UNEXPECTED(tracked_check_max_allocs(heap, size ZEND_FILE_LINE_CC) == FAILURE)) { + return NULL; + } void *ptr = malloc(size); if (!ptr) { @@ -3008,7 +3336,13 @@ } if (new_size > old_size) { - tracked_check_limit(heap, new_size - old_size); + if (UNEXPECTED(tracked_check_limit(heap, new_size - old_size ZEND_FILE_LINE_CC) == FAILURE)) { + return NULL; + } + + if (UNEXPECTED(tracked_check_max_allocs(heap, new_size - old_size ZEND_FILE_LINE_CC) == FAILURE)) { + return NULL; + } } /* Delete information about old allocation only after checking the memory limit. */ @@ -3046,8 +3380,11 @@ zend_mm_heap *mm_heap = alloc_globals->mm_heap = malloc(sizeof(zend_mm_heap)); memset(mm_heap, 0, sizeof(zend_mm_heap)); mm_heap->use_custom_heap = ZEND_MM_CUSTOM_HEAP_STD; - mm_heap->limit = (size_t)Z_L(-1) >> 1; + mm_heap->limit = ZEND_MM_LIMIT_MAX; + mm_heap->hard_limit = ZEND_MM_LIMIT_MAX; + mm_heap->hard_limit_percent = -1; mm_heap->overflow = 0; + mm_heap->fallible = false; if (!tracked) { /* Use system allocator. */ @@ -3110,6 +3447,16 @@ return AG(mm_heap); } +ZEND_API bool zend_mm_is_fallible(void) +{ + return AG(mm_heap)->fallible; +} + +ZEND_API void zend_mm_set_fallible(bool fallible) +{ + AG(mm_heap)->fallible = fallible; +} + ZEND_API bool zend_mm_is_custom_heap(zend_mm_heap *new_heap) { #if ZEND_MM_CUSTOM @@ -3219,12 +3566,14 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void *data, size_t data_size) { #if ZEND_MM_STORAGE - zend_mm_storage tmp_storage, *storage; + zend_mm_storage *storage; + zend_mm_storage tmp_storage = { + .handlers = *handlers, + .data = data, + }; zend_mm_chunk *chunk; zend_mm_heap *heap; - memcpy((zend_mm_handlers*)&tmp_storage.handlers, handlers, sizeof(zend_mm_handlers)); - tmp_storage.data = data; chunk = (zend_mm_chunk*)handlers->chunk_alloc(&tmp_storage, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE); if (UNEXPECTED(chunk == NULL)) { #if ZEND_MM_ERROR @@ -3259,8 +3608,9 @@ #endif zend_mm_init_key(heap); #if ZEND_MM_LIMIT - heap->limit = (size_t)Z_L(-1) >> 1; + heap->limit = ZEND_MM_LIMIT_MAX; heap->overflow = 0; + heap->fallible = false; #endif #if ZEND_MM_CUSTOM heap->use_custom_heap = 0; @@ -3289,6 +3639,60 @@ #endif } +ZEND_API void ZEND_FASTCALL zend_handle_delayed_oom(void) +{ + zend_oom_info *info = &EG(delayed_oom); + zend_execute_data *execute_data = EG(current_execute_data); + + if (info->state != ZEND_OOM_STATE_PENDING) { + return; + } + info->state = ZEND_OOM_STATE_HANDLING; + + AG(mm_heap)->overflow = 1; + + /* message was allocated persistently, use emalloc() now as error_get_last() + * may expose it to userland. */ + zend_string *message = zend_string_init(ZSTR_VAL(info->message), ZSTR_LEN(info->message), 0); + zend_string_release(info->message); + info->message = message; + + if (execute_data) { + /* An exception may already be in flight, and zend_throw_unwind_exit() + * does not allow that */ + EG(exception) = NULL; + + /* Object allocation should succeed unless it trips the hard limit */ + zend_throw_unwind_exit(); + } + + zend_try { + zend_error_zstr_at(E_ERROR, info->filename, info->lineno, info->message); + } zend_catch { + } zend_end_try(); + + AG(mm_heap)->overflow = 0; + + /* Bailout discards EG(current_execute_data). Would be better to avoid the bailout here. */ + EG(current_execute_data) = execute_data; + + /* This function may be called from the VM interrupt handler: opline is not + * executed yet. Set opline_before_exception to NULL so + * ZEND_HANDLE_EXCEPTION does not use it. */ + EG(opline_before_exception) = NULL; + + zend_mm_oom_info_dtor(info); + info->state = ZEND_OOM_STATE_HANDLED; + + /* No userland frame to unwind: there is nothing to restore afterwards + * and no exception to throw, so catching the bailout here would just + * let the request carry on past a fatal error. Let it propagate and + * abort the request, the way an immediate OOM does. */ + if (!execute_data) { + zend_bailout(); + } +} + ZEND_API void * __zend_malloc(size_t len ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { void *tmp = malloc(len); @@ -3301,10 +3705,11 @@ ZEND_API void * __zend_calloc(size_t nmemb, size_t len ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { void *tmp; + size_t actual_size; + ZEND_MM_SAFE_ADDRESS_GUARDED(actual_size, nmemb, len, 0); - len = zend_safe_address_guarded(nmemb, len, 0); - tmp = __zend_malloc(len ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); - memset(tmp, 0, len); + tmp = __zend_malloc(actual_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + memset(tmp, 0, actual_size); return tmp; } diff -Nru php8.4-8.4.26/Zend/zend_alloc.h php8.4-8.4.27/Zend/zend_alloc.h --- php8.4-8.4.26/Zend/zend_alloc.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_alloc.h 2026-10-19 14:38:59.000000000 +0000 @@ -37,6 +37,20 @@ #define ZEND_MM_ALIGNED_SIZE_EX(size, alignment) \ (((size) + ((alignment) - 1)) & ~((alignment) - 1)) +typedef enum _zend_oom_state { + ZEND_OOM_STATE_NONE = 0, + ZEND_OOM_STATE_PENDING, + ZEND_OOM_STATE_HANDLING, + ZEND_OOM_STATE_HANDLED +} zend_oom_state; + +typedef struct _zend_oom_info { + zend_oom_state state; + uint32_t lineno; + zend_string *message; + zend_string *filename; +} zend_oom_info; + typedef struct _zend_leak_info { void *addr; size_t size; @@ -46,6 +60,8 @@ uint32_t orig_lineno; } zend_leak_info; +#define ZEND_HAS_OOM() (UNEXPECTED(EG(delayed_oom).state != ZEND_OOM_STATE_NONE)) + #if ZEND_DEBUG typedef struct _zend_mm_debug_info { size_t size; @@ -215,7 +231,40 @@ #define perealloc2_recoverable_rel(ptr, size, copy_size, persistent) ((persistent)?realloc((ptr), (size)):erealloc2_recoverable_rel((ptr), (size), (copy_size))) #define pestrdup_rel(s, persistent) ((persistent)?strdup(s):estrdup_rel(s)) +/* Fallible allocation. + * These functions return NULL if allocation would exceed memory limit. */ + +ZEND_API ZEND_ATTRIBUTE_MALLOC void* ZEND_FASTCALL _femalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(1); +ZEND_API ZEND_ATTRIBUTE_MALLOC void* ZEND_FASTCALL _fecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2); +ZEND_API void* ZEND_FASTCALL _ferealloc(void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(2); +ZEND_API void* ZEND_FASTCALL _ferealloc2(void *ptr, size_t size, size_t copy_size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(2); +ZEND_API ZEND_ATTRIBUTE_MALLOC void* ZEND_FASTCALL _safe_femalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +ZEND_API void* ZEND_FASTCALL _safe_ferealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); + +#define femalloc(size, fallible) \ + ((fallible)?_femalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)) +#define fecalloc(nmemb, size, fallible) \ + ((fallible)?_fecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)) +#define ferealloc(ptr, size, fallible) \ + ((fallible)?_ferealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)) +#define ferealloc2(ptr, size, copy_size, fallible) \ + ((fallible)?_ferealloc2((ptr), (size), (copy_size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):_erealloc2((ptr), (size), (copy_size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)) +#define safe_femalloc(nmemb, size, offset, fallible) \ + ((fallible)?_safe_femalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)) +#define safe_ferealloc(ptr, nmemb, size, offset, fallible) \ + ((fallible)?_safe_ferealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)) + +#define fpemalloc(size, persistent, fallible) \ + ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):femalloc(size, fallible)) +#define fperealloc(ptr, size, persistent, fallible) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):ferealloc((ptr), (size), (fallible))) +#define fperealloc2(ptr, size, copy_size, persistent, fallible) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):ferealloc2((ptr), (size), (copy_size), (fallible))) +#define safe_fpemalloc(nmemb, size, offset, persistent, fallible) \ + ((persistent)?_safe_malloc(nmemb, size, offset):safe_femalloc(nmemb, size, offset, fallible)) +#define safe_fperealloc(ptr, nmemb, size, offset, persistent, fallible) \ + ((persistent)?_safe_realloc(ptr, nmemb, size, offset):safe_ferealloc(ptr, nmemb, size, offset, fallible)) + ZEND_API zend_result zend_set_memory_limit(size_t memory_limit); +ZEND_API zend_result zend_set_memory_hard_limit_percent(zend_long percent); ZEND_API bool zend_alloc_in_memory_limit_error_reporting(void); ZEND_API void start_memory_manager(void); @@ -268,6 +317,9 @@ ZEND_API size_t zend_mm_gc(zend_mm_heap *heap); +ZEND_API bool zend_mm_is_fallible(void); +ZEND_API void zend_mm_set_fallible(bool fallible); + #define ZEND_MM_CUSTOM_HEAP_NONE 0 #define ZEND_MM_CUSTOM_HEAP_STD 1 #define ZEND_MM_CUSTOM_HEAP_DEBUG 2 @@ -316,6 +368,17 @@ ZEND_API zend_mm_storage *zend_mm_get_storage(zend_mm_heap *heap); ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void *data, size_t data_size); +ZEND_API ZEND_COLD void zend_mm_delayed_error_or_panic(bool delay, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); +ZEND_API void ZEND_FASTCALL zend_handle_delayed_oom(void); +ZEND_COLD void zend_mm_oom_info_dtor(zend_oom_info *info); + +/* Exit status of a process that stopped because of ZEND_MM_MAX_ALLOCS, so that + * it can be told apart from an ordinary fatal error. */ +#define ZEND_MM_MAX_ALLOCS_EXIT_STATUS 121 + +ZEND_API void zend_mm_set_max_allocs(uint64_t max_allocs); +ZEND_API bool zend_mm_max_allocs_hit(void); + /* // The following example shows how to use zend_mm_heap API with custom storage diff -Nru php8.4-8.4.26/Zend/zend_atomic.h php8.4-8.4.27/Zend/zend_atomic.h --- php8.4-8.4.26/Zend/zend_atomic.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_atomic.h 2026-10-19 14:38:59.000000000 +0000 @@ -385,6 +385,23 @@ ZEND_API int zend_atomic_int_load(const zend_atomic_int *obj); #endif +#if defined(HAVE_C11_ATOMICS) +# define ZEND_ATOMIC_FENCE_RELEASE() __c11_atomic_thread_fence(__ATOMIC_RELEASE) +# define ZEND_ATOMIC_FENCE_ACQUIRE() __c11_atomic_thread_fence(__ATOMIC_ACQUIRE) +#elif defined(HAVE_GNUC_ATOMICS) +# define ZEND_ATOMIC_FENCE_RELEASE() __atomic_thread_fence(__ATOMIC_RELEASE) +# define ZEND_ATOMIC_FENCE_ACQUIRE() __atomic_thread_fence(__ATOMIC_ACQUIRE) +#elif defined(HAVE_SYNC_ATOMICS) +# define ZEND_ATOMIC_FENCE_RELEASE() __sync_synchronize() +# define ZEND_ATOMIC_FENCE_ACQUIRE() __sync_synchronize() +#elif defined(ZEND_WIN32) +# define ZEND_ATOMIC_FENCE_RELEASE() MemoryBarrier() +# define ZEND_ATOMIC_FENCE_ACQUIRE() MemoryBarrier() +#else +# define ZEND_ATOMIC_FENCE_RELEASE() ((void)0) +# define ZEND_ATOMIC_FENCE_ACQUIRE() ((void)0) +#endif + END_EXTERN_C() #endif diff -Nru php8.4-8.4.26/Zend/zend_attributes.c php8.4-8.4.27/Zend/zend_attributes.c --- php8.4-8.4.26/Zend/zend_attributes.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_attributes.c 2026-10-19 14:38:59.000000000 +0000 @@ -121,6 +121,12 @@ ZEND_PARSE_PARAMETERS_NONE(); } +void zend_sensitive_parameter_value_init(zend_object *obj, zval *value) +{ + ZEND_ASSERT(obj->ce == zend_ce_sensitive_parameter_value); + zend_update_property_ex(zend_ce_sensitive_parameter_value, obj, ZSTR_KNOWN(ZEND_STR_VALUE), value); +} + ZEND_METHOD(SensitiveParameterValue, __construct) { zval *value; @@ -129,7 +135,7 @@ Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); - zend_update_property_ex(zend_ce_sensitive_parameter_value, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_VALUE), value); + zend_sensitive_parameter_value_init(Z_OBJ_P(ZEND_THIS), value); } ZEND_METHOD(SensitiveParameterValue, getValue) diff -Nru php8.4-8.4.26/Zend/zend_attributes.h php8.4-8.4.27/Zend/zend_attributes.h --- php8.4-8.4.26/Zend/zend_attributes.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_attributes.h 2026-10-19 14:38:59.000000000 +0000 @@ -127,4 +127,6 @@ void zend_register_attribute_ce(void); void zend_attributes_shutdown(void); +void zend_sensitive_parameter_value_init(zend_object *obj, zval *value); + #endif diff -Nru php8.4-8.4.26/Zend/zend_builtin_functions.c php8.4-8.4.27/Zend/zend_builtin_functions.c --- php8.4-8.4.26/Zend/zend_builtin_functions.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_builtin_functions.c 2026-10-19 14:38:59.000000000 +0000 @@ -1664,7 +1664,7 @@ } /* }}} */ -static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /* {{{ */ +static bool debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /* {{{ */ { uint32_t num_args = ZEND_CALL_NUM_ARGS(call); @@ -1672,8 +1672,9 @@ uint32_t i = 0; zval *p = ZEND_CALL_ARG(call, 1); - array_init_size(arg_array, num_args); - zend_hash_real_init_packed(Z_ARRVAL_P(arg_array)); + if (!array_finit_size_packed(arg_array, num_args)) { + return false; + } ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(arg_array)) { if (call->func->type == ZEND_USER_FUNCTION) { uint32_t first_extra_arg = MIN(num_args, call->func->op_array.num_args); @@ -1706,8 +1707,13 @@ if (is_sensitive) { zval redacted_arg; object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); - zend_call_known_function(Z_OBJCE_P(&redacted_arg)->constructor, Z_OBJ_P(&redacted_arg), Z_OBJCE_P(&redacted_arg), NULL, 1, &original_arg, NULL); + zend_sensitive_parameter_value_init(Z_OBJ(redacted_arg), &original_arg); ZEND_HASH_FILL_SET(&redacted_arg); + if (ZEND_HAS_OOM()) { + zval_ptr_dtor(&redacted_arg); + ZEND_HASH_FILL_FINISH(); + goto oom; + } } else { Z_TRY_ADDREF_P(&original_arg); ZEND_HASH_FILL_SET(&original_arg); @@ -1738,8 +1744,13 @@ if (is_sensitive) { zval redacted_arg; object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); - zend_call_known_function(Z_OBJCE_P(&redacted_arg)->constructor, Z_OBJ_P(&redacted_arg), Z_OBJCE_P(&redacted_arg), NULL, 1, &original_arg, NULL); + zend_sensitive_parameter_value_init(Z_OBJ(redacted_arg), &original_arg); ZEND_HASH_FILL_SET(&redacted_arg); + if (ZEND_HAS_OOM()) { + zval_ptr_dtor(&redacted_arg); + ZEND_HASH_FILL_FINISH(); + goto oom; + } } else { Z_TRY_ADDREF_P(&original_arg); ZEND_HASH_FILL_SET(&original_arg); @@ -1778,8 +1789,13 @@ if (is_sensitive) { zval redacted_arg; object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); - zend_call_known_function(Z_OBJCE_P(&redacted_arg)->constructor, Z_OBJ_P(&redacted_arg), Z_OBJCE_P(&redacted_arg), NULL, 1, &original_arg, NULL); + zend_sensitive_parameter_value_init(Z_OBJ(redacted_arg), &original_arg); ZEND_HASH_FILL_SET(&redacted_arg); + if (ZEND_HAS_OOM()) { + zval_ptr_dtor(&redacted_arg); + ZEND_HASH_FILL_FINISH(); + goto oom; + } } else { Z_TRY_ADDREF_P(&original_arg); ZEND_HASH_FILL_SET(&original_arg); @@ -1814,17 +1830,28 @@ SEPARATE_ARRAY(arg_array); ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(call->extra_named_params, name, arg) { ZVAL_DEREF(arg); + zval *add_result; if (is_sensitive) { zval redacted_arg; object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); - zend_call_method_with_1_params(Z_OBJ_P(&redacted_arg), zend_ce_sensitive_parameter_value, &zend_ce_sensitive_parameter_value->constructor, "__construct", NULL, arg); - zend_hash_add_new(Z_ARRVAL_P(arg_array), name, &redacted_arg); + zend_sensitive_parameter_value_init(Z_OBJ(redacted_arg), arg); + add_result = zend_hash_fadd_new(Z_ARRVAL_P(arg_array), name, &redacted_arg); } else { Z_TRY_ADDREF_P(arg); - zend_hash_add_new(Z_ARRVAL_P(arg_array), name, arg); + add_result = zend_hash_fadd_new(Z_ARRVAL_P(arg_array), name, arg); + } + if (UNEXPECTED(add_result == HASH_NOMEM)) { + goto oom; } } ZEND_HASH_FOREACH_END(); } + + return true; + +oom: + zval_ptr_dtor(arg_array); + ZVAL_EMPTY_ARRAY(arg_array); + return false; } /* }}} */ @@ -2086,7 +2113,11 @@ if ((options & DEBUG_BACKTRACE_IGNORE_ARGS) == 0 && func->type != ZEND_EVAL_CODE) { - debug_backtrace_get_args(call, &tmp); + if (UNEXPECTED(!debug_backtrace_get_args(call, &tmp))) { + ZEND_ASSERT(ZEND_HAS_OOM()); + zend_array_destroy(stack_frame); + return; + } _zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_ARGS), &tmp, 1); } } else { @@ -2146,11 +2177,18 @@ } ZVAL_ARR(&tmp, stack_frame); - zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp); + if (UNEXPECTED(zend_hash_next_index_finsert_new(Z_ARRVAL_P(return_value), &tmp) == HASH_NOMEM)) { + zend_array_destroy(stack_frame); + return; + } frameno++; prev_stack_frame = stack_frame; skip_frame: + if (ZEND_HAS_OOM()) { + return; + } + if (UNEXPECTED(ZEND_CALL_KIND(call) == ZEND_CALL_TOP_FUNCTION) && !fake_frame && prev diff -Nru php8.4-8.4.26/Zend/zend_compile.c php8.4-8.4.27/Zend/zend_compile.c --- php8.4-8.4.26/Zend/zend_compile.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_compile.c 2026-10-19 14:38:59.000000000 +0000 @@ -459,6 +459,7 @@ CG(delayed_autoloads) = NULL; CG(unlinked_uses) = NULL; CG(current_linking_class) = NULL; + CG(interned_strings_fallible) = false; } /* }}} */ diff -Nru php8.4-8.4.26/Zend/zend_cpuinfo.c php8.4-8.4.27/Zend/zend_cpuinfo.c --- php8.4-8.4.26/Zend/zend_cpuinfo.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_cpuinfo.c 2026-10-19 14:38:59.000000000 +0000 @@ -135,7 +135,7 @@ } if (!is_avx_supported()) { - cpuinfo.edx &= ~ZEND_CPU_FEATURE_AVX; + cpuinfo.ecx &= ~ZEND_CPU_FEATURE_AVX; cpuinfo.ebx &= ~(ZEND_CPU_FEATURE_AVX2 & ~ZEND_CPU_EBX_MASK); } } diff -Nru php8.4-8.4.26/Zend/zend_exceptions.c php8.4-8.4.27/Zend/zend_exceptions.c --- php8.4-8.4.26/Zend/zend_exceptions.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_exceptions.c 2026-10-19 14:38:59.000000000 +0000 @@ -103,7 +103,9 @@ return; } - if (exception == add_previous || zend_is_unwind_exit(add_previous) || zend_is_graceful_exit(add_previous)) { + if (exception == add_previous + || zend_is_unwind_exit(exception) || zend_is_graceful_exit(exception) + || zend_is_unwind_exit(add_previous) || zend_is_graceful_exit(add_previous)) { OBJ_RELEASE(add_previous); return; } diff -Nru php8.4-8.4.26/Zend/zend_execute.c php8.4-8.4.27/Zend/zend_execute.c --- php8.4-8.4.26/Zend/zend_execute.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_execute.c 2026-10-19 14:38:59.000000000 +0000 @@ -4083,6 +4083,8 @@ zend_atomic_bool_store_ex(&EG(vm_interrupt), false); if (zend_atomic_bool_load_ex(&EG(timed_out))) { zend_timeout(); + } else if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); } else if (zend_interrupt_function) { zend_interrupt_function(call); } @@ -4673,6 +4675,18 @@ } /* }}} */ +/* Same as cleanup_unfinished_calls(), but only free the call frames. */ +static void free_unfinished_calls(zend_execute_data *execute_data) +{ + zend_execute_data *call = EX(call); + + while (UNEXPECTED(call != NULL)) { + EX(call) = call->prev_execute_data; + zend_vm_stack_free_call_frame(call); + call = EX(call); + } +} + static void cleanup_live_vars(zend_execute_data *execute_data, uint32_t op_num, uint32_t catch_op_num) /* {{{ */ { int i; diff -Nru php8.4-8.4.26/Zend/zend_execute_API.c php8.4-8.4.27/Zend/zend_execute_API.c --- php8.4-8.4.26/Zend/zend_execute_API.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_execute_API.c 2026-10-19 14:38:59.000000000 +0000 @@ -417,10 +417,24 @@ } #endif } else { + /* may be used by zend_error_zstr_at before init_executor */ + ZVAL_UNDEF(&EG(user_error_handler)); + ZVAL_UNDEF(&EG(user_exception_handler)); + memset(&EG(user_error_handlers_error_reporting), 0, sizeof(EG(user_error_handlers_error_reporting))); + memset(&EG(user_error_handlers), 0, sizeof(EG(user_error_handlers))); + memset(&EG(user_exception_handlers), 0, sizeof(EG(user_exception_handlers))); + zend_hash_discard(EG(zend_constants), EG(persistent_constants_count)); } zend_objects_store_free_object_storage(&EG(objects_store), fast_shutdown); + + /* may be used by zend_error_zstr_at before init_executor */ + EG(record_errors) = false; + EG(num_errors) = 0; + EG(errors) = NULL; + EG(error_handling) = EH_NORMAL; + EG(exception) = NULL; } void shutdown_executor(void) /* {{{ */ @@ -455,6 +469,8 @@ */ zend_hash_discard(EG(function_table), EG(persistent_functions_count)); zend_hash_discard(EG(class_table), EG(persistent_classes_count)); + EG(objects_store).object_buckets = NULL; + EG(objects_store).top = 1; } else { zend_vm_stack_destroy(); @@ -806,7 +822,11 @@ if (!EG(active)) { return FAILURE; /* executor is already inactive */ } - + if (ZEND_HAS_OOM()) { + /* Callers expect SUCCESS || EG(exception), so let's throw right now */ + zend_handle_delayed_oom(); + return FAILURE; + } if (EG(exception)) { if (fci_cache) { zend_release_fcall_info_cache(fci_cache); @@ -824,6 +844,12 @@ } if (!zend_is_callable_ex(&fci->function_name, fci->object, 0, NULL, fci_cache, &error)) { + if (EG(exception)) { + if (error) { + efree(error); + } + return SUCCESS; + } ZEND_ASSERT(error && "Should have error if not callable"); zend_string *callable_name = zend_get_callable_name_ex(&fci->function_name, fci->object); @@ -853,6 +879,7 @@ if (UNEXPECTED(EG(exception))) { zend_vm_stack_free_call_frame(call); + zend_release_fcall_info_cache(fci_cache); return SUCCESS; } } @@ -969,6 +996,7 @@ if (zend_handle_undef_args(call) == FAILURE) { zend_vm_stack_free_args(call); zend_vm_stack_free_call_frame(call); + zend_release_fcall_info_cache(fci_cache); return SUCCESS; } } @@ -1014,7 +1042,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1035,21 +1063,24 @@ zval_ptr_dtor(fci->retval); ZVAL_UNDEF(fci->retval); } + } - /* This flag is regularly checked while running user functions, but not internal - * So see whether interrupt flag was set while the function was running... */ - if (zend_atomic_bool_exchange_ex(&EG(vm_interrupt), false)) { - if (zend_atomic_bool_load_ex(&EG(timed_out))) { - zend_timeout(); - } else if (zend_interrupt_function) { - zend_interrupt_function(EG(current_execute_data)); - } + if (UNEXPECTED(zend_atomic_bool_exchange_ex(&EG(vm_interrupt), false))) { + if (zend_atomic_bool_load_ex(&EG(timed_out))) { + zend_timeout(); + } else if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); + zval_ptr_dtor(fci->retval); + ZVAL_UNDEF(fci->retval); + } else if (zend_interrupt_function) { + zend_interrupt_function(EG(current_execute_data)); } + } - if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) { - OBJ_RELEASE(Z_OBJ(call->This)); - } + if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) { + OBJ_RELEASE(Z_OBJ(call->This)); } + EG(fake_scope) = orig_fake_scope; zend_vm_stack_free_call_frame(call); diff -Nru php8.4-8.4.26/Zend/zend_gc.c php8.4-8.4.27/Zend/zend_gc.c --- php8.4-8.4.26/Zend/zend_gc.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_gc.c 2026-10-19 14:38:59.000000000 +0000 @@ -1517,6 +1517,9 @@ GC_ADDREF(ht); if (GC_REF_CHECK_COLOR(ht, GC_WHITE)) { GC_REF_SET_BLACK(ht); + if (!GC_INFO(ht)) { + gc_add_garbage((zend_refcounted *)ht); + } for (; n != 0; n--) { if (Z_REFCOUNTED_P(zv)) { ref = Z_COUNTED_P(zv); @@ -1895,6 +1898,7 @@ zend_object *exception = NULL; remember_prev_exception(&exception); + zend_object *old_exception = exception; if (UNEXPECTED(!fiber)) { fiber = gc_create_destructor_fiber(); @@ -1929,6 +1933,12 @@ } EG(exception) = exception; + + /* Destructors ran in another fiber, out of reach of zend_call_function()'s rethrow */ + if (exception && !old_exception && EG(current_execute_data) && EG(current_execute_data)->func + && ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) { + zend_rethrow_exception(EG(current_execute_data)); + } } ZEND_API int zend_gc_collect_cycles(void) diff -Nru php8.4-8.4.26/Zend/zend_globals.h php8.4-8.4.27/Zend/zend_globals.h --- php8.4-8.4.26/Zend/zend_globals.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_globals.h 2026-10-19 14:38:59.000000000 +0000 @@ -27,6 +27,7 @@ #include "zend_globals_macros.h" +#include "zend_alloc.h" #include "zend_atomic.h" #include "zend_stack.h" #include "zend_ptr_stack.h" @@ -134,6 +135,7 @@ bool multibyte; bool detect_unicode; bool encoding_declared; + bool interned_strings_fallible; zend_ast *ast; zend_arena *ast_arena; @@ -315,6 +317,8 @@ zend_strtod_state strtod_state; void *reserved[ZEND_MAX_RESERVED_RESOURCES]; + + zend_oom_info delayed_oom; }; #define EG_FLAGS_INITIAL (0) diff -Nru php8.4-8.4.26/Zend/zend_hash.c php8.4-8.4.27/Zend/zend_hash.c --- php8.4-8.4.26/Zend/zend_hash.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_hash.c 2026-10-19 14:38:59.000000000 +0000 @@ -84,7 +84,10 @@ #define ZEND_HASH_IF_FULL_DO_RESIZE(ht) \ if ((ht)->nNumUsed >= (ht)->nTableSize) { \ - zend_hash_do_resize(ht); \ + zend_result _resize_status = zend_hash_do_fresize(ht, flag & HASH_FALLIBLE); \ + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(_resize_status == FAILURE)) { \ + return HASH_NOMEM; \ + } \ } ZEND_API void *zend_hash_str_find_ptr_lc(const HashTable *ht, const char *str, size_t len) { @@ -109,9 +112,9 @@ return result; } -static void ZEND_FASTCALL zend_hash_do_resize(HashTable *ht); +static zend_result ZEND_FASTCALL zend_hash_do_fresize(HashTable *ht, bool fallible); -static zend_always_inline uint32_t zend_hash_check_size(uint32_t nSize) +static zend_always_inline uint32_t zend_hash_check_size(uint32_t nSize, bool fallible) { #ifdef ZEND_WIN32 unsigned long index; @@ -122,7 +125,8 @@ if (nSize <= HT_MIN_SIZE) { return HT_MIN_SIZE; } else if (UNEXPECTED(nSize > HT_MAX_SIZE)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%u * %zu + %zu)", nSize, sizeof(Bucket), sizeof(Bucket)); + zend_mm_delayed_error_or_panic(fallible, "Possible integer overflow in memory allocation (%u * %zu + %zu)", nSize, sizeof(Bucket), sizeof(Bucket)); + return 0; } #ifdef ZEND_WIN32 @@ -146,25 +150,34 @@ #endif } -static zend_always_inline void zend_hash_real_init_packed_ex(HashTable *ht) +static zend_always_inline zend_result zend_hash_real_finit_packed_ex(HashTable *ht, bool fallible) { void *data; if (UNEXPECTED(GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)) { - data = pemalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK), 1); + data = fpemalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK), true, fallible); } else if (EXPECTED(ht->nTableSize == HT_MIN_SIZE)) { /* Use specialized API with constant allocation amount for a particularly common case. */ - data = emalloc(HT_PACKED_SIZE_EX(HT_MIN_SIZE, HT_MIN_MASK)); + data = femalloc(HT_PACKED_SIZE_EX(HT_MIN_SIZE, HT_MIN_MASK), fallible); } else { - data = emalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK)); + data = femalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK), fallible); + } + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!data)) { + return FAILURE; } HT_SET_DATA_ADDR(ht, data); /* Don't overwrite iterator count. */ ht->u.v.flags = HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS; HT_HASH_RESET_PACKED(ht); + return SUCCESS; } -static zend_always_inline void zend_hash_real_init_mixed_ex(HashTable *ht) +static zend_always_inline void zend_hash_real_init_packed_ex(HashTable *ht) +{ + zend_hash_real_finit_packed_ex(ht, /* fallible */ false); +} + +static zend_always_inline zend_result zend_hash_real_finit_mixed_ex(HashTable *ht, bool fallible) { void *data; uint32_t nSize = ht->nTableSize; @@ -172,9 +185,15 @@ ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0); if (UNEXPECTED(GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)) { - data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), 1); + data = fpemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), true, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!data)) { + return FAILURE; + } } else if (EXPECTED(nSize == HT_MIN_SIZE)) { - data = emalloc(HT_SIZE_EX(HT_MIN_SIZE, HT_SIZE_TO_MASK(HT_MIN_SIZE))); + data = femalloc(HT_SIZE_EX(HT_MIN_SIZE, HT_SIZE_TO_MASK(HT_MIN_SIZE)), fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!data)) { + return FAILURE; + } ht->nTableMask = HT_SIZE_TO_MASK(HT_MIN_SIZE); HT_SET_DATA_ADDR(ht, data); /* Don't overwrite iterator count. */ @@ -221,27 +240,42 @@ HT_HASH_EX(data, 14) = -1; HT_HASH_EX(data, 15) = -1; #endif - return; + return SUCCESS; } else { - data = emalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize))); + data = femalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!data)) { + return FAILURE; + } } ht->nTableMask = HT_SIZE_TO_MASK(nSize); HT_SET_DATA_ADDR(ht, data); HT_FLAGS(ht) = HASH_FLAG_STATIC_KEYS; HT_HASH_RESET(ht); + + return SUCCESS; } -static zend_always_inline void zend_hash_real_init_ex(HashTable *ht, bool packed) +static zend_always_inline void zend_hash_real_init_mixed_ex(HashTable *ht) +{ + zend_hash_real_finit_mixed_ex(ht, /* fallible */ false); +} + +static zend_always_inline zend_result zend_hash_real_finit_ex(HashTable *ht, bool packed, bool fallible) { HT_ASSERT_RC1(ht); ZEND_ASSERT(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED); if (packed) { - zend_hash_real_init_packed_ex(ht); + return zend_hash_real_finit_packed_ex(ht, fallible); } else { - zend_hash_real_init_mixed_ex(ht); + return zend_hash_real_finit_mixed_ex(ht, fallible); } } +static zend_always_inline void zend_hash_real_init_ex(HashTable *ht, bool packed) +{ + zend_hash_real_finit_ex(ht, packed, /* fallible */ false); +} + static const uint32_t uninitialized_bucket[-HT_MIN_MASK] = {HT_INVALID_IDX, HT_INVALID_IDX}; @@ -259,7 +293,7 @@ .pDestructor = ZVAL_PTR_DTOR }; -static zend_always_inline void _zend_hash_init_int(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor, bool persistent) +static zend_always_inline zend_result _zend_hash_finit_int(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor, bool persistent, bool fallible) { GC_SET_REFCOUNT(ht, 1); GC_TYPE_INFO(ht) = GC_ARRAY | (persistent ? ((GC_PERSISTENT|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT) : 0); @@ -271,7 +305,16 @@ ht->nInternalPointer = 0; ht->nNextFreeElement = ZEND_LONG_MIN; ht->pDestructor = pDestructor; - ht->nTableSize = zend_hash_check_size(nSize); + ht->nTableSize = zend_hash_check_size(nSize, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ht->nTableSize)) { + return FAILURE; + } + return SUCCESS; +} + +static zend_always_inline void _zend_hash_init_int(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor, bool persistent) +{ + _zend_hash_finit_int(ht, nSize, pDestructor, persistent, /* fallible */ false); } ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor, bool persistent) @@ -286,6 +329,26 @@ return ht; } +ZEND_API HashTable* ZEND_FASTCALL _zend_fnew_array_0(void) +{ + HashTable *ht = femalloc(sizeof(HashTable), /* fallible */ true); + if (UNEXPECTED(ht == NULL)) { + return NULL; + } + if (UNEXPECTED(_zend_hash_finit_int(ht, HT_MIN_SIZE, ZVAL_PTR_DTOR, /* persistent */ false, /* fallible */ true) == FAILURE)) { + efree(ht); + return NULL; + } + return ht; +} + +ZEND_API HashTable* ZEND_FASTCALL zend_new_array_singleton(void) +{ + HashTable *ht = _zend_new_array_0(); + ht->nTableSize = 1; + return ht; +} + ZEND_API HashTable* ZEND_FASTCALL _zend_new_array(uint32_t nSize) { HashTable *ht = emalloc(sizeof(HashTable)); @@ -293,6 +356,20 @@ return ht; } +ZEND_API HashTable* ZEND_FASTCALL _zend_fnew_array(uint32_t nSize) +{ + HashTable *ht = femalloc(sizeof(HashTable), /* fallible */ true); + if (UNEXPECTED(ht == NULL)) { + return NULL; + } + + if (UNEXPECTED(_zend_hash_finit_int(ht, nSize, ZVAL_PTR_DTOR, /* persistent */ false, /* fallible */ true) == FAILURE)) { + efree(ht); + return NULL; + } + return ht; +} + ZEND_API HashTable* ZEND_FASTCALL zend_new_pair(zval *val1, zval *val2) { zval *zv; @@ -308,15 +385,26 @@ return ht; } -ZEND_API void ZEND_FASTCALL zend_hash_packed_grow(HashTable *ht) +ZEND_API zend_result ZEND_FASTCALL zend_hash_packed_fgrow(HashTable *ht, bool fallible) { HT_ASSERT_RC1(ht); if (ht->nTableSize >= HT_MAX_SIZE) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%u * %zu + %zu)", ht->nTableSize * 2, sizeof(Bucket), sizeof(Bucket)); + zend_mm_delayed_error_or_panic(fallible, "Possible integer overflow in memory allocation (%u * %zu + %zu)", ht->nTableSize * 2, sizeof(Bucket), sizeof(Bucket)); + return FAILURE; } uint32_t newTableSize = ht->nTableSize * 2; - HT_SET_DATA_ADDR(ht, perealloc2(HT_GET_DATA_ADDR(ht), HT_PACKED_SIZE_EX(newTableSize, HT_MIN_MASK), HT_PACKED_USED_SIZE(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)); + void *newData = fperealloc2(HT_GET_DATA_ADDR(ht), HT_PACKED_SIZE_EX(newTableSize, HT_MIN_MASK), HT_PACKED_USED_SIZE(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!newData)) { + return FAILURE; + } + HT_SET_DATA_ADDR(ht, newData); ht->nTableSize = newTableSize; + return SUCCESS; +} + +ZEND_API void ZEND_FASTCALL zend_hash_packed_grow(HashTable *ht) +{ + zend_hash_packed_fgrow(ht, /* fallible */ false); } ZEND_API void ZEND_FASTCALL zend_hash_real_init(HashTable *ht, bool packed) @@ -327,6 +415,14 @@ zend_hash_real_init_ex(ht, packed); } +ZEND_API zend_result ZEND_FASTCALL zend_hash_real_finit(HashTable *ht, bool packed, bool fallible) +{ + IS_CONSISTENT(ht); + + HT_ASSERT_RC1(ht); + return zend_hash_real_finit_ex(ht, packed, fallible); +} + ZEND_API void ZEND_FASTCALL zend_hash_real_init_packed(HashTable *ht) { IS_CONSISTENT(ht); @@ -335,6 +431,15 @@ zend_hash_real_init_packed_ex(ht); } +/* Fallible variant of zend_hash_real_init_packed */ +ZEND_API zend_result ZEND_FASTCALL zend_hash_real_finit_packed(HashTable *ht, bool fallible) +{ + IS_CONSISTENT(ht); + + HT_ASSERT_RC1(ht); + return zend_hash_real_finit_packed_ex(ht, fallible); +} + ZEND_API void ZEND_FASTCALL zend_hash_real_init_mixed(HashTable *ht) { IS_CONSISTENT(ht); @@ -343,7 +448,16 @@ zend_hash_real_init_mixed_ex(ht); } -ZEND_API void ZEND_FASTCALL zend_hash_packed_to_hash(HashTable *ht) +/* Fallible variant of zend_hash_real_init_mixed */ +ZEND_API zend_result ZEND_FASTCALL zend_hash_real_finit_mixed(HashTable *ht, bool fallible) +{ + IS_CONSISTENT(ht); + + HT_ASSERT_RC1(ht); + return zend_hash_real_finit_mixed_ex(ht, fallible); +} + +ZEND_API zend_result ZEND_FASTCALL zend_hash_fconvert_packed_to_hash(HashTable *ht, bool fallible) { void *new_data, *old_data = HT_GET_DATA_ADDR(ht); zval *src = ht->arPacked; @@ -355,7 +469,10 @@ HT_ASSERT_RC1(ht); // Alloc before assign to avoid inconsistencies on OOM - new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); + new_data = fpemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!new_data)) { + return FAILURE; + } HT_FLAGS(ht) &= ~HASH_FLAG_PACKED; ht->nTableMask = HT_SIZE_TO_MASK(ht->nTableSize); HT_SET_DATA_ADDR(ht, new_data); @@ -369,6 +486,12 @@ } pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); zend_hash_rehash(ht); + return SUCCESS; +} + +ZEND_API void ZEND_FASTCALL zend_hash_packed_to_hash(HashTable *ht) +{ + zend_hash_fconvert_packed_to_hash(ht, /* fallible */ false); } ZEND_API void ZEND_FASTCALL zend_hash_to_packed(HashTable *ht) @@ -393,25 +516,39 @@ pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); } -ZEND_API void ZEND_FASTCALL zend_hash_extend(HashTable *ht, uint32_t nSize, bool packed) +static zend_always_inline zend_result ZEND_FASTCALL _zend_hash_fextend(HashTable *ht, uint32_t nSize, bool packed, bool fallible) { HT_ASSERT_RC1(ht); - if (nSize == 0) return; + if (nSize == 0) return SUCCESS; ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0); if (UNEXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) { if (nSize > ht->nTableSize) { - ht->nTableSize = zend_hash_check_size(nSize); + uint32_t newTableSize = zend_hash_check_size(nSize, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!newTableSize)) { + return FAILURE; + } + ht->nTableSize = newTableSize; + } + zend_result status = zend_hash_real_finit(ht, packed, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(status == FAILURE)) { + return FAILURE; } - zend_hash_real_init(ht, packed); } else { if (packed) { ZEND_ASSERT(HT_IS_PACKED(ht)); if (nSize > ht->nTableSize) { - uint32_t newTableSize = zend_hash_check_size(nSize); - HT_SET_DATA_ADDR(ht, perealloc2(HT_GET_DATA_ADDR(ht), HT_PACKED_SIZE_EX(newTableSize, HT_MIN_MASK), HT_PACKED_USED_SIZE(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)); + uint32_t newTableSize = zend_hash_check_size(nSize, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!newTableSize)) { + return FAILURE; + } + void *new_data = fperealloc2(HT_GET_DATA_ADDR(ht), HT_PACKED_SIZE_EX(newTableSize, HT_MIN_MASK), HT_PACKED_USED_SIZE(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!new_data)) { + return FAILURE; + } + HT_SET_DATA_ADDR(ht, new_data); ht->nTableSize = newTableSize; } } else { @@ -419,8 +556,14 @@ if (nSize > ht->nTableSize) { void *new_data, *old_data = HT_GET_DATA_ADDR(ht); Bucket *old_buckets = ht->arData; - nSize = zend_hash_check_size(nSize); - new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); + nSize = zend_hash_check_size(nSize, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!nSize)) { + return FAILURE; + } + new_data = fpemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!new_data)) { + return FAILURE; + } ht->nTableSize = nSize; ht->nTableMask = HT_SIZE_TO_MASK(ht->nTableSize); HT_SET_DATA_ADDR(ht, new_data); @@ -430,6 +573,18 @@ } } } + + return SUCCESS; +} + +ZEND_API zend_result ZEND_FASTCALL zend_hash_fextend(HashTable *ht, uint32_t nSize, bool packed) +{ + return _zend_hash_fextend(ht, nSize, packed, /* fallible */ true); +} + +ZEND_API void ZEND_FASTCALL zend_hash_extend(HashTable *ht, uint32_t nSize, bool packed) +{ + _zend_hash_fextend(ht, nSize, packed, /* fallible */ false); } ZEND_API void ZEND_FASTCALL zend_hash_discard(HashTable *ht, uint32_t nNumUsed) @@ -834,10 +989,16 @@ if (UNEXPECTED(HT_FLAGS(ht) & (HASH_FLAG_UNINITIALIZED|HASH_FLAG_PACKED))) { if (EXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) { - zend_hash_real_init_mixed(ht); + zend_result status = zend_hash_real_finit_mixed(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + return HASH_NOMEM; + } goto add_to_hash; } else { - zend_hash_packed_to_hash(ht); + zend_result status = zend_hash_fconvert_packed_to_hash(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + return HASH_NOMEM; + } } } else if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) { p = zend_hash_find_bucket(ht, key); @@ -1006,6 +1167,11 @@ return _zend_hash_add_or_update_i(ht, key, pData, HASH_UPDATE); } +ZEND_API zval* ZEND_FASTCALL zend_hash_fupdate(HashTable *ht, zend_string *key, zval *pData) +{ + return _zend_hash_add_or_update_i(ht, key, pData, HASH_UPDATE | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_update_ind(HashTable *ht, zend_string *key, zval *pData) { return _zend_hash_add_or_update_i(ht, key, pData, HASH_UPDATE | HASH_UPDATE_INDIRECT); @@ -1016,11 +1182,21 @@ return _zend_hash_add_or_update_i(ht, key, pData, HASH_ADD_NEW); } +ZEND_API zval* ZEND_FASTCALL zend_hash_fadd_new(HashTable *ht, zend_string *key, zval *pData) +{ + return _zend_hash_add_or_update_i(ht, key, pData, HASH_ADD_NEW | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_lookup(HashTable *ht, zend_string *key) { return _zend_hash_add_or_update_i(ht, key, NULL, HASH_LOOKUP); } +ZEND_API zval* ZEND_FASTCALL zend_hash_flookup(HashTable *ht, zend_string *key) +{ + return _zend_hash_add_or_update_i(ht, key, NULL, HASH_LOOKUP | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_str_add_or_update(HashTable *ht, const char *str, size_t len, zval *pData, uint32_t flag) { if (flag == HASH_ADD) { @@ -1119,7 +1295,10 @@ ZVAL_COPY_VALUE(zv, pData); return zv; } else { /* we have to keep the order :( */ - goto convert_to_hash; + zend_result status = zend_hash_fconvert_packed_to_hash(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + return HASH_NOMEM; + } } } else if (EXPECTED(h < ht->nTableSize)) { add_to_packed: @@ -1145,21 +1324,34 @@ return zv; } else if ((h >> 1) < ht->nTableSize && (ht->nTableSize >> 1) < ht->nNumOfElements) { - zend_hash_packed_grow(ht); + zend_result status = zend_hash_packed_fgrow(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + return HASH_NOMEM; + } goto add_to_packed; } else { + uint32_t origSize = ht->nTableSize; if (ht->nNumUsed >= ht->nTableSize) { ht->nTableSize += ht->nTableSize; } -convert_to_hash: - zend_hash_packed_to_hash(ht); + zend_result status = zend_hash_fconvert_packed_to_hash(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + ht->nTableSize = origSize; + return HASH_NOMEM; + } } } else if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) { if (h < ht->nTableSize) { - zend_hash_real_init_packed_ex(ht); + zend_result status = zend_hash_real_finit_packed_ex(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + return HASH_NOMEM; + } goto add_to_packed; } - zend_hash_real_init_mixed(ht); + zend_result status = zend_hash_real_finit_mixed(ht, flag & HASH_FALLIBLE); + if (ZEND_CONST_COND(flag & HASH_FALLIBLE, true) && UNEXPECTED(status == FAILURE)) { + return HASH_NOMEM; + } } else { if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) { p = zend_hash_index_find_bucket(ht, h); @@ -1228,21 +1420,41 @@ return _zend_hash_index_add_or_update_i(ht, h, pData, HASH_UPDATE); } +ZEND_API zval* ZEND_FASTCALL zend_hash_index_fupdate(HashTable *ht, zend_ulong h, zval *pData) +{ + return _zend_hash_index_add_or_update_i(ht, h, pData, HASH_UPDATE | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_insert(HashTable *ht, zval *pData) { return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEXT); } +ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_finsert(HashTable *ht, zval *pData) +{ + return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEXT | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_insert_new(HashTable *ht, zval *pData) { return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEW | HASH_ADD_NEXT); } +ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_finsert_new(HashTable *ht, zval *pData) +{ + return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEW | HASH_ADD_NEXT | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_index_lookup(HashTable *ht, zend_ulong h) { return _zend_hash_index_add_or_update_i(ht, h, NULL, HASH_LOOKUP); } +ZEND_API zval* ZEND_FASTCALL zend_hash_index_flookup(HashTable *ht, zend_ulong h) +{ + return _zend_hash_index_add_or_update_i(ht, h, NULL, HASH_LOOKUP | HASH_FALLIBLE); +} + ZEND_API zval* ZEND_FASTCALL zend_hash_set_bucket_key(HashTable *ht, Bucket *b, zend_string *key) { uint32_t nIndex; @@ -1304,9 +1516,8 @@ return &b->val; } -static void ZEND_FASTCALL zend_hash_do_resize(HashTable *ht) +static zend_result ZEND_FASTCALL zend_hash_do_fresize(HashTable *ht, bool fallible) { - IS_CONSISTENT(ht); HT_ASSERT_RC1(ht); @@ -1320,7 +1531,10 @@ ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0); - new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); + new_data = fpemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!new_data)) { + return FAILURE; + } ht->nTableSize = nSize; ht->nTableMask = HT_SIZE_TO_MASK(ht->nTableSize); HT_SET_DATA_ADDR(ht, new_data); @@ -1328,8 +1542,10 @@ pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); zend_hash_rehash(ht); } else { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%u * %zu + %zu)", ht->nTableSize * 2, sizeof(Bucket) + sizeof(uint32_t), sizeof(Bucket)); + zend_mm_delayed_error_or_panic(fallible, "Possible integer overflow in memory allocation (%u * %zu + %zu)", ht->nTableSize * 2, sizeof(Bucket) + sizeof(uint32_t), sizeof(Bucket)); + return FAILURE; } + return SUCCESS; } ZEND_API void ZEND_FASTCALL zend_hash_rehash(HashTable *ht) diff -Nru php8.4-8.4.26/Zend/zend_hash.h php8.4-8.4.27/Zend/zend_hash.h --- php8.4-8.4.26/Zend/zend_hash.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_hash.h 2026-10-19 14:38:59.000000000 +0000 @@ -36,6 +36,7 @@ #define HASH_ADD_NEW (1<<3) #define HASH_ADD_NEXT (1<<4) #define HASH_LOOKUP (1<<5) +#define HASH_FALLIBLE (1<<6) /* Use fallible allocation. Return FAILURE or HASH_NOMEM when allocation fails (for functions with zend_result or zval* types, respectively). */ #define HASH_FLAG_CONSISTENCY ((1<<0) | (1<<1)) #define HASH_FLAG_PACKED (1<<2) @@ -90,6 +91,7 @@ Z_TYPE_INFO_P(__z) = IS_ARRAY; \ } while (0) +#define HASH_NOMEM ((zval*)-1) typedef struct _zend_hash_key { zend_ulong h; @@ -117,6 +119,11 @@ ZEND_API void ZEND_FASTCALL zend_hash_discard(HashTable *ht, uint32_t nNumUsed); ZEND_API void ZEND_FASTCALL zend_hash_packed_grow(HashTable *ht); +ZEND_API zend_result ZEND_FASTCALL zend_hash_real_finit(HashTable *ht, bool packed, bool fallible); +ZEND_API zend_result ZEND_FASTCALL zend_hash_real_finit_packed(HashTable *ht, bool fallible); +ZEND_API zend_result ZEND_FASTCALL zend_hash_real_finit_mixed(HashTable *ht, bool fallible); +ZEND_API zend_result ZEND_FASTCALL zend_hash_fextend(HashTable *ht, uint32_t nSize, bool packed); + /* additions/updates/changes */ ZEND_API zval* ZEND_FASTCALL zend_hash_add_or_update(HashTable *ht, zend_string *key, zval *pData, uint32_t flag); ZEND_API zval* ZEND_FASTCALL zend_hash_update(HashTable *ht, zend_string *key,zval *pData); @@ -124,6 +131,9 @@ ZEND_API zval* ZEND_FASTCALL zend_hash_add(HashTable *ht, zend_string *key,zval *pData); ZEND_API zval* ZEND_FASTCALL zend_hash_add_new(HashTable *ht, zend_string *key,zval *pData); +ZEND_API zval* ZEND_FASTCALL zend_hash_fupdate(HashTable *ht, zend_string *key,zval *pData); +ZEND_API zval* ZEND_FASTCALL zend_hash_fadd_new(HashTable *ht, zend_string *key,zval *pData); + ZEND_API zval* ZEND_FASTCALL zend_hash_str_add_or_update(HashTable *ht, const char *key, size_t len, zval *pData, uint32_t flag); ZEND_API zval* ZEND_FASTCALL zend_hash_str_update(HashTable *ht, const char *key, size_t len, zval *pData); ZEND_API zval* ZEND_FASTCALL zend_hash_str_update_ind(HashTable *ht, const char *key, size_t len, zval *pData); @@ -137,6 +147,10 @@ ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_insert(HashTable *ht, zval *pData); ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_insert_new(HashTable *ht, zval *pData); +ZEND_API zval* ZEND_FASTCALL zend_hash_index_fupdate(HashTable *ht, zend_ulong h, zval *pData); +ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_finsert(HashTable *ht, zval *pData); +ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_finsert_new(HashTable *ht, zval *pData); + ZEND_API zval* ZEND_FASTCALL zend_hash_index_add_empty_element(HashTable *ht, zend_ulong h); ZEND_API zval* ZEND_FASTCALL zend_hash_add_empty_element(HashTable *ht, zend_string *key); ZEND_API zval* ZEND_FASTCALL zend_hash_str_add_empty_element(HashTable *ht, const char *key, size_t len); @@ -216,6 +230,9 @@ ZEND_API zval* ZEND_FASTCALL zend_hash_lookup(HashTable *ht, zend_string *key); ZEND_API zval* ZEND_FASTCALL zend_hash_index_lookup(HashTable *ht, zend_ulong h); +ZEND_API zval* ZEND_FASTCALL zend_hash_flookup(HashTable *ht, zend_string *key); +ZEND_API zval* ZEND_FASTCALL zend_hash_index_flookup(HashTable *ht, zend_ulong h); + #define ZEND_HASH_INDEX_LOOKUP(_ht, _h, _ret) do { \ if (EXPECTED(HT_IS_PACKED(_ht))) { \ if (EXPECTED((zend_ulong)(_h) < (zend_ulong)(_ht)->nNumUsed)) { \ @@ -334,12 +351,25 @@ : \ _zend_new_array((size)) \ ) +# define zend_fnew_array(size) \ + (__builtin_constant_p(size) ? \ + ((((uint32_t)(size)) <= HT_MIN_SIZE) ? \ + _zend_fnew_array_0() \ + : \ + _zend_fnew_array((size)) \ + ) \ + : \ + _zend_fnew_array((size)) \ + ) #else # define zend_new_array(size) \ _zend_new_array(size) +# define zend_fnew_array(size) \ + _zend_fnew_array(size) #endif ZEND_API HashTable* ZEND_FASTCALL _zend_new_array_0(void); +ZEND_API HashTable* ZEND_FASTCALL zend_new_array_singleton(void); ZEND_API HashTable* ZEND_FASTCALL _zend_new_array(uint32_t size); ZEND_API HashTable* ZEND_FASTCALL zend_new_pair(zval *val1, zval *val2); ZEND_API uint32_t zend_array_count(HashTable *ht); @@ -350,6 +380,9 @@ ZEND_API HashTable* ZEND_FASTCALL zend_symtable_to_proptable(HashTable *ht); ZEND_API HashTable* ZEND_FASTCALL zend_proptable_to_symtable(HashTable *ht, bool always_duplicate); +ZEND_API HashTable* ZEND_FASTCALL _zend_fnew_array_0(void); +ZEND_API HashTable* ZEND_FASTCALL _zend_fnew_array(uint32_t size); + ZEND_API bool ZEND_FASTCALL _zend_handle_numeric_str_ex(const char *key, size_t length, zend_ulong *idx); ZEND_API uint32_t ZEND_FASTCALL zend_hash_iterator_add(HashTable *ht, HashPosition pos); @@ -492,6 +525,16 @@ } } +static zend_always_inline zval *zend_symtable_fupdate(HashTable *ht, zend_string *key, zval *pData) +{ + zend_ulong idx; + + if (ZEND_HANDLE_NUMERIC(key, idx)) { + return zend_hash_index_fupdate(ht, idx, pData); + } else { + return zend_hash_fupdate(ht, key, pData); + } +} static zend_always_inline zval *zend_symtable_update_ind(HashTable *ht, zend_string *key, zval *pData) { @@ -504,7 +547,6 @@ } } - static zend_always_inline zend_result zend_symtable_del(HashTable *ht, zend_string *key) { zend_ulong idx; @@ -812,16 +854,28 @@ return zv ? Z_PTR_P(zv) : NULL; } -static zend_always_inline void *zend_hash_index_update_ptr(HashTable *ht, zend_ulong h, void *pData) +static zend_always_inline void *zend_hash_index_fupdate_ptr(HashTable *ht, zend_ulong h, void *pData, bool fallible) { zval tmp, *zv; ZVAL_PTR(&tmp, pData); - zv = zend_hash_index_update(ht, h, &tmp); + if (fallible) { + zv = zend_hash_index_fupdate(ht, h, &tmp); + if (UNEXPECTED(zv == HASH_NOMEM)) { + return HASH_NOMEM; + } + } else { + zv = zend_hash_index_update(ht, h, &tmp); + } ZEND_ASSERT(Z_PTR_P(zv)); return Z_PTR_P(zv); } +static zend_always_inline void *zend_hash_index_update_ptr(HashTable *ht, zend_ulong h, void *pData) +{ + return zend_hash_index_fupdate_ptr(ht, h, pData, /* fallible */ false); +} + static zend_always_inline void *zend_hash_index_add_mem(HashTable *ht, zend_ulong h, void *pData, size_t size) { zval tmp, *zv; diff -Nru php8.4-8.4.26/Zend/zend_lazy_objects.c php8.4-8.4.27/Zend/zend_lazy_objects.c --- php8.4-8.4.26/Zend/zend_lazy_objects.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_lazy_objects.c 2026-10-19 14:38:59.000000000 +0000 @@ -179,6 +179,20 @@ return info->lazy_properties_count == 0; } +#if ZEND_DEBUG +/* See zend_update_class_constants(). */ +static zend_always_inline bool zend_class_constants_are_updated(const zend_class_entry *ce) { + if (ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED) { + return true; + } + if (ZEND_MAP_PTR(ce->mutable_data)) { + const zend_class_mutable_data *mutable_data = ZEND_MAP_PTR_GET_IMM(ce->mutable_data); + return mutable_data && (mutable_data->ce_flags & ZEND_ACC_CONSTANTS_UPDATED); + } + return false; +} +#endif + /** * Making objects lazy */ @@ -259,11 +273,9 @@ return NULL; } - if (UNEXPECTED(!(reflection_ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) { - if (UNEXPECTED(zend_update_class_constants(reflection_ce) != SUCCESS)) { - ZEND_ASSERT(EG(exception)); - return NULL; - } + if (UNEXPECTED(zend_update_class_constants(reflection_ce) != SUCCESS)) { + ZEND_ASSERT(EG(exception)); + return NULL; } obj = zend_objects_new(reflection_ce); @@ -383,7 +395,9 @@ zend_class_entry *ce = obj->ce; - ZEND_ASSERT(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED); +#if ZEND_DEBUG + ZEND_ASSERT(zend_class_constants_are_updated(ce)); +#endif zval *default_properties_table = CE_DEFAULT_PROPERTIES_TABLE(ce); zval *properties_table = obj->properties_table; @@ -579,7 +593,9 @@ zend_class_entry *ce = obj->ce; - ZEND_ASSERT(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED); +#if ZEND_DEBUG + ZEND_ASSERT(zend_class_constants_are_updated(ce)); +#endif if (zend_object_is_lazy_proxy(obj)) { return zend_lazy_object_init_proxy(obj); @@ -797,16 +813,28 @@ } zend_get_gc_buffer_add_zval(gc_buffer, &info->u.initializer.zv); - /* Uninitialized lazy objects can not have dynamic properties, so we can - * ignore zobj->properties. */ - zval *prop = zobj->properties_table; - zval *end = prop + zobj->ce->default_properties_count; - for ( ; prop < end; prop++) { - zend_get_gc_buffer_add_zval(gc_buffer, prop); + /* Lazy objects may have a properties ht in two cases: + * - After fetching debug infos + * - After lazy init failed in zend_std_get_properties() + * + * In the latter case zobj->properties is an empty ht. We should ignore it, + * otherwise we may mask references to the GC. In the former case we must + * return it, otherwise the GC may traverse properties twice in case the ht + * it a root by itself. */ + zend_array *ht; + if (zobj->properties && zend_hash_num_elements(zobj->properties) > 0) { + ht = zobj->properties; + } else { + zval *prop = zobj->properties_table; + zval *end = prop + zobj->ce->default_properties_count; + for ( ; prop < end; prop++) { + zend_get_gc_buffer_add_zval(gc_buffer, prop); + } + ht = NULL; } zend_get_gc_buffer_use(gc_buffer, table, n); - return NULL; + return ht; } zend_property_info *zend_lazy_object_get_property_info_for_slot(zend_object *obj, zval *slot) diff -Nru php8.4-8.4.26/Zend/zend_llist.c php8.4-8.4.27/Zend/zend_llist.c --- php8.4-8.4.26/Zend/zend_llist.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_llist.c 2026-10-19 14:38:59.000000000 +0000 @@ -243,11 +243,11 @@ zend_llist_element *element; va_list args; - va_start(args, num_args); for (element=l->head; element; element=element->next) { + va_start(args, num_args); func(element->data, num_args, args); + va_end(args); } - va_end(args); } diff -Nru php8.4-8.4.26/Zend/zend_objects.c php8.4-8.4.27/Zend/zend_objects.c --- php8.4-8.4.26/Zend/zend_objects.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_objects.c 2026-10-19 14:38:59.000000000 +0000 @@ -116,7 +116,7 @@ zend_function *destructor = object->ce->destructor; if (destructor) { - if (UNEXPECTED(zend_object_is_lazy(object))) { + if (UNEXPECTED(zend_object_is_lazy(object) || ZEND_HAS_OOM())) { return; } @@ -218,6 +218,18 @@ return object; } +ZEND_API zend_object* ZEND_FASTCALL zend_objects_fnew(zend_class_entry *ce) +{ + zend_object *object = femalloc(sizeof(zend_object) + zend_object_properties_size(ce), /* fallible */ true); + if (UNEXPECTED(!object)) { + return NULL; + } + + _zend_object_std_init(object, ce); + object->handlers = &std_object_handlers; + return object; +} + ZEND_API void ZEND_FASTCALL zend_objects_clone_members(zend_object *new_object, zend_object *old_object) { bool has_clone_method = old_object->ce->clone != NULL; diff -Nru php8.4-8.4.26/Zend/zend_objects.h php8.4-8.4.27/Zend/zend_objects.h --- php8.4-8.4.26/Zend/zend_objects.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_objects.h 2026-10-19 14:38:59.000000000 +0000 @@ -25,6 +25,7 @@ BEGIN_EXTERN_C() ZEND_API void ZEND_FASTCALL zend_object_std_init(zend_object *object, zend_class_entry *ce); ZEND_API zend_object* ZEND_FASTCALL zend_objects_new(zend_class_entry *ce); +ZEND_API zend_object* ZEND_FASTCALL zend_objects_fnew(zend_class_entry *ce); ZEND_API void ZEND_FASTCALL zend_objects_clone_members(zend_object *new_object, zend_object *old_object); ZEND_API void zend_object_std_dtor(zend_object *object); diff -Nru php8.4-8.4.26/Zend/zend_operators.c php8.4-8.4.27/Zend/zend_operators.c --- php8.4-8.4.26/Zend/zend_operators.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_operators.c 2026-10-19 14:38:59.000000000 +0000 @@ -3070,7 +3070,7 @@ } /* }}} */ -ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, bool persistent) /* {{{ */ +static zend_always_inline zend_string* ZEND_FASTCALL _zend_string_ftolower_ex(zend_string *str, bool persistent, bool fallible) { size_t length = ZSTR_LEN(str); unsigned char *p = (unsigned char *) ZSTR_VAL(str); @@ -3081,7 +3081,10 @@ while (p + BLOCKCONV_STRIDE <= end) { BLOCKCONV_LOAD(p); if (BLOCKCONV_FOUND()) { - zend_string *res = zend_string_alloc(length, persistent); + zend_string *res = zend_string_falloc(length, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!res)) { + return NULL; + } memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str)); unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str)); @@ -3102,7 +3105,10 @@ while (p < end) { if (*p != zend_tolower_ascii(*p)) { - zend_string *res = zend_string_alloc(length, persistent); + zend_string *res = zend_string_falloc(length, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!res)) { + return NULL; + } memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str)); unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str)); @@ -3117,8 +3123,18 @@ return zend_string_copy(str); } + +ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, bool persistent) /* {{{ */ +{ + return _zend_string_ftolower_ex(str, persistent, /* fallible */ false); +} /* }}} */ +ZEND_API zend_string* ZEND_FASTCALL zend_string_ftolower_ex(zend_string *str, bool persistent) +{ + return _zend_string_ftolower_ex(str, persistent, /* fallible */ true); +} + ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, bool persistent) /* {{{ */ { size_t length = ZSTR_LEN(str); diff -Nru php8.4-8.4.26/Zend/zend_operators.h php8.4-8.4.27/Zend/zend_operators.h --- php8.4-8.4.26/Zend/zend_operators.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_operators.h 2026-10-19 14:38:59.000000000 +0000 @@ -475,6 +475,8 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, bool persistent); ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, bool persistent); +ZEND_API zend_string* ZEND_FASTCALL zend_string_ftolower_ex(zend_string *str, bool persistent); + static zend_always_inline zend_string* zend_string_tolower(zend_string *str) { return zend_string_tolower_ex(str, false); } @@ -482,6 +484,10 @@ return zend_string_toupper_ex(str, false); } +static zend_always_inline zend_string* zend_string_ftolower(zend_string *str) { + return zend_string_ftolower_ex(str, false); +} + ZEND_API int ZEND_FASTCALL zend_binary_zval_strcmp(zval *s1, zval *s2); ZEND_API int ZEND_FASTCALL zend_binary_zval_strncmp(zval *s1, zval *s2, zval *s3); ZEND_API int ZEND_FASTCALL zend_binary_strcmp(const char *s1, size_t len1, const char *s2, size_t len2); diff -Nru php8.4-8.4.26/Zend/zend_smart_str.c php8.4-8.4.27/Zend/zend_smart_str.c --- php8.4-8.4.26/Zend/zend_smart_str.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_smart_str.c 2026-10-19 14:38:59.000000000 +0000 @@ -27,32 +27,72 @@ #define SMART_STR_NEW_LEN(len) \ (ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STR_OVERHEAD, SMART_STR_PAGE) - SMART_STR_OVERHEAD) -ZEND_API void ZEND_FASTCALL smart_str_erealloc(smart_str *str, size_t len) +static zend_always_inline bool i_smart_str_erealloc(smart_str *str, size_t len, bool fallible) { if (UNEXPECTED(!str->s)) { - str->a = len <= SMART_STR_START_LEN + size_t a = len <= SMART_STR_START_LEN ? SMART_STR_START_LEN : SMART_STR_NEW_LEN(len); - str->s = zend_string_alloc(str->a, 0); + str->s = zend_string_falloc(a, /* persistent */ false, fallible); + if (ZEND_CONST_COND(fallible, true) && !str->s) { + return false; + } + str->a = a; ZSTR_LEN(str->s) = 0; } else { - str->a = SMART_STR_NEW_LEN(len); - str->s = (zend_string *) erealloc2(str->s, str->a + _ZSTR_HEADER_SIZE + 1, _ZSTR_HEADER_SIZE + ZSTR_LEN(str->s)); + size_t a = SMART_STR_NEW_LEN(len); + zend_string *s = (zend_string *) ferealloc2(str->s, a + _ZSTR_HEADER_SIZE + 1, _ZSTR_HEADER_SIZE + ZSTR_LEN(str->s), fallible); + if (ZEND_CONST_COND(fallible, true) && !s) { + return false; + } + str->a = a; + str->s = s; } + return true; } -ZEND_API void ZEND_FASTCALL smart_str_realloc(smart_str *str, size_t len) +ZEND_API void ZEND_FASTCALL smart_str_erealloc(smart_str *str, size_t len) +{ + i_smart_str_erealloc(str, len, /* fallible */ false); +} + +ZEND_API bool ZEND_FASTCALL smart_str_ferealloc(smart_str *str, size_t len, bool fallible) +{ + return i_smart_str_erealloc(str, len, fallible); +} + +static zend_always_inline bool i_smart_str_realloc(smart_str *str, size_t len, bool fallible) { if (UNEXPECTED(!str->s)) { - str->a = len <= SMART_STR_START_LEN + size_t a = len <= SMART_STR_START_LEN ? SMART_STR_START_LEN : SMART_STR_NEW_LEN(len); - str->s = zend_string_alloc(str->a, 1); + str->s = zend_string_falloc(a, /* persistent */ true, fallible); + if (ZEND_CONST_COND(fallible, true) && !str->s) { + return false; + } + str->a = a; ZSTR_LEN(str->s) = 0; } else { - str->a = SMART_STR_NEW_LEN(len); - str->s = (zend_string *) perealloc(str->s, str->a + _ZSTR_HEADER_SIZE + 1, 1); + size_t a = SMART_STR_NEW_LEN(len); + zend_string *s = (zend_string *) safe_fperealloc(str->s, 1, a, _ZSTR_HEADER_SIZE + 1, /* persistent */ true, fallible); + if (ZEND_CONST_COND(fallible, true) && !s) { + return false; + } + str->a = a; + str->s = s; } + return true; +} + +ZEND_API void ZEND_FASTCALL smart_str_realloc(smart_str *str, size_t len) +{ + i_smart_str_realloc(str, len, /* fallible */ false); +} + +ZEND_API bool ZEND_FASTCALL smart_str_frealloc(smart_str *str, size_t len, bool fallible) +{ + return i_smart_str_realloc(str, len, fallible); } /* Windows uses VK_ESCAPE instead of \e */ diff -Nru php8.4-8.4.26/Zend/zend_smart_str.h php8.4-8.4.27/Zend/zend_smart_str.h --- php8.4-8.4.26/Zend/zend_smart_str.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_smart_str.h 2026-10-19 14:38:59.000000000 +0000 @@ -24,7 +24,9 @@ BEGIN_EXTERN_C() ZEND_API void ZEND_FASTCALL smart_str_erealloc(smart_str *str, size_t len); +ZEND_API bool ZEND_FASTCALL smart_str_ferealloc(smart_str *str, size_t len, bool fallible); ZEND_API void ZEND_FASTCALL smart_str_realloc(smart_str *str, size_t len); +ZEND_API bool ZEND_FASTCALL smart_str_frealloc(smart_str *str, size_t len, bool fallible); ZEND_API void ZEND_FASTCALL smart_str_append_escaped(smart_str *str, const char *s, size_t l); /* If zero_fraction is true, then a ".0" will be added to numbers that would not otherwise * have a fractional part and look like integers. */ @@ -37,7 +39,7 @@ ZEND_API zend_result ZEND_FASTCALL smart_str_append_zval(smart_str *dest, const zval *value, size_t truncate); END_EXTERN_C() -static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) { +static zend_always_inline size_t smart_str_falloc(smart_str *str, size_t len, bool persistent, bool fallible) { if (UNEXPECTED(!str->s)) { goto do_smart_str_realloc; } else { @@ -45,22 +47,44 @@ if (UNEXPECTED(len >= str->a)) { do_smart_str_realloc: if (persistent) { - smart_str_realloc(str, len); + bool success = smart_str_frealloc(str, len, fallible); + if (ZEND_CONST_COND(fallible, true) && !success) { + ZEND_ASSERT(fallible); + return (size_t)-1; + } } else { - smart_str_erealloc(str, len); + bool success = smart_str_ferealloc(str, len, fallible); + if (ZEND_CONST_COND(fallible, true) && !success) { + ZEND_ASSERT(fallible); + return (size_t)-1; + } } } } return len; } -static zend_always_inline char* smart_str_extend_ex(smart_str *dest, size_t len, bool persistent) { - size_t new_len = smart_str_alloc(dest, len, persistent); +static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) { + size_t result = smart_str_falloc(str, len, persistent, /* fallible */ false); + ZEND_ASSERT(result != (size_t)-1); + return result; +} + +static zend_always_inline char* smart_str_fextend_ex(smart_str *dest, size_t len, bool persistent, bool fallible) { + size_t new_len = smart_str_falloc(dest, len, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && new_len == (size_t)-1) { + return NULL; + } + ZEND_ASSERT(new_len != (size_t)-1); char *ret = ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s); ZSTR_LEN(dest->s) = new_len; return ret; } +static zend_always_inline char* smart_str_extend_ex(smart_str *dest, size_t len, bool persistent) { + return smart_str_fextend_ex(dest, len, persistent, /* fallible */ false); +} + static zend_always_inline char* smart_str_extend(smart_str *dest, size_t length) { return smart_str_extend_ex(dest, length, false); @@ -126,10 +150,19 @@ ZSTR_LEN(dest->s) = new_len; } -static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) { - size_t new_len = smart_str_alloc(dest, len, persistent); +static zend_always_inline bool smart_str_fappendl_ex(smart_str *dest, const char *str, size_t len, bool persistent, bool fallible) { + size_t new_len = smart_str_falloc(dest, len, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && new_len == (size_t)-1) { + return false; + } + ZEND_ASSERT(new_len != (size_t)-1); memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len); ZSTR_LEN(dest->s) = new_len; + return true; +} + +static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) { + smart_str_fappendl_ex(dest, str, len, persistent, /* fallible */ false); } static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) { diff -Nru php8.4-8.4.26/Zend/zend_string.c php8.4-8.4.27/Zend/zend_string.c --- php8.4-8.4.26/Zend/zend_string.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_string.c 2026-10-19 14:38:59.000000000 +0000 @@ -134,6 +134,18 @@ zend_known_strings = NULL; } +ZEND_API zend_string* ZEND_FASTCALL zend_string_finit_existing_interned(const char *str, size_t len, bool permanent, bool fallible) +{ + bool was_fallible = CG(interned_strings_fallible); + CG(interned_strings_fallible) = fallible; + + zend_string *ret = zend_string_init_existing_interned(str, len, permanent); + + CG(interned_strings_fallible) = was_fallible; + + return ret; +} + static zend_always_inline zend_string *zend_interned_string_ht_lookup_ex(zend_ulong h, const char *str, size_t size, HashTable *interned_strings) { uint32_t nIndex; @@ -294,7 +306,10 @@ } ZEND_ASSERT(permanent); - ret = zend_string_init(str, size, permanent); + ret = zend_string_finit(str, size, permanent, CG(interned_strings_fallible)); + if (UNEXPECTED(!ret)) { + return NULL; + } ZSTR_H(ret) = h; return ret; } @@ -343,7 +358,10 @@ } ZEND_ASSERT(!permanent); - ret = zend_string_init(str, size, permanent); + ret = zend_string_finit(str, size, permanent, CG(interned_strings_fallible)); + if (UNEXPECTED(!ret)) { + return NULL; + } ZSTR_H(ret) = h; return ret; } diff -Nru php8.4-8.4.26/Zend/zend_string.h php8.4-8.4.27/Zend/zend_string.h --- php8.4-8.4.26/Zend/zend_string.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_string.h 2026-10-19 14:38:59.000000000 +0000 @@ -38,6 +38,7 @@ ZEND_API zend_ulong ZEND_FASTCALL zend_string_hash_func(zend_string *str); ZEND_API zend_ulong ZEND_FASTCALL zend_hash_func(const char *str, size_t len); ZEND_API zend_string* ZEND_FASTCALL zend_interned_string_find_permanent(zend_string *str); +ZEND_API zend_string* ZEND_FASTCALL zend_string_finit_existing_interned(const char *str, size_t len, bool permanent, bool fallible); ZEND_API zend_string *zend_string_concat2( const char *str1, size_t str1_len, @@ -171,9 +172,13 @@ return 1; } -static zend_always_inline zend_string *zend_string_alloc(size_t len, bool persistent) +/* Fallible variant of zend_string_alloc */ +static zend_always_inline zend_string *zend_string_falloc(size_t len, bool persistent, bool fallible) { - zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); + zend_string *ret = (zend_string *)fpemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(ret == NULL)) { + return ret; + } GC_SET_REFCOUNT(ret, 1); GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT); @@ -182,9 +187,18 @@ return ret; } -static zend_always_inline zend_string *zend_string_safe_alloc(size_t n, size_t m, size_t l, bool persistent) +static zend_always_inline zend_string *zend_string_alloc(size_t len, bool persistent) { - zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent); + return zend_string_falloc(len, persistent, /* fallible */ false); +} + +/* Fallible variant of zend_string_safe_alloc */ +static zend_always_inline zend_string *zend_string_safe_falloc(size_t n, size_t m, size_t l, bool persistent, bool fallible) +{ + zend_string *ret = (zend_string *)safe_fpemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(ret == NULL)) { + return ret; + } GC_SET_REFCOUNT(ret, 1); GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT); @@ -193,6 +207,11 @@ return ret; } +static zend_always_inline zend_string *zend_string_safe_alloc(size_t n, size_t m, size_t l, bool persistent) +{ + return zend_string_safe_falloc(n, m, l, persistent, /* fallible */ false); +} + static zend_always_inline zend_string *zend_string_init(const char *str, size_t len, bool persistent) { zend_string *ret = zend_string_alloc(len, persistent); @@ -202,10 +221,22 @@ return ret; } -static zend_always_inline zend_string *zend_string_init_fast(const char *str, size_t len) +static zend_always_inline zend_string *zend_string_finit(const char *str, size_t len, bool persistent, bool fallible) +{ + zend_string *ret = zend_string_safe_falloc(len, 1, 0, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(ret == NULL)) { + return NULL; + } + + memcpy(ZSTR_VAL(ret), str, len); + ZSTR_VAL(ret)[len] = '\0'; + return ret; +} + +static zend_always_inline zend_string *zend_string_finit_fast(const char *str, size_t len, bool fallible) { if (len > 1) { - return zend_string_init(str, len, 0); + return zend_string_finit(str, len, 0, fallible); } else if (len == 0) { return zend_empty_string; } else /* if (len == 1) */ { @@ -213,6 +244,11 @@ } } +static zend_always_inline zend_string *zend_string_init_fast(const char *str, size_t len) +{ + return zend_string_finit_fast(str, len, /* fallible */ false); +} + static zend_always_inline zend_string *zend_string_copy(zend_string *s) { if (!ZSTR_IS_INTERNED(s)) { @@ -243,19 +279,25 @@ return s; } -static zend_always_inline zend_string *zend_string_realloc(zend_string *s, size_t len, bool persistent) +static zend_always_inline zend_string *zend_string_frealloc(zend_string *s, size_t len, bool persistent, bool fallible) { zend_string *ret; if (!ZSTR_IS_INTERNED(s)) { if (EXPECTED(GC_REFCOUNT(s) == 1)) { - ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); + ret = (zend_string *)safe_fperealloc(s, 1, len, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(0)), persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ret)) { + return NULL; + } ZSTR_LEN(ret) = len; zend_string_forget_hash_val(ret); return ret; } } - ret = zend_string_alloc(len, persistent); + ret = zend_string_falloc(len, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ret)) { + return NULL; + } memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1); if (!ZSTR_IS_INTERNED(s)) { GC_DELREF(s); @@ -263,20 +305,31 @@ return ret; } -static zend_always_inline zend_string *zend_string_extend(zend_string *s, size_t len, bool persistent) +static zend_always_inline zend_string *zend_string_realloc(zend_string *s, size_t len, bool persistent) +{ + return zend_string_frealloc(s, len, persistent, /* fallible */ false); +} + +static zend_always_inline zend_string *zend_string_fextend(zend_string *s, size_t len, bool persistent, bool fallible) { zend_string *ret; ZEND_ASSERT(len >= ZSTR_LEN(s)); if (!ZSTR_IS_INTERNED(s)) { if (EXPECTED(GC_REFCOUNT(s) == 1)) { - ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); + ret = (zend_string *)safe_fperealloc(s, 1, len, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(0)), persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ret)) { + return NULL; + } ZSTR_LEN(ret) = len; zend_string_forget_hash_val(ret); return ret; } } - ret = zend_string_alloc(len, persistent); + ret = zend_string_falloc(len, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ret)) { + return NULL; + } memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1); if (!ZSTR_IS_INTERNED(s)) { GC_DELREF(s); @@ -284,20 +337,31 @@ return ret; } -static zend_always_inline zend_string *zend_string_truncate(zend_string *s, size_t len, bool persistent) +static zend_always_inline zend_string *zend_string_extend(zend_string *s, size_t len, bool persistent) +{ + return zend_string_fextend(s, len, persistent, /* fallible */ false); +} + +static zend_always_inline zend_string *zend_string_ftruncate(zend_string *s, size_t len, bool persistent, bool fallible) { zend_string *ret; ZEND_ASSERT(len <= ZSTR_LEN(s)); if (!ZSTR_IS_INTERNED(s)) { if (EXPECTED(GC_REFCOUNT(s) == 1)) { - ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); + ret = (zend_string *)safe_fperealloc(s, 1, len, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(0)), persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ret)) { + return NULL; + } ZSTR_LEN(ret) = len; zend_string_forget_hash_val(ret); return ret; } } - ret = zend_string_alloc(len, persistent); + ret = zend_string_falloc(len, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && UNEXPECTED(!ret)) { + return NULL; + } memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), len + 1); if (!ZSTR_IS_INTERNED(s)) { GC_DELREF(s); @@ -305,19 +369,30 @@ return ret; } -static zend_always_inline zend_string *zend_string_safe_realloc(zend_string *s, size_t n, size_t m, size_t l, bool persistent) +static zend_always_inline zend_string *zend_string_truncate(zend_string *s, size_t len, bool persistent) +{ + return zend_string_ftruncate(s, len, persistent, /*fallible */ false); +} + +static zend_always_inline zend_string *zend_string_safe_frealloc(zend_string *s, size_t n, size_t m, size_t l, bool persistent, bool fallible) { zend_string *ret; if (!ZSTR_IS_INTERNED(s)) { if (GC_REFCOUNT(s) == 1) { - ret = (zend_string *)safe_perealloc(s, n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent); + ret = (zend_string *)safe_fperealloc(s, n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && !ret) { + return NULL; + } ZSTR_LEN(ret) = (n * m) + l; zend_string_forget_hash_val(ret); return ret; } } - ret = zend_string_safe_alloc(n, m, l, persistent); + ret = zend_string_safe_falloc(n, m, l, persistent, fallible); + if (ZEND_CONST_COND(fallible, true) && !ret) { + return NULL; + } memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN((n * m) + l, ZSTR_LEN(s)) + 1); if (!ZSTR_IS_INTERNED(s)) { GC_DELREF(s); @@ -325,6 +400,11 @@ return ret; } +static zend_always_inline zend_string *zend_string_safe_realloc(zend_string *s, size_t n, size_t m, size_t l, bool persistent) +{ + return zend_string_safe_frealloc(s, n, m, l, persistent, /* fallible */ false); +} + static zend_always_inline void zend_string_free(zend_string *s) { if (!ZSTR_IS_INTERNED(s)) { diff -Nru php8.4-8.4.26/Zend/zend_types.h php8.4-8.4.27/Zend/zend_types.h --- php8.4-8.4.26/Zend/zend_types.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_types.h 2026-10-19 14:38:59.000000000 +0000 @@ -487,46 +487,58 @@ # define HT_HASH_RESET(ht) do { \ char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \ size_t size = HT_HASH_SIZE((ht)->nTableMask); \ - __m256i ymm0 = _mm256_setzero_si256(); \ - ymm0 = _mm256_cmpeq_epi64(ymm0, ymm0); \ - ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \ - do { \ - _mm256_storeu_si256((__m256i*)p, ymm0); \ - _mm256_storeu_si256((__m256i*)(p+32), ymm0); \ - p += 64; \ - size -= 64; \ - } while (size != 0); \ + if (UNEXPECTED(size < 64)) { \ + memset(p, HT_INVALID_IDX, size); \ + } else { \ + __m256i ymm0 = _mm256_setzero_si256(); \ + ymm0 = _mm256_cmpeq_epi64(ymm0, ymm0); \ + ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \ + do { \ + _mm256_storeu_si256((__m256i*)p, ymm0); \ + _mm256_storeu_si256((__m256i*)(p+32), ymm0); \ + p += 64; \ + size -= 64; \ + } while (size != 0); \ + } \ } while (0) #elif defined(__SSE2__) # define HT_HASH_RESET(ht) do { \ char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \ size_t size = HT_HASH_SIZE((ht)->nTableMask); \ - __m128i xmm0 = _mm_setzero_si128(); \ - xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \ - ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \ - do { \ - _mm_storeu_si128((__m128i*)p, xmm0); \ - _mm_storeu_si128((__m128i*)(p+16), xmm0); \ - _mm_storeu_si128((__m128i*)(p+32), xmm0); \ - _mm_storeu_si128((__m128i*)(p+48), xmm0); \ - p += 64; \ - size -= 64; \ - } while (size != 0); \ + if (UNEXPECTED(size < 64)) { \ + memset(p, HT_INVALID_IDX, size); \ + } else { \ + __m128i xmm0 = _mm_setzero_si128(); \ + xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \ + ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \ + do { \ + _mm_storeu_si128((__m128i*)p, xmm0); \ + _mm_storeu_si128((__m128i*)(p+16), xmm0); \ + _mm_storeu_si128((__m128i*)(p+32), xmm0); \ + _mm_storeu_si128((__m128i*)(p+48), xmm0); \ + p += 64; \ + size -= 64; \ + } while (size != 0); \ + } \ } while (0) #elif defined(__aarch64__) || defined(_M_ARM64) # define HT_HASH_RESET(ht) do { \ char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \ size_t size = HT_HASH_SIZE((ht)->nTableMask); \ - int32x4_t t = vdupq_n_s32(-1); \ - ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \ - do { \ - vst1q_s32((int32_t*)p, t); \ - vst1q_s32((int32_t*)(p+16), t); \ - vst1q_s32((int32_t*)(p+32), t); \ - vst1q_s32((int32_t*)(p+48), t); \ - p += 64; \ - size -= 64; \ - } while (size != 0); \ + if (UNEXPECTED(size < 64)) { \ + memset(p, HT_INVALID_IDX, size); \ + } else { \ + int32x4_t t = vdupq_n_s32(-1); \ + ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \ + do { \ + vst1q_s32((int32_t*)p, t); \ + vst1q_s32((int32_t*)(p+16), t); \ + vst1q_s32((int32_t*)(p+32), t); \ + vst1q_s32((int32_t*)(p+48), t); \ + p += 64; \ + size -= 64; \ + } while (size != 0); \ + } \ } while (0) #else # define HT_HASH_RESET(ht) \ diff -Nru php8.4-8.4.26/Zend/zend_verify_type_inference.h php8.4-8.4.27/Zend/zend_verify_type_inference.h --- php8.4-8.4.26/Zend/zend_verify_type_inference.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_verify_type_inference.h 2026-10-19 14:38:59.000000000 +0000 @@ -187,7 +187,8 @@ && opline->opcode != ZEND_DO_FCALL_BY_NAME /* ZEND_FE_FETCH_R[W] does not define a result in the last iteration. */ && opline->opcode != ZEND_FE_FETCH_R - && opline->opcode != ZEND_FE_FETCH_RW) { + && opline->opcode != ZEND_FE_FETCH_RW + && (opline->opcode != ZEND_FETCH_OBJ_R || EG(current_execute_data) == execute_data)) { zend_verify_type_inference(EX_VAR(opline->result.var), opline->result_def_type, opline->result_type, execute_data, opline, "result_def"); /* Verify return value in the context of caller. */ diff -Nru php8.4-8.4.26/Zend/zend_vm_def.h php8.4-8.4.27/Zend/zend_vm_def.h --- php8.4-8.4.26/Zend/zend_vm_def.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_vm_def.h 2026-10-19 14:38:59.000000000 +0000 @@ -3431,6 +3431,7 @@ zval *var, *ret; uint32_t i; + SAVE_OPLINE(); rope = (zend_string**)EX_VAR(opline->op1.var); if (OP2_TYPE == IS_CONST) { var = GET_OP2_ZVAL_PTR(BP_VAR_R); @@ -4073,7 +4074,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -4195,7 +4196,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -4316,7 +4317,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -6585,7 +6586,11 @@ } } FREE_OP1(); - ZEND_VM_NEXT_OPCODE(); + if (OP1_TYPE & IS_CONST) { + ZEND_VM_NEXT_OPCODE(); + } else { + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } } ZEND_VM_HANDLER(153, ZEND_UNSET_CV, CV, UNUSED) @@ -8133,9 +8138,11 @@ { const zend_op *throw_op = EG(opline_before_exception); - /* Exception was thrown before executing any op */ + /* Exception was thrown before executing any op, or between two ops (see + * zend_handle_delayed_oom()). */ if (UNEXPECTED(!throw_op)) { - ZEND_VM_DISPATCH_TO_HELPER(zend_dispatch_try_catch_finally_helper, try_catch_offset, -1, op_num, 0); + free_unfinished_calls(execute_data); + ZEND_VM_DISPATCH_TO_HELPER(zend_dispatch_try_catch_finally_helper, try_catch_offset, -1, op_num, -1); } uint32_t throw_op_num = throw_op - EX(func)->op_array.opcodes; @@ -8965,7 +8972,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -9693,6 +9700,7 @@ zend_frameless_function_0 function = (zend_frameless_function_0)ZEND_FLF_HANDLER(opline); function(EX_VAR(opline->result.var)); } + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -9719,6 +9727,7 @@ function(result, arg1); } FREE_OP1(); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -9753,6 +9762,7 @@ ZVAL_UNDEF(EX_VAR(opline->op1.var)); } FREE_OP2(); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -9793,6 +9803,7 @@ ZVAL_UNDEF(EX_VAR(opline->op2.var)); } FREE_OP_DATA(); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_EX(1, 2); } @@ -10416,6 +10427,9 @@ SAVE_OPLINE(); if (zend_atomic_bool_load_ex(&EG(timed_out))) { zend_timeout(); + } else if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); + HANDLE_EXCEPTION(); } else if (zend_interrupt_function) { zend_interrupt_function(execute_data); if (EG(exception)) { diff -Nru php8.4-8.4.26/Zend/zend_vm_execute.h php8.4-8.4.27/Zend/zend_vm_execute.h --- php8.4-8.4.26/Zend/zend_vm_execute.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/Zend/zend_vm_execute.h 2026-10-19 14:38:59.000000000 +0000 @@ -1287,7 +1287,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1351,7 +1351,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1416,7 +1416,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1584,7 +1584,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1686,7 +1686,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1790,7 +1790,7 @@ fbc->internal_function.handler(call, ret); #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -1910,7 +1910,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -2028,7 +2028,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -2147,7 +2147,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -3253,9 +3253,11 @@ { const zend_op *throw_op = EG(opline_before_exception); - /* Exception was thrown before executing any op */ + /* Exception was thrown before executing any op, or between two ops (see + * zend_handle_delayed_oom()). */ if (UNEXPECTED(!throw_op)) { - ZEND_VM_TAIL_CALL(zend_dispatch_try_catch_finally_helper_SPEC(-1, 0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC)); + free_unfinished_calls(execute_data); + ZEND_VM_TAIL_CALL(zend_dispatch_try_catch_finally_helper_SPEC(-1, -1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC)); } uint32_t throw_op_num = throw_op - EX(func)->op_array.opcodes; @@ -3525,7 +3527,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -3668,7 +3670,7 @@ } #if ZEND_DEBUG - if (!EG(exception) && call->func) { + if (!EG(exception) && !ZEND_HAS_OOM() && call->func) { if (should_throw) { zend_internal_call_arginfo_violation(call->func); } @@ -3745,6 +3747,7 @@ ZVAL_UNDEF(EX_VAR(opline->op1.var)); } FREE_OP(opline->op2_type, opline->op2.var); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -3779,6 +3782,7 @@ ZVAL_UNDEF(EX_VAR(opline->op1.var)); } FREE_OP(opline->op2_type, opline->op2.var); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -3819,6 +3823,7 @@ ZVAL_UNDEF(EX_VAR(opline->op2.var)); } FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_EX(1, 2); } @@ -3859,6 +3864,7 @@ ZVAL_UNDEF(EX_VAR(opline->op2.var)); } FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_EX(1, 2); } @@ -3876,6 +3882,9 @@ SAVE_OPLINE(); if (zend_atomic_bool_load_ex(&EG(timed_out))) { zend_timeout(); + } else if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); + HANDLE_EXCEPTION(); } else if (zend_interrupt_function) { zend_interrupt_function(execute_data); if (EG(exception)) { @@ -4274,6 +4283,7 @@ function(result, arg1); } FREE_OP(opline->op1_type, opline->op1.var); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -4300,6 +4310,7 @@ function(result, arg1); } FREE_OP(opline->op1_type, opline->op1.var); + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -5306,7 +5317,11 @@ } } - ZEND_VM_NEXT_OPCODE(); + if (IS_CONST & IS_CONST) { + ZEND_VM_NEXT_OPCODE(); + } else { + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } } static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -5389,7 +5404,11 @@ } } FREE_OP(opline->op1_type, opline->op1.var); - ZEND_VM_NEXT_OPCODE(); + if (opline->op1_type & IS_CONST) { + ZEND_VM_NEXT_OPCODE(); + } else { + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } } static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -15394,7 +15413,11 @@ } } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); - ZEND_VM_NEXT_OPCODE(); + if ((IS_TMP_VAR|IS_VAR) & IS_CONST) { + ZEND_VM_NEXT_OPCODE(); + } else { + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } } static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -20647,6 +20670,7 @@ zval *var, *ret; uint32_t i; + SAVE_OPLINE(); rope = (zend_string**)EX_VAR(opline->op1.var); if (IS_CONST == IS_CONST) { var = RT_CONSTANT(opline, opline->op2); @@ -21125,6 +21149,7 @@ zval *var, *ret; uint32_t i; + SAVE_OPLINE(); rope = (zend_string**)EX_VAR(opline->op1.var); if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { var = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); @@ -21987,6 +22012,7 @@ zval *var, *ret; uint32_t i; + SAVE_OPLINE(); rope = (zend_string**)EX_VAR(opline->op1.var); if (IS_CV == IS_CONST) { var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); @@ -38395,6 +38421,7 @@ zend_frameless_function_0 function = (zend_frameless_function_0)ZEND_FLF_HANDLER(opline); function(EX_VAR(opline->result.var)); } + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -38415,6 +38442,7 @@ zend_frameless_function_0 function = (zend_frameless_function_0)ZEND_FLF_HANDLER(opline); function(EX_VAR(opline->result.var)); } + ZEND_VM_FCALL_INTERRUPT_CHECK(execute_data); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -41213,7 +41241,11 @@ } } - ZEND_VM_NEXT_OPCODE(); + if (IS_CV & IS_CONST) { + ZEND_VM_NEXT_OPCODE(); + } else { + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); + } } static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) diff -Nru php8.4-8.4.26/configure php8.4-8.4.27/configure --- php8.4-8.4.26/configure 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/configure 2026-10-19 14:38:59.000000000 +0000 @@ -1,11 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for PHP 8.4.26. +# Generated by GNU Autoconf 2.73 for PHP 8.4.27. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, # Inc. # # @@ -22,7 +22,7 @@ emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. + # contradicts POSIX and common usage. Disable this. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( @@ -109,7 +109,7 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi @@ -131,10 +131,13 @@ *x* ) as_opts=-x ;; * ) as_opts= ;; esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +case $# in # (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. @@ -145,7 +148,7 @@ emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. + # contradicts POSIX and common usage. Disable this. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( @@ -255,22 +258,25 @@ *x* ) as_opts=-x ;; * ) as_opts= ;; esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +case $# in # (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/php/php-src/issues about your $0: system, including any error possibly output before this $0: message. Then install a modern shell, or manually run @@ -331,7 +337,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -340,7 +346,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | +printf '%s\n' X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -423,9 +429,9 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - printf "%s\n" "$as_me: error: $2" >&2 + printf '%s\n' "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -452,7 +458,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | +printf '%s\n' X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -498,7 +504,7 @@ s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -512,29 +518,6 @@ exit } - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -634,8 +617,10 @@ if (d1 < d2) exit 1 if (d1 > d2) exit 2 } - # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), - # which mishandles some comparisons of empty strings to integers. + # Beware Solaris 11 /usr/xgp4/bin/awk, which mishandles some + # comparisons of empty strings to integers. For example, + # LC_ALL=C /usr/xpg4/bin/awk "BEGIN {if (-1 < \"\") print \"a\"}" + # prints "a". if (length(v2)) exit 1 if (length(v1)) exit 2 } @@ -805,6 +790,7 @@ # Initializations. # ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= ac_clean_files= ac_config_libobj_dir=. LIBOBJS= @@ -816,8 +802,8 @@ # Identity of this package. PACKAGE_NAME='PHP' PACKAGE_TARNAME='php' -PACKAGE_VERSION='8.4.26' -PACKAGE_STRING='PHP 8.4.26' +PACKAGE_VERSION='8.4.27' +PACKAGE_STRING='PHP 8.4.27' PACKAGE_BUGREPORT='https://github.com/php/php-src/issues' PACKAGE_URL='https://www.php.net' @@ -1022,13 +1008,13 @@ SED EGREP GREP +ECHO_T +ECHO_N +ECHO_C target_alias host_alias build_alias LIBS -ECHO_T -ECHO_N -ECHO_C DEFS mandir localedir @@ -1178,13 +1164,13 @@ enable_opcache_jit with_capstone enable_pcntl -enable_pdo with_pdo_dblib with_pdo_firebird with_pdo_mysql with_pdo_odbc with_pdo_pgsql with_pdo_sqlite +enable_pdo with_pgsql enable_phar enable_posix @@ -1434,7 +1420,7 @@ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1460,7 +1446,7 @@ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1673,7 +1659,7 @@ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1689,7 +1675,7 @@ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1733,9 +1719,9 @@ *) # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1743,7 +1729,7 @@ done if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi @@ -1751,7 +1737,7 @@ case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1815,7 +1801,7 @@ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | +printf '%s\n' X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1872,7 +1858,7 @@ # 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 PHP 8.4.26 to adapt to many kinds of systems. +'configure' configures PHP 8.4.27 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1944,7 +1930,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PHP 8.4.26:";; + short | recursive ) echo "Configuration of PHP 8.4.27:";; esac cat <<\_ACEOF @@ -2140,7 +2126,6 @@ --disable-opcache-jit Disable JIT --with-capstone Support opcache JIT disassembly through Capstone --enable-pcntl Enable pcntl support (CLI/CGI only) - --disable-pdo Disable PHP Data Objects support --with-pdo-dblib[=DIR] PDO: DBLIB-DB support. DIR is the FreeTDS home directory --with-pdo-firebird[=DIR] @@ -2169,6 +2154,7 @@ environment variables can be used instead of the DIR argument to customize the libpq paths. --without-pdo-sqlite PDO: sqlite 3 support. + --disable-pdo Disable PHP Data Objects support --with-pgsql[=DIR] Include PostgreSQL support. Optional DIR is the PostgreSQL base install directory or the path to pg_config. Also, the PGSQL_CFLAGS and PGSQL_LIBS @@ -2401,9 +2387,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -2440,7 +2426,7 @@ echo && $SHELL "$ac_srcdir/configure" --help=recursive else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -2449,10 +2435,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PHP configure 8.4.26 -generated by GNU Autoconf 2.72 +PHP configure 8.4.27 +generated by GNU Autoconf 2.73 -Copyright (C) 2023 Free Software Foundation, Inc. +Copyright (C) 2026 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -2476,7 +2462,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2484,7 +2470,7 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err @@ -2492,7 +2478,7 @@ then : ac_retval=0 else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; @@ -2515,7 +2501,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2523,7 +2509,7 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err @@ -2531,7 +2517,7 @@ then : ac_retval=0 else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; @@ -2549,7 +2535,7 @@ ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : @@ -2571,8 +2557,8 @@ esac fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile @@ -2590,7 +2576,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2598,7 +2584,7 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err @@ -2609,7 +2595,7 @@ then : ac_retval=0 else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; @@ -2631,7 +2617,7 @@ ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : @@ -2683,8 +2669,8 @@ esac fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func @@ -2702,26 +2688,26 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else case e in #( - e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 - printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5 + printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status ;; @@ -2746,7 +2732,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2754,7 +2740,7 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err @@ -2762,7 +2748,7 @@ then : ac_retval=0 else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; @@ -2785,7 +2771,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2793,7 +2779,7 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err @@ -2801,7 +2787,7 @@ then : ac_retval=0 else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; @@ -2820,7 +2806,7 @@ { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : @@ -2860,8 +2846,8 @@ esac fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_check_decl @@ -2873,7 +2859,7 @@ ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 printf %s "checking for $2.$3... " >&6; } if eval test \${$4+y} then : @@ -2923,8 +2909,8 @@ esac fi eval ac_res=\$$4 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member @@ -2936,7 +2922,7 @@ ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : @@ -2982,8 +2968,8 @@ esac fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -3187,7 +3173,7 @@ do case $ac_arg in *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done @@ -3199,15 +3185,15 @@ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac 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 PHP $as_me 8.4.26, which was -generated by GNU Autoconf 2.72. Invocation command line was +It was created by PHP $as_me 8.4.27, which was +generated by GNU Autoconf 2.73. Invocation command line was $ $0$ac_configure_args_raw @@ -3247,7 +3233,7 @@ */) ;; *) as_dir=$as_dir/ ;; esac - printf "%s\n" "PATH: $as_dir" + printf '%s\n' "PATH: $as_dir" done IFS=$as_save_IFS @@ -3282,7 +3268,7 @@ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -3311,31 +3297,22 @@ { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" - # Save into config.log some information that might help in debugging. - { - echo - - printf "%s\n" "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. ( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -3344,67 +3321,95 @@ esac ;; esac done + (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) - echo +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo - printf "%s\n" "## ----------------- ## + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## ## Output variables. ## ## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" echo - for ac_var in $ac_subst_vars + for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; esac - printf "%s\n" "$ac_var='\''$ac_val'\''" + printf '%s\n' "$ac_var='$ac_val'" done | sort echo + fi - if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - printf "%s\n" "## ----------- ## + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## ## confdefs.h. ## ## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status -' 0 +} + +trap 'ac_exit_trap $?' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done @@ -3413,21 +3418,21 @@ # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -printf "%s\n" "/* confdefs.h */" > confdefs.h +printf '%s\n' "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h +printf '%s\n' "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h +printf '%s\n' "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h +printf '%s\n' "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h +printf '%s\n' "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h +printf '%s\n' "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h +printf '%s\n' "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. @@ -3449,12 +3454,12 @@ ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi @@ -3464,27 +3469,120 @@ # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ #include #include @@ -3564,7 +3662,8 @@ // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. +// FILE and stderr, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) @@ -3575,7 +3674,7 @@ int y = 5678; debug ("Flag"); debug ("X = %d\n", x); - showlist (The first, second, and third items.); + showlist (The first, second, aND third items.); report (x>y, "x is %d but y is %d", x, y); } @@ -3663,15 +3762,15 @@ // Check restrict. if (test_restrict ("String literal") == 0) success = true; - char *restrict newvar = "Another string"; + const char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; @@ -3687,13 +3786,12 @@ ni.number = 58; - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); + || ni.number != 58); ' # Test code for whether the C compiler supports C11 (global declarations) @@ -3813,222 +3911,6 @@ as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" -# Test code for whether the C++ compiler supports C++98 (global declarations) -ac_cxx_conftest_cxx98_globals=' -// Does the compiler advertise C++98 conformance? -#if !defined __cplusplus || __cplusplus < 199711L -# error "Compiler does not advertise C++98 conformance" -#endif - -// These inclusions are to reject old compilers that -// lack the unsuffixed header files. -#include -#include - -// and are *not* freestanding headers in C++98. -extern void assert (int); -namespace std { - extern int strcmp (const char *, const char *); -} - -// Namespaces, exceptions, and templates were all added after "C++ 2.0". -using std::exception; -using std::strcmp; - -namespace { - -void test_exception_syntax() -{ - try { - throw "test"; - } catch (const char *s) { - // Extra parentheses suppress a warning when building autoconf itself, - // due to lint rules shared with more typical C programs. - assert (!(strcmp) (s, "test")); - } -} - -template struct test_template -{ - T const val; - explicit test_template(T t) : val(t) {} - template T add(U u) { return static_cast(u) + val; } -}; - -} // anonymous namespace -' - -# Test code for whether the C++ compiler supports C++98 (body of main) -ac_cxx_conftest_cxx98_main=' - assert (argc); - assert (! argv[0]); -{ - test_exception_syntax (); - test_template tt (2.0); - assert (tt.add (4) == 6.0); - assert (true && !false); -} -' - -# Test code for whether the C++ compiler supports C++11 (global declarations) -ac_cxx_conftest_cxx11_globals=' -// Does the compiler advertise C++ 2011 conformance? -#if !defined __cplusplus || __cplusplus < 201103L -# error "Compiler does not advertise C++11 conformance" -#endif - -namespace cxx11test -{ - constexpr int get_val() { return 20; } - - struct testinit - { - int i; - double d; - }; - - class delegate - { - public: - delegate(int n) : n(n) {} - delegate(): delegate(2354) {} - - virtual int getval() { return this->n; }; - protected: - int n; - }; - - class overridden : public delegate - { - public: - overridden(int n): delegate(n) {} - virtual int getval() override final { return this->n * 2; } - }; - - class nocopy - { - public: - nocopy(int i): i(i) {} - nocopy() = default; - nocopy(const nocopy&) = delete; - nocopy & operator=(const nocopy&) = delete; - private: - int i; - }; - - // for testing lambda expressions - template Ret eval(Fn f, Ret v) - { - return f(v); - } - - // for testing variadic templates and trailing return types - template auto sum(V first) -> V - { - return first; - } - template auto sum(V first, Args... rest) -> V - { - return first + sum(rest...); - } -} -' - -# Test code for whether the C++ compiler supports C++11 (body of main) -ac_cxx_conftest_cxx11_main=' -{ - // Test auto and decltype - auto a1 = 6538; - auto a2 = 48573953.4; - auto a3 = "String literal"; - - int total = 0; - for (auto i = a3; *i; ++i) { total += *i; } - - decltype(a2) a4 = 34895.034; -} -{ - // Test constexpr - short sa[cxx11test::get_val()] = { 0 }; -} -{ - // Test initializer lists - cxx11test::testinit il = { 4323, 435234.23544 }; -} -{ - // Test range-based for - int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, - 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; - for (auto &x : array) { x += 23; } -} -{ - // Test lambda expressions - using cxx11test::eval; - assert (eval ([](int x) { return x*2; }, 21) == 42); - double d = 2.0; - assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); - assert (d == 5.0); - assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); - assert (d == 5.0); -} -{ - // Test use of variadic templates - using cxx11test::sum; - auto a = sum(1); - auto b = sum(1, 2); - auto c = sum(1.0, 2.0, 3.0); -} -{ - // Test constructor delegation - cxx11test::delegate d1; - cxx11test::delegate d2(); - cxx11test::delegate d3(45); -} -{ - // Test override and final - cxx11test::overridden o1(55464); -} -{ - // Test nullptr - char *c = nullptr; -} -{ - // Test template brackets - test_template<::test_template> v(test_template(12)); -} -{ - // Unicode literals - char const *utf8 = u8"UTF-8 string \u2500"; - char16_t const *utf16 = u"UTF-8 string \u2500"; - char32_t const *utf32 = U"UTF-32 string \u2500"; -} -' - -# Test code for whether the C compiler supports C++11 (complete). -ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} -${ac_cxx_conftest_cxx11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - ${ac_cxx_conftest_cxx11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C++98 (complete). -ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - return ok; -} -" - # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub" @@ -4043,7 +3925,7 @@ # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: -printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates @@ -4056,7 +3938,7 @@ esac as_found=: - printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files @@ -4067,13 +3949,13 @@ if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no @@ -4085,7 +3967,7 @@ fi else if test -f "${as_dir}${ac_aux}"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then @@ -4138,38 +4020,44 @@ eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -4179,10 +4067,10 @@ fi done if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi @@ -4190,6 +4078,23 @@ ## Main body of script. ## ## -------------------- ## + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4203,7 +4108,7 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : @@ -4240,7 +4145,7 @@ cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" 'GREP' >> "conftest.nl" + printf '%s\n' 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -4269,12 +4174,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -printf "%s\n" "$ac_cv_path_GREP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf '%s\n' "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : @@ -4314,7 +4219,7 @@ cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP' >> "conftest.nl" + printf '%s\n' 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -4344,14 +4249,14 @@ fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -printf "%s\n" "$ac_cv_path_EGREP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf '%s\n' "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : @@ -4394,7 +4299,7 @@ cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" '' >> "conftest.nl" + printf '%s\n' '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -4423,8 +4328,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -printf "%s\n" "$ac_cv_path_SED" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -4482,7 +4387,7 @@ else break fi - printf "%s\n" "$CURRENT_ARG \\" >>config.nice + printf '%s\n' "$CURRENT_ARG \\" >>config.nice CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $CURRENT_ARG" done echo '"$@"' >> config.nice @@ -4499,7 +4404,7 @@ $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : @@ -4515,8 +4420,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -printf "%s\n" "$ac_cv_build" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf '%s\n' "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -4532,10 +4437,10 @@ # except with old shells: build_os=$* IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac +case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : @@ -4550,8 +4455,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -printf "%s\n" "$ac_cv_host" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf '%s\n' "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -4567,10 +4472,10 @@ # except with old shells: host_os=$* IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac +case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : @@ -4585,8 +4490,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -printf "%s\n" "$ac_cv_target" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf '%s\n' "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; @@ -4602,7 +4507,7 @@ # except with old shells: target_os=$* IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac +case $target_os in *\ *) target_os=`printf '%s\n' "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. @@ -4628,7 +4533,7 @@ ac_IFS=$IFS; IFS="." -set $(echo 8.4.26 | "${SED}" 's/\([0-9\.]*\)\(.*\)/\1\.\2/') +set $(echo 8.4.27 | "${SED}" 's/\([0-9\.]*\)\(.*\)/\1\.\2/') IFS=$ac_IFS PHP_MAJOR_VERSION=$1 PHP_MINOR_VERSION=$2 @@ -4688,7 +4593,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : @@ -4710,7 +4615,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4722,11 +4627,11 @@ fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -printf "%s\n" "$AWK" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -4736,26 +4641,26 @@ case $AWK in #( *mawk) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: mawk is known to have problems on some systems. You should install GNU awk" >&5 -printf "%s\n" "$as_me: WARNING: mawk is known to have problems on some systems. You should install GNU awk" >&2;} ;; #( + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: mawk is known to have problems on some systems. You should install GNU awk" >&5 +printf '%s\n' "$as_me: WARNING: mawk is known to have problems on some systems. You should install GNU awk" >&2;} ;; #( *gawk) : ;; #( bork) : as_fn_error $? "Could not find awk; Install GNU awk" "$LINENO" 5 ;; #( *) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $AWK is broken" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $AWK is broken" >&5 printf %s "checking if $AWK is broken... " >&6; } if ! $AWK 'function foo() {}' >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } as_fn_error $? "You should install GNU awk" "$LINENO" 5 else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi ;; @@ -4786,7 +4691,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : @@ -4809,7 +4714,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4822,11 +4727,11 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -printf "%s\n" "$PKG_CONFIG" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -4835,7 +4740,7 @@ ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : @@ -4858,7 +4763,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4871,11 +4776,11 @@ fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then @@ -4883,8 +4788,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG @@ -4896,14 +4801,14 @@ fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } PKG_CONFIG="" fi fi @@ -4916,6 +4821,9 @@ + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4926,7 +4834,7 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : @@ -4947,7 +4855,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4959,11 +4867,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -4976,7 +4884,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : @@ -4997,7 +4905,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5009,11 +4917,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -5025,8 +4933,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -5034,13 +4942,13 @@ fi -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do @@ -5050,7 +4958,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5060,7 +4968,7 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -5080,9 +4988,9 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -5103,10 +5011,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. @@ -5147,29 +5055,29 @@ fi if test -z "$ac_file" then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in @@ -5177,10 +5085,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) @@ -5197,15 +5105,15 @@ esac done else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -5228,7 +5136,7 @@ ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" @@ -5237,10 +5145,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -5248,31 +5156,31 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : @@ -5296,10 +5204,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do @@ -5311,11 +5219,11 @@ esac done else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 + e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -5323,11 +5231,11 @@ rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : @@ -5359,8 +5267,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then @@ -5370,7 +5278,7 @@ fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : @@ -5438,8 +5346,8 @@ ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -5458,7 +5366,56 @@ ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : @@ -5470,7 +5427,7 @@ /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF -for ac_arg in '' -std=gnu11 +for ac_arg in '' -std=gnu11 -std:c11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" @@ -5487,16 +5444,16 @@ if test "x$ac_cv_prog_cc_c11" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi @@ -5507,7 +5464,7 @@ fi if test x$ac_prog_cc_stdc = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : @@ -5536,16 +5493,16 @@ if test "x$ac_cv_prog_cc_c99" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi @@ -5556,7 +5513,7 @@ fi if test x$ac_prog_cc_stdc = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : @@ -5585,16 +5542,16 @@ if test "x$ac_cv_prog_cc_c89" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi @@ -5616,7 +5573,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then @@ -5687,8 +5644,8 @@ else ac_cv_prog_CPP=$CPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -printf "%s\n" "$CPP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -5736,8 +5693,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -5750,7 +5707,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 printf %s "checking for egrep -e... " >&6; } if test ${ac_cv_path_EGREP_TRADITIONAL+y} then : @@ -5787,7 +5744,7 @@ cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5849,7 +5806,7 @@ cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5880,13 +5837,13 @@ fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 -printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL ICC="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icc" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for icc" >&5 printf %s "checking for icc... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5896,13 +5853,13 @@ $EGREP_TRADITIONAL "^__INTEL_COMPILER" >/dev/null 2>&1 then : ICC="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } else case e in #( e) ICC="yes" GCC="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; esac fi @@ -5911,7 +5868,7 @@ SUNCC="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suncc" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suncc" >&5 printf %s "checking for suncc... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5921,15 +5878,15 @@ $EGREP_TRADITIONAL "^__SUNPRO_C" >/dev/null 2>&1 then : SUNCC="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } else case e in #( e) SUNCC="yes" GCC="no" test -n "$auto_cflags" && CFLAGS="-O -xs -xstrconst -zlazyload" GCC="" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; esac fi @@ -5943,7 +5900,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then @@ -6014,8 +5971,8 @@ else ac_cv_prog_CPP=$CPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -printf "%s\n" "$CPP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -6063,8 +6020,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -6082,7 +6039,7 @@ if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h + printf '%s\n' "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then @@ -6102,7 +6059,7 @@ if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h +printf '%s\n' "#define STDC_HEADERS 1" >>confdefs.h fi @@ -6111,7 +6068,7 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } if test ${ac_cv_safe_to_define___extensions__+y} then : @@ -6140,10 +6097,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } if test ${ac_cv_should_define__xopen_source+y} then : @@ -6194,49 +6151,51 @@ fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 -printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "#define _ALL_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _COSMO_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _DARWIN_C_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _GNU_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + printf '%s\n' "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h - printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _NETBSD_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _OPENBSD_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + printf '%s\n' "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + printf '%s\n' "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h - printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _TANDEM_SOURCE 1" >>confdefs.h if test $ac_cv_header_minix_config_h = yes then : MINIX=yes - printf "%s\n" "#define _MINIX 1" >>confdefs.h + printf '%s\n' "#define _MINIX 1" >>confdefs.h - printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + printf '%s\n' "#define _POSIX_SOURCE 1" >>confdefs.h - printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + printf '%s\n' "#define _POSIX_1_SOURCE 2" >>confdefs.h else case e in #( e) MINIX= ;; @@ -6244,24 +6203,24 @@ fi if test $ac_cv_safe_to_define___extensions__ = yes then : - printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + printf '%s\n' "#define __EXTENSIONS__ 1" >>confdefs.h fi if test $ac_cv_should_define__xopen_source = yes then : - printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + printf '%s\n' "#define _XOPEN_SOURCE 500" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -printf "%s\n" "no, using $LN_S" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf '%s\n' "no, using $LN_S" >&6; } fi @@ -6271,7 +6230,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_BUILD_CC+y} then : @@ -6292,7 +6251,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_BUILD_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6304,11 +6263,11 @@ fi BUILD_CC=$ac_cv_prog_BUILD_CC if test -n "$BUILD_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 -printf "%s\n" "$BUILD_CC" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 +printf '%s\n' "$BUILD_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -6316,10 +6275,10 @@ done test -n "$BUILD_CC" || BUILD_CC="none" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for native build C compiler" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for native build C compiler" >&5 printf %s "checking for native build C compiler... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 -printf "%s\n" "$BUILD_CC" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 +printf '%s\n' "$BUILD_CC" >&6; } else case e in #( e) BUILD_CC=$CC ;; esac @@ -6328,7 +6287,7 @@ php_with_libdir=lib -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for system library directory" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for system library directory" >&5 printf %s "checking for system library directory... " >&6; } # Check whether --with-libdir was given. @@ -6345,8 +6304,8 @@ ext_output=$PHP_LIBDIR -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -6354,7 +6313,7 @@ php_enable_rpath=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable runpaths" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable runpaths" >&5 printf %s "checking whether to enable runpaths... " >&6; } # Check whether --enable-rpath was given. if test ${enable_rpath+y} @@ -6370,14 +6329,14 @@ ext_output=$PHP_RPATH -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler supports -Wl,-rpath," >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if compiler supports -Wl,-rpath," >&5 printf %s "checking if compiler supports -Wl,-rpath,... " >&6; } if test ${php_cv_cc_rpath+y} then : @@ -6410,13 +6369,13 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_cc_rpath" >&5 -printf "%s\n" "$php_cv_cc_rpath" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_cc_rpath" >&5 +printf '%s\n' "$php_cv_cc_rpath" >&6; } if test "x$php_cv_cc_rpath" = xyes then : ld_runpath_switch=-Wl,-rpath, else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler supports -R" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if compiler supports -R" >&5 printf %s "checking if compiler supports -R... " >&6; } if test ${php_cv_cc_dashr+y} then : @@ -6449,8 +6408,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_cc_dashr" >&5 -printf "%s\n" "$php_cv_cc_dashr" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_cc_dashr" >&5 +printf '%s\n' "$php_cv_cc_dashr" >&6; } if test "x$php_cv_cc_dashr" = xyes then : ld_runpath_switch=-R @@ -6470,7 +6429,7 @@ # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_YACC+y} then : @@ -6491,7 +6450,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="bison" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6503,11 +6462,11 @@ fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 -printf "%s\n" "$YACC" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +printf '%s\n' "$YACC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -6516,7 +6475,7 @@ php_bison_excluded_versions='none' if test -n "$YACC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bison version" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for bison version" >&5 printf %s "checking for bison version... " >&6; } php_bison_version=$($YACC --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | tr -d a-z) @@ -6559,11 +6518,11 @@ PHP_VAR_SUBST="$PHP_VAR_SUBST YFLAGS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_bison_version (ok)" >&5 -printf "%s\n" "$php_bison_version (ok)" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_bison_version (ok)" >&5 +printf '%s\n' "$php_bison_version (ok)" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_bison_version" >&5 -printf "%s\n" "$php_bison_version" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_bison_version" >&5 +printf '%s\n' "$php_bison_version" >&6; } fi fi @@ -6585,7 +6544,7 @@ # Extract the first word of "re2c", so it can be a program name with args. set dummy re2c; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RE2C+y} then : @@ -6606,7 +6565,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RE2C="re2c" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6618,11 +6577,11 @@ fi RE2C=$ac_cv_prog_RE2C if test -n "$RE2C"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RE2C" >&5 -printf "%s\n" "$RE2C" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RE2C" >&5 +printf '%s\n' "$RE2C" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -6633,7 +6592,7 @@ else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for re2c version" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for re2c version" >&5 printf %s "checking for re2c version... " >&6; } php_re2c_version=$($RE2C --version | cut -d ' ' -f 2 2>/dev/null) @@ -6655,11 +6614,11 @@ if test "x$php_re2c_check" = xinvalid then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_re2c_version (too old)" >&5 -printf "%s\n" "$php_re2c_version (too old)" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_re2c_version (too old)" >&5 +printf '%s\n' "$php_re2c_version (too old)" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_re2c_version (ok)" >&5 -printf "%s\n" "$php_re2c_version (ok)" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_re2c_version (ok)" >&5 +printf '%s\n' "$php_re2c_version (ok)" >&6; } ;; esac fi ;; @@ -6693,7 +6652,7 @@ php_required_version=7.4 # Extract the first word of "php", so it can be a program name with args. set dummy php; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PHP+y} then : @@ -6714,7 +6673,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PHP="php" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6726,11 +6685,11 @@ fi PHP=$ac_cv_prog_PHP if test -n "$PHP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP" >&5 -printf "%s\n" "$PHP" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP" >&5 +printf '%s\n' "$PHP" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -6739,7 +6698,7 @@ else case e in #( e) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for php version" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for php version" >&5 printf %s "checking for php version... " >&6; } php_version=$($PHP -v | head -n1 | cut -d ' ' -f 2) as_arg_v1=$php_version @@ -6757,11 +6716,11 @@ esac if ${PHP:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_version (too old, install $php_required_version or later)" >&5 -printf "%s\n" "$php_version (too old, install $php_required_version or later)" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_version (too old, install $php_required_version or later)" >&5 +printf '%s\n' "$php_version (too old, install $php_required_version or later)" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_version (ok)" >&5 -printf "%s\n" "$php_version (ok)" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_version (ok)" >&5 +printf '%s\n' "$php_version (ok)" >&6; } ;; esac fi ;; @@ -6775,7 +6734,7 @@ php_enable_re2c_cgoto=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable computed goto extension with re2c" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable computed goto extension with re2c" >&5 printf %s "checking whether to enable computed goto extension with re2c... " >&6; } # Check whether --enable-re2c-cgoto was given. if test ${enable_re2c_cgoto+y} @@ -6791,8 +6750,8 @@ ext_output=$PHP_RE2C_CGOTO -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -6801,7 +6760,7 @@ then : else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether re2c -g works" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether re2c -g works" >&5 printf %s "checking whether re2c -g works... " >&6; } if test ${php_cv_have_re2c_cgoto+y} then : @@ -6831,8 +6790,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_re2c_cgoto" >&5 -printf "%s\n" "$php_cv_have_re2c_cgoto" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_re2c_cgoto" >&5 +printf '%s\n' "$php_cv_have_re2c_cgoto" >&6; } if test "x$php_cv_have_re2c_cgoto" = xyes then : as_fn_append RE2C_FLAGS " -g" @@ -6857,7 +6816,7 @@ ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -ffp-contract=off" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -ffp-contract=off" >&5 printf %s "checking whether the C compiler accepts -ffp-contract=off... " >&6; } if test ${ax_cv_check_cflags___ffp_contract_off+y} then : @@ -6888,8 +6847,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffp_contract_off" >&5 -printf "%s\n" "$ax_cv_check_cflags___ffp_contract_off" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffp_contract_off" >&5 +printf '%s\n' "$ax_cv_check_cflags___ffp_contract_off" >&6; } if test "x$ax_cv_check_cflags___ffp_contract_off" = xyes then : CFLAGS="$CFLAGS -ffp-contract=off" @@ -6899,7 +6858,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fvisibility=hidden" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fvisibility=hidden" >&5 printf %s "checking whether the C compiler accepts -fvisibility=hidden... " >&6; } if test ${ax_cv_check_cflags___fvisibility_hidden+y} then : @@ -6930,8 +6889,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fvisibility_hidden" >&5 -printf "%s\n" "$ax_cv_check_cflags___fvisibility_hidden" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fvisibility_hidden" >&5 +printf '%s\n' "$ax_cv_check_cflags___fvisibility_hidden" >&6; } if test "x$ax_cv_check_cflags___fvisibility_hidden" = xyes then : CFLAGS="$CFLAGS -fvisibility=hidden" @@ -6952,43 +6911,43 @@ ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to force non-PIC code in shared modules" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to force non-PIC code in shared modules" >&5 printf %s "checking whether to force non-PIC code in shared modules... " >&6; } case $host_alias in i?86-*-linux*|i?86-*-freebsd*) if test "${with_pic+set}" != "set" || test "$with_pic" = "no"; then with_pic=no - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi ;; *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using musl libc" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are using musl libc" >&5 printf %s "checking whether we are using musl libc... " >&6; } if command -v ldd >/dev/null && ldd --version 2>&1 | grep ^musl >/dev/null 2>&1 then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } -printf "%s\n" "#define __MUSL__ 1" >>confdefs.h +printf '%s\n' "#define __MUSL__ 1" >>confdefs.h else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi as_fn_append CPPFLAGS " -D_GNU_SOURCE" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthreads_cflags" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for pthreads_cflags" >&5 printf %s "checking for pthreads_cflags... " >&6; } if test ${ac_cv_pthreads_cflags+y} then : @@ -7043,10 +7002,10 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthreads_cflags" >&5 -printf "%s\n" "$ac_cv_pthreads_cflags" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthreads_cflags" >&5 +printf '%s\n' "$ac_cv_pthreads_cflags" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthreads_lib" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for pthreads_lib" >&5 printf %s "checking for pthreads_lib... " >&6; } if test ${ac_cv_pthreads_lib+y} then : @@ -7101,8 +7060,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthreads_lib" >&5 -printf "%s\n" "$ac_cv_pthreads_lib" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthreads_lib" >&5 +printf '%s\n' "$ac_cv_pthreads_lib" >&6; } if test "x$ac_cv_pthreads_cflags" != "x" || test "x$ac_cv_pthreads_lib" != "x"; then pthreads_working="yes" @@ -7178,10 +7137,10 @@ SAPI_LIBTOOL=libphp.la - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring SAPI modules${T_ME}" >&5 -printf "%s\n" "${T_MD}Configuring SAPI modules${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring SAPI modules${T_ME}" >&5 +printf '%s\n' "${T_MD}Configuring SAPI modules${T_ME}" >&6; } @@ -7194,7 +7153,7 @@ php_with_apxs2=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build Apache 2 handler module support via DSO through APXS" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build Apache 2 handler module support via DSO through APXS" >&5 printf %s "checking whether to build Apache 2 handler module support via DSO through APXS... " >&6; } # Check whether --with-apxs2 was given. @@ -7211,8 +7170,8 @@ ext_output=$PHP_APXS2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -7248,24 +7207,24 @@ $APXS -q CFLAGS >/dev/null 2>&1 if test "$?" != "0"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sorry, I cannot run apxs. Possible reasons follow:" >&5 -printf "%s\n" "Sorry, I cannot run apxs. Possible reasons follow:" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 1. Perl is not installed" >&5 -printf "%s\n" "1. Perl is not installed" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs" >&5 -printf "%s\n" "2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 3. Apache was not built using --enable-so (the apxs usage page is displayed)" >&5 -printf "%s\n" "3. Apache was not built using --enable-so (the apxs usage page is displayed)" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The output of $APXS follows:" >&5 -printf "%s\n" "The output of $APXS follows:" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: Sorry, I cannot run apxs. Possible reasons follow:" >&5 +printf '%s\n' "Sorry, I cannot run apxs. Possible reasons follow:" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: 1. Perl is not installed" >&5 +printf '%s\n' "1. Perl is not installed" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: 2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs" >&5 +printf '%s\n' "2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: 3. Apache was not built using --enable-so (the apxs usage page is displayed)" >&5 +printf '%s\n' "3. Apache was not built using --enable-so (the apxs usage page is displayed)" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: The output of $APXS follows:" >&5 +printf '%s\n' "The output of $APXS follows:" >&6; } $APXS -q CFLAGS as_fn_error $? "Aborting" "$LINENO" 5 fi @@ -7587,7 +7546,7 @@ php_enable_cli=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CLI build" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CLI build" >&5 printf %s "checking for CLI build... " >&6; } # Check whether --enable-cli was given. if test ${enable_cli+y} @@ -7603,8 +7562,8 @@ ext_output=$PHP_CLI -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -7613,7 +7572,7 @@ ac_fn_c_check_func "$LINENO" "setproctitle" "ac_cv_func_setproctitle" if test "x$ac_cv_func_setproctitle" = xyes then : - printf "%s\n" "#define HAVE_SETPROCTITLE 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETPROCTITLE 1" >>confdefs.h fi @@ -7621,12 +7580,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/pstat.h" "ac_cv_header_sys_pstat_h" "$ac_includes_default" if test "x$ac_cv_header_sys_pstat_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_PSTAT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_PSTAT_H 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PS_STRINGS" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PS_STRINGS" >&5 printf %s "checking for PS_STRINGS... " >&6; } if test ${php_cv_var_PS_STRINGS+y} then : @@ -7660,12 +7619,12 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_var_PS_STRINGS" >&5 -printf "%s\n" "$php_cv_var_PS_STRINGS" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_var_PS_STRINGS" >&5 +printf '%s\n' "$php_cv_var_PS_STRINGS" >&6; } if test "x$php_cv_var_PS_STRINGS" = xyes then : -printf "%s\n" "#define HAVE_PS_STRINGS /**/" >>confdefs.h +printf '%s\n' "#define HAVE_PS_STRINGS /**/" >>confdefs.h fi @@ -7858,7 +7817,7 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for embedded SAPI library support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for embedded SAPI library support" >&5 printf %s "checking for embedded SAPI library support... " >&6; } if test "$PHP_EMBED" != "no"; then @@ -7889,12 +7848,12 @@ if ${PHP_EMBED_TYPE:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP_EMBED_TYPE" >&5 -printf "%s\n" "$PHP_EMBED_TYPE" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP_EMBED_TYPE" >&5 +printf '%s\n' "$PHP_EMBED_TYPE" >&6; } PHP_VAR_SUBST="$PHP_VAR_SUBST LIBPHP_CFLAGS" @@ -8116,8 +8075,8 @@ esac fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -8126,7 +8085,7 @@ php_enable_fpm=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FPM build" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for FPM build" >&5 printf %s "checking for FPM build... " >&6; } # Check whether --enable-fpm was given. if test ${enable_fpm+y} @@ -8142,8 +8101,8 @@ ext_output=$PHP_FPM -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -8170,12 +8129,12 @@ ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" if test "x$ac_cv_func_clock_gettime" = xyes then : - printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + printf '%s\n' "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h else case e in #( e) LIBS_save=$LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 printf %s "checking for library containing clock_gettime... " >&6; } if test ${ac_cv_search_clock_gettime+y} then : @@ -8233,15 +8192,15 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ac_cv_func_clock_gettime=yes - printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + printf '%s\n' "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h if test "x$ac_cv_search_clock_gettime" = x"none required" then : @@ -8262,7 +8221,7 @@ if test "x$ac_cv_func_clock_gettime" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_get_time" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for clock_get_time" >&5 printf %s "checking for clock_get_time... " >&6; } if test ${php_cv_func_clock_get_time+y} then : @@ -8311,17 +8270,17 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_clock_get_time" >&5 -printf "%s\n" "$php_cv_func_clock_get_time" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_clock_get_time" >&5 +printf '%s\n' "$php_cv_func_clock_get_time" >&6; } if test "x$php_cv_func_clock_get_time" = xyes then : -printf "%s\n" "#define HAVE_CLOCK_GET_TIME 1" >>confdefs.h +printf '%s\n' "#define HAVE_CLOCK_GET_TIME 1" >>confdefs.h fi fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ptrace" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ptrace" >&5 printf %s "checking for ptrace... " >&6; } if test ${php_cv_func_ptrace+y} then : @@ -8438,16 +8397,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_ptrace" >&5 -printf "%s\n" "$php_cv_func_ptrace" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_ptrace" >&5 +printf '%s\n' "$php_cv_func_ptrace" >&6; } if test "x$php_cv_func_ptrace" = xyes then : -printf "%s\n" "#define HAVE_PTRACE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PTRACE 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mach_vm_read" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mach_vm_read" >&5 printf %s "checking for mach_vm_read... " >&6; } if test ${php_cv_func_mach_vm_read+y} then : @@ -8483,8 +8442,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_mach_vm_read" >&5 -printf "%s\n" "$php_cv_func_mach_vm_read" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_mach_vm_read" >&5 +printf '%s\n' "$php_cv_func_mach_vm_read" >&6; } ;; esac fi @@ -8492,11 +8451,11 @@ if test "x$php_cv_func_mach_vm_read" = xyes then : -printf "%s\n" "#define HAVE_MACH_VM_READ 1" >>confdefs.h +printf '%s\n' "#define HAVE_MACH_VM_READ 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for proc mem file" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for proc mem file" >&5 printf %s "checking for proc mem file... " >&6; } if test ${php_cv_file_proc_mem+y} then : @@ -8571,15 +8530,15 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_file_proc_mem" >&5 -printf "%s\n" "$php_cv_file_proc_mem" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_file_proc_mem" >&5 +printf '%s\n' "$php_cv_file_proc_mem" >&6; } if ${php_cv_file_proc_mem:+false} : then : else case e in #( e) -printf "%s\n" "#define PROC_MEM_FILE \"$php_cv_file_proc_mem\"" >>confdefs.h +printf '%s\n' "#define PROC_MEM_FILE \"$php_cv_file_proc_mem\"" >>confdefs.h ;; esac fi @@ -8600,11 +8559,11 @@ if ${fpm_trace_type:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: FPM Trace - ptrace, pread, or mach: could not be found" >&5 -printf "%s\n" "$as_me: WARNING: FPM Trace - ptrace, pread, or mach: could not be found" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: FPM Trace - ptrace, pread, or mach: could not be found" >&5 +printf '%s\n' "$as_me: WARNING: FPM Trace - ptrace, pread, or mach: could not be found" >&2;} fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler supports __sync_bool_compare_and_swap" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if compiler supports __sync_bool_compare_and_swap" >&5 printf %s "checking if compiler supports __sync_bool_compare_and_swap... " >&6; } if test ${php_cv_have___sync_bool_compare_and_swap+y} then : @@ -8636,16 +8595,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___sync_bool_compare_and_swap" >&5 -printf "%s\n" "$php_cv_have___sync_bool_compare_and_swap" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___sync_bool_compare_and_swap" >&5 +printf '%s\n' "$php_cv_have___sync_bool_compare_and_swap" >&6; } if test "x$php_cv_have___sync_bool_compare_and_swap" = xyes then : -printf "%s\n" "#define HAVE_BUILTIN_ATOMIC 1" >>confdefs.h +printf '%s\n' "#define HAVE_BUILTIN_ATOMIC 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TCP_INFO" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for TCP_INFO" >&5 printf %s "checking for TCP_INFO... " >&6; } if test ${php_cv_have_TCP_INFO+y} then : @@ -8677,16 +8636,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_TCP_INFO" >&5 -printf "%s\n" "$php_cv_have_TCP_INFO" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_TCP_INFO" >&5 +printf '%s\n' "$php_cv_have_TCP_INFO" >&6; } if test "x$php_cv_have_TCP_INFO" = xyes then : -printf "%s\n" "#define HAVE_LQ_TCP_INFO 1" >>confdefs.h +printf '%s\n' "#define HAVE_LQ_TCP_INFO 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TCP_CONNECTION_INFO" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for TCP_CONNECTION_INFO" >&5 printf %s "checking for TCP_CONNECTION_INFO... " >&6; } if test ${php_cv_have_TCP_CONNECTION_INFO+y} then : @@ -8718,16 +8677,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_TCP_CONNECTION_INFO" >&5 -printf "%s\n" "$php_cv_have_TCP_CONNECTION_INFO" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_TCP_CONNECTION_INFO" >&5 +printf '%s\n' "$php_cv_have_TCP_CONNECTION_INFO" >&6; } if test "x$php_cv_have_TCP_CONNECTION_INFO" = xyes then : -printf "%s\n" "#define HAVE_LQ_TCP_CONNECTION_INFO 1" >>confdefs.h +printf '%s\n' "#define HAVE_LQ_TCP_CONNECTION_INFO 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SO_LISTENQLEN" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SO_LISTENQLEN" >&5 printf %s "checking for SO_LISTENQLEN... " >&6; } if test ${php_cv_have_SO_LISTENQLEN+y} then : @@ -8759,16 +8718,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_SO_LISTENQLEN" >&5 -printf "%s\n" "$php_cv_have_SO_LISTENQLEN" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_SO_LISTENQLEN" >&5 +printf '%s\n' "$php_cv_have_SO_LISTENQLEN" >&6; } if test "x$php_cv_have_SO_LISTENQLEN" = xyes then : -printf "%s\n" "#define HAVE_LQ_SO_LISTENQ 1" >>confdefs.h +printf '%s\n' "#define HAVE_LQ_SO_LISTENQ 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5 printf %s "checking for kqueue... " >&6; } if test ${php_cv_have_kqueue+y} then : @@ -8804,16 +8763,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_kqueue" >&5 -printf "%s\n" "$php_cv_have_kqueue" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_kqueue" >&5 +printf '%s\n' "$php_cv_have_kqueue" >&6; } if test "x$php_cv_have_kqueue" = xyes then : -printf "%s\n" "#define HAVE_KQUEUE 1" >>confdefs.h +printf '%s\n' "#define HAVE_KQUEUE 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for epoll" >&5 printf %s "checking for epoll... " >&6; } if test ${php_cv_have_epoll+y} then : @@ -8859,16 +8818,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_epoll" >&5 -printf "%s\n" "$php_cv_have_epoll" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_epoll" >&5 +printf '%s\n' "$php_cv_have_epoll" >&6; } if test "x$php_cv_have_epoll" = xyes then : -printf "%s\n" "#define HAVE_EPOLL 1" >>confdefs.h +printf '%s\n' "#define HAVE_EPOLL 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for select" >&5 printf %s "checking for select... " >&6; } if test ${php_cv_have_select+y} then : @@ -8910,12 +8869,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_select" >&5 -printf "%s\n" "$php_cv_have_select" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_select" >&5 +printf '%s\n' "$php_cv_have_select" >&6; } if test "x$php_cv_have_select" = xyes then : -printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h +printf '%s\n' "#define HAVE_SELECT 1" >>confdefs.h fi @@ -8923,19 +8882,19 @@ ac_fn_c_check_func "$LINENO" "clearenv" "ac_cv_func_clearenv" if test "x$ac_cv_func_clearenv" = xyes then : - printf "%s\n" "#define HAVE_CLEARENV 1" >>confdefs.h + printf '%s\n' "#define HAVE_CLEARENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setproctitle" "ac_cv_func_setproctitle" if test "x$ac_cv_func_setproctitle" = xyes then : - printf "%s\n" "#define HAVE_SETPROCTITLE 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETPROCTITLE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setproctitle_fast" "ac_cv_func_setproctitle_fast" if test "x$ac_cv_func_setproctitle_fast" = xyes then : - printf "%s\n" "#define HAVE_SETPROCTITLE_FAST 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETPROCTITLE_FAST 1" >>confdefs.h fi @@ -8946,7 +8905,7 @@ ac_fn_c_check_func "$LINENO" "setpflags" "ac_cv_func_setpflags" if test "x$ac_cv_func_setpflags" = xyes then : - printf "%s\n" "#define HAVE_SETPFLAGS 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETPFLAGS 1" >>confdefs.h fi @@ -8958,7 +8917,7 @@ ac_fn_c_check_func "$LINENO" "times" "ac_cv_func_times" if test "x$ac_cv_func_times" = xyes then : - printf "%s\n" "#define HAVE_TIMES 1" >>confdefs.h + printf '%s\n' "#define HAVE_TIMES 1" >>confdefs.h fi @@ -8970,7 +8929,7 @@ ac_fn_c_check_func "$LINENO" "port_create" "ac_cv_func_port_create" if test "x$ac_cv_func_port_create" = xyes then : - printf "%s\n" "#define HAVE_PORT_CREATE 1" >>confdefs.h + printf '%s\n' "#define HAVE_PORT_CREATE 1" >>confdefs.h fi @@ -9028,7 +8987,7 @@ php_with_fpm_systemd=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable systemd integration in PHP-FPM" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable systemd integration in PHP-FPM" >&5 printf %s "checking whether to enable systemd integration in PHP-FPM... " >&6; } # Check whether --with-fpm-systemd was given. @@ -9045,8 +9004,8 @@ ext_output=$PHP_FPM_SYSTEMD -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -9054,7 +9013,7 @@ php_with_fpm_acl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use Access Control Lists (ACL) in PHP-FPM" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use Access Control Lists (ACL) in PHP-FPM" >&5 printf %s "checking whether to use Access Control Lists (ACL) in PHP-FPM... " >&6; } # Check whether --with-fpm-acl was given. @@ -9071,8 +9030,8 @@ ext_output=$PHP_FPM_ACL -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -9080,7 +9039,7 @@ php_with_fpm_apparmor=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable AppArmor confinement in PHP-FPM" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable AppArmor confinement in PHP-FPM" >&5 printf %s "checking whether to enable AppArmor confinement in PHP-FPM... " >&6; } # Check whether --with-fpm-apparmor was given. @@ -9097,8 +9056,8 @@ ext_output=$PHP_FPM_APPARMOR -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -9106,7 +9065,7 @@ php_with_fpm_selinux=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable SELinux support in PHP-FPM" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable SELinux support in PHP-FPM" >&5 printf %s "checking whether to enable SELinux support in PHP-FPM... " >&6; } # Check whether --with-fpm-selinux was given. @@ -9123,8 +9082,8 @@ ext_output=$PHP_FPM_SELINUX -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -9136,17 +9095,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsystemd >= 209" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libsystemd >= 209" >&5 printf %s "checking for libsystemd >= 209... " >&6; } if test -n "$SYSTEMD_CFLAGS"; then pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsystemd >= 209") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd >= 209" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -9160,10 +9119,10 @@ pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsystemd >= 209") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd >= 209" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -9177,8 +9136,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -9204,10 +9163,10 @@ and SYSTEMD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -9221,13 +9180,13 @@ else SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi -printf "%s\n" "#define HAVE_SYSTEMD 1" >>confdefs.h +printf '%s\n' "#define HAVE_SYSTEMD 1" >>confdefs.h PHP_FPM_SD_FILES="fpm/fpm_systemd.c" _php_ext_shared_saved=$ext_shared; ext_shared=yes @@ -9395,8 +9354,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required header file not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -9417,13 +9376,13 @@ ac_fn_c_check_header_compile "$LINENO" "sys/acl.h" "ac_cv_header_sys_acl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_acl_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_ACL_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_ACL_H 1" >>confdefs.h fi LIBS_save=$LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing acl_free" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing acl_free" >&5 printf %s "checking for library containing acl_free... " >&6; } if test ${ac_cv_search_acl_free+y} then : @@ -9481,13 +9440,13 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_acl_free" >&5 -printf "%s\n" "$ac_cv_search_acl_free" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_acl_free" >&5 +printf '%s\n' "$ac_cv_search_acl_free" >&6; } ac_res=$ac_cv_search_acl_free if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ACL user/group permissions support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ACL user/group permissions support" >&5 printf %s "checking for ACL user/group permissions support... " >&6; } if test ${php_cv_lib_acl_user_group+y} then : @@ -9524,13 +9483,13 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_acl_user_group" >&5 -printf "%s\n" "$php_cv_lib_acl_user_group" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_acl_user_group" >&5 +printf '%s\n' "$php_cv_lib_acl_user_group" >&6; } if test "x$php_cv_lib_acl_user_group" = xyes then : -printf "%s\n" "#define HAVE_FPM_ACL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FPM_ACL 1" >>confdefs.h if test "x$ac_cv_search_acl_free" = x"none required" then : @@ -9556,17 +9515,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libapparmor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libapparmor" >&5 printf %s "checking for libapparmor... " >&6; } if test -n "$APPARMOR_CFLAGS"; then pkg_cv_APPARMOR_CFLAGS="$APPARMOR_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libapparmor\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libapparmor\""; } >&5 ($PKG_CONFIG --exists --print-errors "libapparmor") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_APPARMOR_CFLAGS=`$PKG_CONFIG --cflags "libapparmor" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -9580,10 +9539,10 @@ pkg_cv_APPARMOR_LIBS="$APPARMOR_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libapparmor\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libapparmor\""; } >&5 ($PKG_CONFIG --exists --print-errors "libapparmor") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_APPARMOR_LIBS=`$PKG_CONFIG --libs "libapparmor" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -9597,8 +9556,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -9613,7 +9572,7 @@ # Put the nasty error message in config.log where it belongs echo "$APPARMOR_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for aa_change_profile in -lapparmor" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for aa_change_profile in -lapparmor" >&5 printf %s "checking for aa_change_profile in -lapparmor... " >&6; } if test ${ac_cv_lib_apparmor_aa_change_profile+y} then : @@ -9654,23 +9613,23 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_apparmor_aa_change_profile" >&5 -printf "%s\n" "$ac_cv_lib_apparmor_aa_change_profile" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_apparmor_aa_change_profile" >&5 +printf '%s\n' "$ac_cv_lib_apparmor_aa_change_profile" >&6; } if test "x$ac_cv_lib_apparmor_aa_change_profile" = xyes then : APPARMOR_LIBS=-lapparmor else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required libapparmor library not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for aa_change_profile in -lapparmor" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for aa_change_profile in -lapparmor" >&5 printf %s "checking for aa_change_profile in -lapparmor... " >&6; } if test ${ac_cv_lib_apparmor_aa_change_profile+y} then : @@ -9711,14 +9670,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_apparmor_aa_change_profile" >&5 -printf "%s\n" "$ac_cv_lib_apparmor_aa_change_profile" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_apparmor_aa_change_profile" >&5 +printf '%s\n' "$ac_cv_lib_apparmor_aa_change_profile" >&6; } if test "x$ac_cv_lib_apparmor_aa_change_profile" = xyes then : APPARMOR_LIBS=-lapparmor else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required libapparmor library not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -9727,8 +9686,8 @@ else APPARMOR_CFLAGS=$pkg_cv_APPARMOR_CFLAGS APPARMOR_LIBS=$pkg_cv_APPARMOR_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $APPARMOR_CFLAGS; do case $ac_i in @@ -9892,11 +9851,11 @@ if test "x$ac_cv_header_sys_apparmor_h" = xyes then : -printf "%s\n" "#define HAVE_APPARMOR 1" >>confdefs.h +printf '%s\n' "#define HAVE_APPARMOR 1" >>confdefs.h else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required header file not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -9914,17 +9873,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libselinux" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libselinux" >&5 printf %s "checking for libselinux... " >&6; } if test -n "$SELINUX_CFLAGS"; then pkg_cv_SELINUX_CFLAGS="$SELINUX_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libselinux\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libselinux\""; } >&5 ($PKG_CONFIG --exists --print-errors "libselinux") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SELINUX_CFLAGS=`$PKG_CONFIG --cflags "libselinux" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -9938,10 +9897,10 @@ pkg_cv_SELINUX_LIBS="$SELINUX_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libselinux\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libselinux\""; } >&5 ($PKG_CONFIG --exists --print-errors "libselinux") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SELINUX_LIBS=`$PKG_CONFIG --libs "libselinux" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -9955,8 +9914,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -9971,7 +9930,7 @@ # Put the nasty error message in config.log where it belongs echo "$SELINUX_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for security_setenforce in -lselinux" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for security_setenforce in -lselinux" >&5 printf %s "checking for security_setenforce in -lselinux... " >&6; } if test ${ac_cv_lib_selinux_security_setenforce+y} then : @@ -10012,23 +9971,23 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_security_setenforce" >&5 -printf "%s\n" "$ac_cv_lib_selinux_security_setenforce" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_security_setenforce" >&5 +printf '%s\n' "$ac_cv_lib_selinux_security_setenforce" >&6; } if test "x$ac_cv_lib_selinux_security_setenforce" = xyes then : SELINUX_LIBS=-lselinux else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required SELinux library not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for security_setenforce in -lselinux" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for security_setenforce in -lselinux" >&5 printf %s "checking for security_setenforce in -lselinux... " >&6; } if test ${ac_cv_lib_selinux_security_setenforce+y} then : @@ -10069,14 +10028,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_security_setenforce" >&5 -printf "%s\n" "$ac_cv_lib_selinux_security_setenforce" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_security_setenforce" >&5 +printf '%s\n' "$ac_cv_lib_selinux_security_setenforce" >&6; } if test "x$ac_cv_lib_selinux_security_setenforce" = xyes then : SELINUX_LIBS=-lselinux else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required SELinux library not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -10085,8 +10044,8 @@ else SELINUX_CFLAGS=$pkg_cv_SELINUX_CFLAGS SELINUX_LIBS=$pkg_cv_SELINUX_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $SELINUX_CFLAGS; do case $ac_i in @@ -10250,11 +10209,11 @@ if test "x$ac_cv_header_selinux_selinux_h" = xyes then : -printf "%s\n" "#define HAVE_SELINUX 1" >>confdefs.h +printf '%s\n' "#define HAVE_SELINUX 1" >>confdefs.h else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required header file not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -10466,7 +10425,7 @@ php_enable_fuzzer=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Clang fuzzer SAPI" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Clang fuzzer SAPI" >&5 printf %s "checking for Clang fuzzer SAPI... " >&6; } # Check whether --enable-fuzzer was given. if test ${enable_fuzzer+y} @@ -10482,8 +10441,8 @@ ext_output=$PHP_FUZZER -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -10498,13 +10457,7 @@ (--enable-fuzzer). Please build fuzzer without ZTS." "$LINENO" 5 fi - - - - - - -ac_ext=cpp + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -10518,7 +10471,7 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : @@ -10539,7 +10492,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10551,11 +10504,11 @@ fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf '%s\n' "$CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -10568,7 +10521,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : @@ -10589,7 +10542,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10601,11 +10554,11 @@ fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf '%s\n' "$ac_ct_CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -10617,8 +10570,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -10628,7 +10581,7 @@ fi fi # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -10638,7 +10591,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -10648,11 +10601,11 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : @@ -10684,8 +10637,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then @@ -10695,7 +10648,7 @@ fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : @@ -10763,8 +10716,8 @@ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf '%s\n' "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -10780,106 +10733,6 @@ CXXFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 ;; -esac -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 ;; -esac -fi -fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -10891,7 +10744,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} @@ -10958,8 +10811,8 @@ else ac_cv_prog_CXXCPP=$CXXCPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -printf "%s\n" "$CXXCPP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +printf '%s\n' "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -11007,8 +10860,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -11034,7 +10887,7 @@ FUZZING_LIB="-fsanitize=fuzzer" FUZZING_CC=$CC - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=fuzzer-no-link" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=fuzzer-no-link" >&5 printf %s "checking whether the C compiler accepts -fsanitize=fuzzer-no-link... " >&6; } if test ${ax_cv_check_cflags___fsanitize_fuzzer_no_link+y} then : @@ -11065,8 +10918,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_fuzzer_no_link" >&5 -printf "%s\n" "$ax_cv_check_cflags___fsanitize_fuzzer_no_link" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_fuzzer_no_link" >&5 +printf '%s\n' "$ax_cv_check_cflags___fsanitize_fuzzer_no_link" >&6; } if test "x$ax_cv_check_cflags___fsanitize_fuzzer_no_link" = xyes then : @@ -11674,7 +11527,7 @@ php_enable_litespeed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LiteSpeed support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for LiteSpeed support" >&5 printf %s "checking for LiteSpeed support... " >&6; } # Check whether --enable-litespeed was given. if test ${enable_litespeed+y} @@ -11711,8 +11564,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -11849,7 +11702,7 @@ php_enable_phpdbg=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for phpdbg support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for phpdbg support" >&5 printf %s "checking for phpdbg support... " >&6; } # Check whether --enable-phpdbg was given. if test ${enable_phpdbg+y} @@ -11886,8 +11739,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -11895,7 +11748,7 @@ php_enable_phpdbg_debug=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for phpdbg debug build" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for phpdbg debug build" >&5 printf %s "checking for phpdbg debug build... " >&6; } # Check whether --enable-phpdbg-debug was given. if test ${enable_phpdbg_debug+y} @@ -11911,8 +11764,8 @@ ext_output=$PHP_PHPDBG_DEBUG -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -11920,7 +11773,7 @@ php_enable_phpdbg_readline=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for phpdbg readline support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for phpdbg readline support" >&5 printf %s "checking for phpdbg readline support... " >&6; } # Check whether --enable-phpdbg-readline was given. if test ${enable_phpdbg_readline+y} @@ -11936,14 +11789,14 @@ ext_output=$PHP_PHPDBG_READLINE -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_PHPDBG" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 printf %s "checking whether termios.h defines TIOCGWINSZ... " >&6; } if test ${ac_cv_sys_tiocgwinsz_in_termios_h+y} then : @@ -11966,11 +11819,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 -printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +printf '%s\n' "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 printf %s "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } if test ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+y} then : @@ -11993,12 +11846,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 -printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +printf '%s\n' "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then -printf "%s\n" "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h +printf '%s\n' "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h fi fi @@ -12013,29 +11866,29 @@ esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for phpdbg and readline integration" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for phpdbg and readline integration" >&5 printf %s "checking for phpdbg and readline integration... " >&6; } if test "$PHP_PHPDBG_READLINE" = "yes"; then if test "$PHP_READLINE" != "no" || test "$PHP_LIBEDIT" != "no"; then -printf "%s\n" "#define HAVE_PHPDBG_READLINE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PHPDBG_READLINE 1" >>confdefs.h PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf '%s\n' "ok" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: readline is not available" >&5 -printf "%s\n" "readline is not available" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: readline is not available" >&5 +printf '%s\n' "readline is not available" >&6; } fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 -printf "%s\n" "disabled" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 +printf '%s\n' "disabled" >&6; } fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 -printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 @@ -12103,12 +11956,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 -printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; } case $ac_cv_c_undeclared_builtin_options in #( 'cannot detect') : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot make $CC report undeclared builtins See 'config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : @@ -12117,33 +11970,76 @@ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; esac +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in #( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in #( + 'none needed') : + ac_c_future_darwin_options='' ;; #( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + ac_fn_check_decl "$LINENO" "UFFDIO_WRITEPROTECT_MODE_WP" "ac_cv_have_decl_UFFDIO_WRITEPROTECT_MODE_WP" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_UFFDIO_WRITEPROTECT_MODE_WP" = xyes then : if test "x$enable_zts" = xyes then : - printf "%s\n" "#define HAVE_USERFAULTFD_WRITEFAULT 1" >>confdefs.h + printf '%s\n' "#define HAVE_USERFAULTFD_WRITEFAULT 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking working pthreads" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking working pthreads" >&5 printf %s "checking working pthreads... " >&6; } if test "x$pthreads_working" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthreads_cflags -l$ac_cv_pthreads_lib" >&5 -printf "%s\n" "$ac_cv_pthreads_cflags -l$ac_cv_pthreads_lib" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthreads_cflags -l$ac_cv_pthreads_lib" >&5 +printf '%s\n' "$ac_cv_pthreads_cflags -l$ac_cv_pthreads_lib" >&6; } as_fn_append PHP_PHPDBG_CFLAGS " $ac_cv_pthreads_cflags" as_fn_append PHPDBG_EXTRA_LIBS " -l$ac_cv_pthreads_lib" - printf "%s\n" "#define HAVE_USERFAULTFD_WRITEFAULT 1" >>confdefs.h + printf '%s\n' "#define HAVE_USERFAULTFD_WRITEFAULT 1" >>confdefs.h else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: pthreads not available" >&5 -printf "%s\n" "$as_me: WARNING: pthreads not available" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: pthreads not available" >&5 +printf '%s\n' "$as_me: WARNING: pthreads not available" >&2;} ;; esac fi @@ -12304,7 +12200,7 @@ php_enable_cgi=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CGI build" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CGI build" >&5 printf %s "checking for CGI build... " >&6; } # Check whether --enable-cgi was given. if test ${enable_cgi+y} @@ -12320,8 +12216,8 @@ ext_output=$PHP_CGI -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -12332,13 +12228,13 @@ if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether cross-process locking is required by accept()" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether cross-process locking is required by accept()" >&5 printf %s "checking whether cross-process locking is required by accept()... " >&6; } if test ${php_cv_have_cross_process_locking+y} then : @@ -12352,12 +12248,12 @@ esac ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_cross_process_locking" >&5 -printf "%s\n" "$php_cv_have_cross_process_locking" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_cross_process_locking" >&5 +printf '%s\n' "$php_cv_have_cross_process_locking" >&6; } if test "x$php_cv_have_cross_process_locking" = xyes then : -printf "%s\n" "#define USE_LOCKING 1" >>confdefs.h +printf '%s\n' "#define USE_LOCKING 1" >>confdefs.h fi @@ -12508,20 +12404,20 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chosen SAPI module" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for chosen SAPI module" >&5 printf %s "checking for chosen SAPI module... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP_SAPI" >&5 -printf "%s\n" "$PHP_SAPI" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP_SAPI" >&5 +printf '%s\n' "$PHP_SAPI" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for executable SAPI binaries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for executable SAPI binaries" >&5 printf %s "checking for executable SAPI binaries... " >&6; } if ${PHP_BINARIES:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 -printf "%s\n" "none" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf '%s\n' "none" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP_BINARIES" >&5 -printf "%s\n" "$PHP_BINARIES" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP_BINARIES" >&5 +printf '%s\n' "$PHP_BINARIES" >&6; } ;; esac fi @@ -12565,16 +12461,16 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Running system checks${T_ME}" >&5 -printf "%s\n" "${T_MD}Running system checks${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Running system checks${T_ME}" >&5 +printf '%s\n' "${T_MD}Running system checks${T_ME}" >&6; } PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib # Extract the first word of "sendmail", so it can be a program name with args. set dummy sendmail; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PROG_SENDMAIL+y} then : @@ -12598,7 +12494,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PROG_SENDMAIL="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12611,22 +12507,22 @@ fi PROG_SENDMAIL=$ac_cv_path_PROG_SENDMAIL if test -n "$PROG_SENDMAIL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROG_SENDMAIL" >&5 -printf "%s\n" "$PROG_SENDMAIL" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PROG_SENDMAIL" >&5 +printf '%s\n' "$PROG_SENDMAIL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if ${PROG_SENDMAIL:+false} : then : PROG_SENDMAIL=/usr/sbin/sendmail -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: default sendmail_path INI directive set to $PROG_SENDMAIL" >&5 -printf "%s\n" "$as_me: default sendmail_path INI directive set to $PROG_SENDMAIL" >&6;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: default sendmail_path INI directive set to $PROG_SENDMAIL" >&5 +printf '%s\n' "$as_me: default sendmail_path INI directive set to $PROG_SENDMAIL" >&6;} fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether system uses EBCDIC" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses EBCDIC" >&5 printf %s "checking whether system uses EBCDIC... " >&6; } if test ${ac_cv_ebcdic+y} then : @@ -12658,18 +12554,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ebcdic" >&5 -printf "%s\n" "$ac_cv_ebcdic" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ebcdic" >&5 +printf '%s\n' "$ac_cv_ebcdic" >&6; } if test "x$ac_cv_ebcdic" = xyes then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "PHP does not support EBCDIC targets. See 'config.log' for more details" "$LINENO" 5; } fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 printf %s "checking whether byte ordering is bigendian... " >&6; } if test ${ac_cv_c_bigendian_php+y} then : @@ -12709,17 +12605,17 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian_php" >&5 -printf "%s\n" "$ac_cv_c_bigendian_php" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian_php" >&5 +printf '%s\n' "$ac_cv_c_bigendian_php" >&6; } if test "x$ac_cv_c_bigendian_php" = xyes then : -printf "%s\n" "#define WORDS_BIGENDIAN /**/" >>confdefs.h +printf '%s\n' "#define WORDS_BIGENDIAN /**/" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether writing to stdout works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether writing to stdout works" >&5 printf %s "checking whether writing to stdout works... " >&6; } if test ${php_cv_have_write_stdout+y} then : @@ -12766,12 +12662,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_write_stdout" >&5 -printf "%s\n" "$php_cv_have_write_stdout" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_write_stdout" >&5 +printf '%s\n' "$php_cv_have_write_stdout" >&6; } if test "x$php_cv_have_write_stdout" = xyes then : -printf "%s\n" "#define PHP_WRITE_STDOUT 1" >>confdefs.h +printf '%s\n' "#define PHP_WRITE_STDOUT 1" >>confdefs.h fi @@ -12819,7 +12715,7 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 printf %s "checking for library containing socket... " >&6; } if test ${ac_cv_search_socket+y} then : @@ -12877,8 +12773,8 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 -printf "%s\n" "$ac_cv_search_socket" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 +printf '%s\n' "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no then : @@ -12893,10 +12789,10 @@ ac_fn_c_check_func "$LINENO" "socketpair" "ac_cv_func_socketpair" if test "x$ac_cv_func_socketpair" = xyes then : - printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h + printf '%s\n' "#define HAVE_SOCKETPAIR 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5 printf %s "checking for library containing socketpair... " >&6; } if test ${ac_cv_search_socketpair+y} then : @@ -12954,13 +12850,13 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5 -printf "%s\n" "$ac_cv_search_socketpair" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5 +printf '%s\n' "$ac_cv_search_socketpair" >&6; } ac_res=$ac_cv_search_socketpair if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h + printf '%s\n' "#define HAVE_SOCKETPAIR 1" >>confdefs.h fi ;; @@ -12969,7 +12865,7 @@ done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyaddr" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyaddr" >&5 printf %s "checking for library containing gethostbyaddr... " >&6; } if test ${ac_cv_search_gethostbyaddr+y} then : @@ -13027,8 +12923,8 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyaddr" >&5 -printf "%s\n" "$ac_cv_search_gethostbyaddr" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyaddr" >&5 +printf '%s\n' "$ac_cv_search_gethostbyaddr" >&6; } ac_res=$ac_cv_search_gethostbyaddr if test "$ac_res" != no then : @@ -13037,7 +12933,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 printf %s "checking for library containing dlopen... " >&6; } if test ${ac_cv_search_dlopen+y} then : @@ -13095,19 +12991,19 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -printf "%s\n" "$ac_cv_search_dlopen" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBDL 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sin" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing sin" >&5 printf %s "checking for library containing sin... " >&6; } if test ${ac_cv_search_sin+y} then : @@ -13165,8 +13061,8 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sin" >&5 -printf "%s\n" "$ac_cv_search_sin" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sin" >&5 +printf '%s\n' "$ac_cv_search_sin" >&6; } ac_res=$ac_cv_search_sin if test "$ac_res" != no then : @@ -13203,7 +13099,7 @@ case $found in yes) -printf "%s\n" "#define HAVE___ATOMIC_EXCHANGE_1 1" >>confdefs.h +printf '%s\n' "#define HAVE___ATOMIC_EXCHANGE_1 1" >>confdefs.h ac_cv_func___atomic_exchange_1=yes ;; @@ -13213,7 +13109,7 @@ unset ac_cv_lib_atomic___atomic_exchange_1 unset ac_cv_lib_atomic_____atomic_exchange_1 unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __atomic_exchange_1 in -latomic" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __atomic_exchange_1 in -latomic" >&5 printf %s "checking for __atomic_exchange_1 in -latomic... " >&6; } if test ${ac_cv_lib_atomic___atomic_exchange_1+y} then : @@ -13254,14 +13150,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_atomic___atomic_exchange_1" >&5 -printf "%s\n" "$ac_cv_lib_atomic___atomic_exchange_1" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_atomic___atomic_exchange_1" >&5 +printf '%s\n' "$ac_cv_lib_atomic___atomic_exchange_1" >&6; } if test "x$ac_cv_lib_atomic___atomic_exchange_1" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ____atomic_exchange_1 in -latomic" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ____atomic_exchange_1 in -latomic" >&5 printf %s "checking for ____atomic_exchange_1 in -latomic... " >&6; } if test ${ac_cv_lib_atomic_____atomic_exchange_1+y} then : @@ -13302,8 +13198,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_atomic_____atomic_exchange_1" >&5 -printf "%s\n" "$ac_cv_lib_atomic_____atomic_exchange_1" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_atomic_____atomic_exchange_1" >&5 +printf '%s\n' "$ac_cv_lib_atomic_____atomic_exchange_1" >&6; } if test "x$ac_cv_lib_atomic_____atomic_exchange_1" = xyes then : found=yes @@ -13364,10 +13260,10 @@ -printf "%s\n" "#define HAVE___ATOMIC_EXCHANGE_1 1" >>confdefs.h +printf '%s\n' "#define HAVE___ATOMIC_EXCHANGE_1 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBATOMIC 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBATOMIC 1" >>confdefs.h ac_cv_func___atomic_exchange_1=yes else @@ -13383,7 +13279,7 @@ ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing Pgrab" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing Pgrab" >&5 printf %s "checking for library containing Pgrab... " >&6; } if test ${ac_cv_search_Pgrab+y} then : @@ -13441,8 +13337,8 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_Pgrab" >&5 -printf "%s\n" "$ac_cv_search_Pgrab" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_Pgrab" >&5 +printf '%s\n' "$ac_cv_search_Pgrab" >&6; } ac_res=$ac_cv_search_Pgrab if test "$ac_res" != no then : @@ -13451,7 +13347,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing setsockopt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing setsockopt" >&5 printf %s "checking for library containing setsockopt... " >&6; } if test ${ac_cv_search_setsockopt+y} then : @@ -13509,8 +13405,8 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setsockopt" >&5 -printf "%s\n" "$ac_cv_search_setsockopt" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setsockopt" >&5 +printf '%s\n' "$ac_cv_search_setsockopt" >&6; } ac_res=$ac_cv_search_setsockopt if test "$ac_res" != no then : @@ -13525,10 +13421,10 @@ ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty" if test "x$ac_cv_func_openpty" = xyes then : - printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h + printf '%s\n' "#define HAVE_OPENPTY 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5 printf %s "checking for library containing openpty... " >&6; } if test ${ac_cv_search_openpty+y} then : @@ -13586,13 +13482,13 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5 -printf "%s\n" "$ac_cv_search_openpty" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5 +printf '%s\n' "$ac_cv_search_openpty" >&6; } ac_res=$ac_cv_search_openpty if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h + printf '%s\n' "#define HAVE_OPENPTY 1" >>confdefs.h fi ;; @@ -13621,7 +13517,7 @@ " if test "x$ac_cv_header_dirent_h" = xyes then : - printf "%s\n" "#define HAVE_DIRENT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_DIRENT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "#ifdef HAVE_SYS_PARAM_H @@ -13643,7 +13539,7 @@ " if test "x$ac_cv_header_sys_param_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_PARAM_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "#ifdef HAVE_SYS_PARAM_H @@ -13665,7 +13561,7 @@ " if test "x$ac_cv_header_sys_types_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "#ifdef HAVE_SYS_PARAM_H @@ -13687,7 +13583,7 @@ " if test "x$ac_cv_header_sys_time_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "#ifdef HAVE_SYS_PARAM_H @@ -13709,7 +13605,7 @@ " if test "x$ac_cv_header_netinet_in_h" = xyes then : - printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_NETINET_IN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "#ifdef HAVE_SYS_PARAM_H @@ -13731,7 +13627,7 @@ " if test "x$ac_cv_header_alloca_h" = xyes then : - printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_ALLOCA_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "#ifdef HAVE_SYS_PARAM_H @@ -13753,7 +13649,7 @@ " if test "x$ac_cv_header_arpa_inet_h" = xyes then : - printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_ARPA_INET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "arpa/nameser.h" "ac_cv_header_arpa_nameser_h" "#ifdef HAVE_SYS_PARAM_H @@ -13775,7 +13671,7 @@ " if test "x$ac_cv_header_arpa_nameser_h" = xyes then : - printf "%s\n" "#define HAVE_ARPA_NAMESER_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_ARPA_NAMESER_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dns.h" "ac_cv_header_dns_h" "#ifdef HAVE_SYS_PARAM_H @@ -13797,7 +13693,7 @@ " if test "x$ac_cv_header_dns_h" = xyes then : - printf "%s\n" "#define HAVE_DNS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_DNS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "#ifdef HAVE_SYS_PARAM_H @@ -13819,7 +13715,7 @@ " if test "x$ac_cv_header_fcntl_h" = xyes then : - printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_FCNTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "#ifdef HAVE_SYS_PARAM_H @@ -13841,7 +13737,7 @@ " if test "x$ac_cv_header_grp_h" = xyes then : - printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_GRP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "ieeefp.h" "ac_cv_header_ieeefp_h" "#ifdef HAVE_SYS_PARAM_H @@ -13863,7 +13759,7 @@ " if test "x$ac_cv_header_ieeefp_h" = xyes then : - printf "%s\n" "#define HAVE_IEEEFP_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_IEEEFP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "#ifdef HAVE_SYS_PARAM_H @@ -13885,7 +13781,7 @@ " if test "x$ac_cv_header_langinfo_h" = xyes then : - printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_LANGINFO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/sock_diag.h" "ac_cv_header_linux_sock_diag_h" "#ifdef HAVE_SYS_PARAM_H @@ -13907,7 +13803,7 @@ " if test "x$ac_cv_header_linux_sock_diag_h" = xyes then : - printf "%s\n" "#define HAVE_LINUX_SOCK_DIAG_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_LINUX_SOCK_DIAG_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "#ifdef HAVE_SYS_PARAM_H @@ -13929,7 +13825,7 @@ " if test "x$ac_cv_header_poll_h" = xyes then : - printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_POLL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "pty.h" "ac_cv_header_pty_h" "#ifdef HAVE_SYS_PARAM_H @@ -13951,7 +13847,7 @@ " if test "x$ac_cv_header_pty_h" = xyes then : - printf "%s\n" "#define HAVE_PTY_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTY_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "#ifdef HAVE_SYS_PARAM_H @@ -13973,7 +13869,7 @@ " if test "x$ac_cv_header_pwd_h" = xyes then : - printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_PWD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "resolv.h" "ac_cv_header_resolv_h" "#ifdef HAVE_SYS_PARAM_H @@ -13995,7 +13891,7 @@ " if test "x$ac_cv_header_resolv_h" = xyes then : - printf "%s\n" "#define HAVE_RESOLV_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_RESOLV_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "#ifdef HAVE_SYS_PARAM_H @@ -14017,7 +13913,7 @@ " if test "x$ac_cv_header_strings_h" = xyes then : - printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRINGS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "#ifdef HAVE_SYS_PARAM_H @@ -14039,7 +13935,7 @@ " if test "x$ac_cv_header_syslog_h" = xyes then : - printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYSLOG_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sysexits.h" "ac_cv_header_sysexits_h" "#ifdef HAVE_SYS_PARAM_H @@ -14061,7 +13957,7 @@ " if test "x$ac_cv_header_sysexits_h" = xyes then : - printf "%s\n" "#define HAVE_SYSEXITS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYSEXITS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "#ifdef HAVE_SYS_PARAM_H @@ -14083,7 +13979,7 @@ " if test "x$ac_cv_header_sys_ioctl_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "#ifdef HAVE_SYS_PARAM_H @@ -14105,7 +14001,7 @@ " if test "x$ac_cv_header_sys_file_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_FILE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "#ifdef HAVE_SYS_PARAM_H @@ -14127,7 +14023,7 @@ " if test "x$ac_cv_header_sys_mman_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_MMAN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "#ifdef HAVE_SYS_PARAM_H @@ -14149,7 +14045,7 @@ " if test "x$ac_cv_header_sys_mount_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "#ifdef HAVE_SYS_PARAM_H @@ -14171,7 +14067,7 @@ " if test "x$ac_cv_header_sys_poll_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_POLL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "#ifdef HAVE_SYS_PARAM_H @@ -14193,7 +14089,7 @@ " if test "x$ac_cv_header_sys_resource_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "#ifdef HAVE_SYS_PARAM_H @@ -14215,7 +14111,7 @@ " if test "x$ac_cv_header_sys_select_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_SELECT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "#ifdef HAVE_SYS_PARAM_H @@ -14237,7 +14133,7 @@ " if test "x$ac_cv_header_sys_socket_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "#ifdef HAVE_SYS_PARAM_H @@ -14259,7 +14155,7 @@ " if test "x$ac_cv_header_sys_stat_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_STAT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/statfs.h" "ac_cv_header_sys_statfs_h" "#ifdef HAVE_SYS_PARAM_H @@ -14281,7 +14177,7 @@ " if test "x$ac_cv_header_sys_statfs_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_STATFS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_STATFS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "#ifdef HAVE_SYS_PARAM_H @@ -14303,7 +14199,7 @@ " if test "x$ac_cv_header_sys_statvfs_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/vfs.h" "ac_cv_header_sys_vfs_h" "#ifdef HAVE_SYS_PARAM_H @@ -14325,7 +14221,7 @@ " if test "x$ac_cv_header_sys_vfs_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_VFS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_VFS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/sysexits.h" "ac_cv_header_sys_sysexits_h" "#ifdef HAVE_SYS_PARAM_H @@ -14347,7 +14243,7 @@ " if test "x$ac_cv_header_sys_sysexits_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_SYSEXITS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_SYSEXITS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "#ifdef HAVE_SYS_PARAM_H @@ -14369,7 +14265,7 @@ " if test "x$ac_cv_header_sys_uio_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_UIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#ifdef HAVE_SYS_PARAM_H @@ -14391,7 +14287,7 @@ " if test "x$ac_cv_header_sys_wait_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "#ifdef HAVE_SYS_PARAM_H @@ -14413,7 +14309,7 @@ " if test "x$ac_cv_header_sys_loadavg_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "#ifdef HAVE_SYS_PARAM_H @@ -14435,7 +14331,7 @@ " if test "x$ac_cv_header_unistd_h" = xyes then : - printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_UNISTD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unix.h" "ac_cv_header_unix_h" "#ifdef HAVE_SYS_PARAM_H @@ -14457,7 +14353,7 @@ " if test "x$ac_cv_header_unix_h" = xyes then : - printf "%s\n" "#define HAVE_UNIX_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_UNIX_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "#ifdef HAVE_SYS_PARAM_H @@ -14479,7 +14375,7 @@ " if test "x$ac_cv_header_utime_h" = xyes then : - printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_UTIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "#ifdef HAVE_SYS_PARAM_H @@ -14501,7 +14397,7 @@ " if test "x$ac_cv_header_sys_utsname_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/ipc.h" "ac_cv_header_sys_ipc_h" "#ifdef HAVE_SYS_PARAM_H @@ -14523,7 +14419,7 @@ " if test "x$ac_cv_header_sys_ipc_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_IPC_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_IPC_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "#ifdef HAVE_SYS_PARAM_H @@ -14545,7 +14441,7 @@ " if test "x$ac_cv_header_dlfcn_h" = xyes then : - printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_DLFCN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "tmmintrin.h" "ac_cv_header_tmmintrin_h" "#ifdef HAVE_SYS_PARAM_H @@ -14567,7 +14463,7 @@ " if test "x$ac_cv_header_tmmintrin_h" = xyes then : - printf "%s\n" "#define HAVE_TMMINTRIN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_TMMINTRIN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "nmmintrin.h" "ac_cv_header_nmmintrin_h" "#ifdef HAVE_SYS_PARAM_H @@ -14589,7 +14485,7 @@ " if test "x$ac_cv_header_nmmintrin_h" = xyes then : - printf "%s\n" "#define HAVE_NMMINTRIN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_NMMINTRIN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "wmmintrin.h" "ac_cv_header_wmmintrin_h" "#ifdef HAVE_SYS_PARAM_H @@ -14611,7 +14507,7 @@ " if test "x$ac_cv_header_wmmintrin_h" = xyes then : - printf "%s\n" "#define HAVE_WMMINTRIN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_WMMINTRIN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" "#ifdef HAVE_SYS_PARAM_H @@ -14633,7 +14529,7 @@ " if test "x$ac_cv_header_immintrin_h" = xyes then : - printf "%s\n" "#define HAVE_IMMINTRIN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_IMMINTRIN_H 1" >>confdefs.h fi @@ -14645,7 +14541,7 @@ ac_fn_c_check_func "$LINENO" "fopencookie" "ac_cv_func_fopencookie" if test "x$ac_cv_func_fopencookie" = xyes then : - printf "%s\n" "#define HAVE_FOPENCOOKIE 1" >>confdefs.h + printf '%s\n' "#define HAVE_FOPENCOOKIE 1" >>confdefs.h fi @@ -14653,7 +14549,7 @@ if test "x$ac_cv_func_fopencookie" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether fopencookie seeker uses off64_t" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether fopencookie seeker uses off64_t" >&5 printf %s "checking whether fopencookie seeker uses off64_t... " >&6; } if test ${php_cv_type_cookie_off64_t+y} then : @@ -14714,19 +14610,19 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_type_cookie_off64_t" >&5 -printf "%s\n" "$php_cv_type_cookie_off64_t" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_type_cookie_off64_t" >&5 +printf '%s\n' "$php_cv_type_cookie_off64_t" >&6; } if test "x$php_cv_type_cookie_off64_t" = xyes then : -printf "%s\n" "#define COOKIE_SEEKER_USES_OFF64_T 1" >>confdefs.h +printf '%s\n' "#define COOKIE_SEEKER_USES_OFF64_T 1" >>confdefs.h fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken getcwd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for broken getcwd" >&5 printf %s "checking for broken getcwd... " >&6; } if test ${php_cv_func_getcwd_broken+y} then : @@ -14740,18 +14636,18 @@ esac ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_getcwd_broken" >&5 -printf "%s\n" "$php_cv_func_getcwd_broken" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_getcwd_broken" >&5 +printf '%s\n' "$php_cv_func_getcwd_broken" >&6; } if test "x$php_cv_func_getcwd_broken" = xyes then : -printf "%s\n" "#define HAVE_BROKEN_GETCWD 1" >>confdefs.h +printf '%s\n' "#define HAVE_BROKEN_GETCWD 1" >>confdefs.h fi if test "x$GCC" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken gcc optimize-strlen" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for broken gcc optimize-strlen" >&5 printf %s "checking for broken gcc optimize-strlen... " >&6; } if test ${php_cv_have_broken_gcc_strlen_opt+y} then : @@ -14795,8 +14691,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_broken_gcc_strlen_opt" >&5 -printf "%s\n" "$php_cv_have_broken_gcc_strlen_opt" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_broken_gcc_strlen_opt" >&5 +printf '%s\n' "$php_cv_have_broken_gcc_strlen_opt" >&6; } if test "x$php_cv_have_broken_gcc_strlen_opt" = xyes then : as_fn_append CFLAGS " -fno-optimize-strlen" @@ -14810,7 +14706,7 @@ if test "x$ac_cv_header_sys_mkdev_h" = xyes then : -printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h +printf '%s\n' "#define MAJOR_IN_MKDEV 1" >>confdefs.h fi @@ -14819,7 +14715,7 @@ if test "x$ac_cv_header_sys_sysmacros_h" = xyes then : -printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h +printf '%s\n' "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h fi @@ -14827,7 +14723,7 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } if test ${ac_cv_struct_tm+y} then : @@ -14858,11 +14754,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -printf "%s\n" "$ac_cv_struct_tm" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +printf '%s\n' "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then -printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h +printf '%s\n' "#define TM_IN_SYS_TIME 1" >>confdefs.h fi @@ -14873,18 +14769,18 @@ if test "x$ac_cv_member_struct_tm_tm_zone" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h fi if test "$ac_cv_member_struct_tm_tm_zone" = yes; then -printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h +printf '%s\n' "#define HAVE_TM_ZONE 1" >>confdefs.h else ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_tzname" = xyes then : ac_have_decl=1 @@ -14892,9 +14788,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 printf %s "checking for tzname... " >&6; } if test ${ac_cv_var_tzname+y} then : @@ -14926,11 +14822,11 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -printf "%s\n" "$ac_cv_var_tzname" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +printf '%s\n' "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then -printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h +printf '%s\n' "#define HAVE_TZNAME 1" >>confdefs.h fi fi @@ -14938,57 +14834,57 @@ ac_fn_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_localtime_r" = xyes then : else case e in #( e) -printf "%s\n" "#define MISSING_LOCALTIME_R_DECL 1" >>confdefs.h +printf '%s\n' "#define MISSING_LOCALTIME_R_DECL 1" >>confdefs.h ;; esac fi ac_fn_check_decl "$LINENO" "gmtime_r" "ac_cv_have_decl_gmtime_r" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_gmtime_r" = xyes then : else case e in #( e) -printf "%s\n" "#define MISSING_GMTIME_R_DECL 1" >>confdefs.h +printf '%s\n' "#define MISSING_GMTIME_R_DECL 1" >>confdefs.h ;; esac fi ac_fn_check_decl "$LINENO" "asctime_r" "ac_cv_have_decl_asctime_r" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_asctime_r" = xyes then : else case e in #( e) -printf "%s\n" "#define MISSING_ASCTIME_R_DECL 1" >>confdefs.h +printf '%s\n' "#define MISSING_ASCTIME_R_DECL 1" >>confdefs.h ;; esac fi ac_fn_check_decl "$LINENO" "ctime_r" "ac_cv_have_decl_ctime_r" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_ctime_r" = xyes then : else case e in #( e) -printf "%s\n" "#define MISSING_CTIME_R_DECL 1" >>confdefs.h +printf '%s\n' "#define MISSING_CTIME_R_DECL 1" >>confdefs.h ;; esac fi ac_fn_check_decl "$LINENO" "strtok_r" "ac_cv_have_decl_strtok_r" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_strtok_r" = xyes then : else case e in #( e) -printf "%s\n" "#define MISSING_STRTOK_R_DECL 1" >>confdefs.h +printf '%s\n' "#define MISSING_STRTOK_R_DECL 1" >>confdefs.h ;; esac fi @@ -14999,7 +14895,7 @@ if test "x$ac_cv_type_struct_flock" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_FLOCK 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_FLOCK 1" >>confdefs.h fi @@ -15016,14 +14912,14 @@ if test "x$ac_cv_type_socklen_t" = xyes then : -printf "%s\n" "#define HAVE_SOCKLEN_T 1" >>confdefs.h +printf '%s\n' "#define HAVE_SOCKLEN_T 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5 printf %s "checking size of intmax_t... " >&6; } php_cache_value=php_cv_sizeof_intmax_t @@ -15087,20 +14983,20 @@ if eval test "\$$php_cache_value" != "0"; then -printf "%s\n" "#define SIZEOF_INTMAX_T $php_cv_sizeof_intmax_t" >>confdefs.h +printf '%s\n' "#define SIZEOF_INTMAX_T $php_cv_sizeof_intmax_t" >>confdefs.h -printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h +printf '%s\n' "#define HAVE_INTMAX_T 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_sizeof_intmax_t" >&5 -printf "%s\n" "$php_cv_sizeof_intmax_t" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_sizeof_intmax_t" >&5 +printf '%s\n' "$php_cv_sizeof_intmax_t" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5 printf %s "checking size of ssize_t... " >&6; } php_cache_value=php_cv_sizeof_ssize_t @@ -15164,20 +15060,20 @@ if eval test "\$$php_cache_value" != "0"; then -printf "%s\n" "#define SIZEOF_SSIZE_T $php_cv_sizeof_ssize_t" >>confdefs.h +printf '%s\n' "#define SIZEOF_SSIZE_T $php_cv_sizeof_ssize_t" >>confdefs.h -printf "%s\n" "#define HAVE_SSIZE_T 1" >>confdefs.h +printf '%s\n' "#define HAVE_SSIZE_T 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_sizeof_ssize_t" >&5 -printf "%s\n" "$php_cv_sizeof_ssize_t" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_sizeof_ssize_t" >&5 +printf '%s\n' "$php_cv_sizeof_ssize_t" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of ptrdiff_t" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of ptrdiff_t" >&5 printf %s "checking size of ptrdiff_t... " >&6; } php_cache_value=php_cv_sizeof_ptrdiff_t @@ -15241,17 +15137,17 @@ if eval test "\$$php_cache_value" != "0"; then -printf "%s\n" "#define SIZEOF_PTRDIFF_T $php_cv_sizeof_ptrdiff_t" >>confdefs.h +printf '%s\n' "#define SIZEOF_PTRDIFF_T $php_cv_sizeof_ptrdiff_t" >>confdefs.h -printf "%s\n" "#define HAVE_PTRDIFF_T 1" >>confdefs.h +printf '%s\n' "#define HAVE_PTRDIFF_T 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_sizeof_ptrdiff_t" >&5 -printf "%s\n" "$php_cv_sizeof_ptrdiff_t" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_sizeof_ptrdiff_t" >&5 +printf '%s\n' "$php_cv_sizeof_ptrdiff_t" >&6; } @@ -15259,7 +15155,7 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 printf %s "checking size of int... " >&6; } if test ${ac_cv_sizeof_int+y} then : @@ -15269,32 +15165,25 @@ then : else case e in #( - e) if test "$ac_cv_type_int" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi ;; + e) ac_cv_sizeof_int=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -printf "%s\n" "$ac_cv_sizeof_int" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +printf '%s\n' "$ac_cv_sizeof_int" >&6; } -printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h +printf '%s\n' "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : @@ -15304,32 +15193,25 @@ then : else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi ;; + e) ac_cv_sizeof_long=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf '%s\n' "$ac_cv_sizeof_long" >&6; } -printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h +printf '%s\n' "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 printf %s "checking size of long long... " >&6; } if test ${ac_cv_sizeof_long_long+y} then : @@ -15339,32 +15221,25 @@ then : else case e in #( - e) if test "$ac_cv_type_long_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_long=0 - fi ;; + e) ac_cv_sizeof_long_long=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long_long" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +printf '%s\n' "$ac_cv_sizeof_long_long" >&6; } -printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h +printf '%s\n' "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 printf %s "checking size of size_t... " >&6; } if test ${ac_cv_sizeof_size_t+y} then : @@ -15374,32 +15249,25 @@ then : else case e in #( - e) if test "$ac_cv_type_size_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (size_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_size_t=0 - fi ;; + e) ac_cv_sizeof_size_t=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +printf '%s\n' "$ac_cv_sizeof_size_t" >&6; } -printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h +printf '%s\n' "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 printf %s "checking size of off_t... " >&6; } if test ${ac_cv_sizeof_off_t+y} then : @@ -15409,31 +15277,24 @@ then : else case e in #( - e) if test "$ac_cv_type_off_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (off_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_off_t=0 - fi ;; + e) ac_cv_sizeof_off_t=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 -printf "%s\n" "$ac_cv_sizeof_off_t" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 +printf '%s\n' "$ac_cv_sizeof_off_t" >&6; } -printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h +printf '%s\n' "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_clz" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_clz" >&5 printf %s "checking for __builtin_clz... " >&6; } if test ${php_cv_have___builtin_clz+y} then : @@ -15455,18 +15316,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_clz" >&5 -printf "%s\n" "$php_cv_have___builtin_clz" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_clz" >&5 +printf '%s\n' "$php_cv_have___builtin_clz" >&6; } if test "x$php_cv_have___builtin_clz" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CLZ 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CLZ 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_clzl" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_clzl" >&5 printf %s "checking for __builtin_clzl... " >&6; } if test ${php_cv_have___builtin_clzl+y} then : @@ -15488,18 +15349,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_clzl" >&5 -printf "%s\n" "$php_cv_have___builtin_clzl" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_clzl" >&5 +printf '%s\n' "$php_cv_have___builtin_clzl" >&6; } if test "x$php_cv_have___builtin_clzl" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CLZL 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CLZL 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_clzll" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_clzll" >&5 printf %s "checking for __builtin_clzll... " >&6; } if test ${php_cv_have___builtin_clzll+y} then : @@ -15521,18 +15382,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_clzll" >&5 -printf "%s\n" "$php_cv_have___builtin_clzll" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_clzll" >&5 +printf '%s\n' "$php_cv_have___builtin_clzll" >&6; } if test "x$php_cv_have___builtin_clzll" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CLZLL 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CLZLL 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_cpu_init" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_cpu_init" >&5 printf %s "checking for __builtin_cpu_init... " >&6; } if test ${php_cv_have___builtin_cpu_init+y} then : @@ -15554,18 +15415,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_cpu_init" >&5 -printf "%s\n" "$php_cv_have___builtin_cpu_init" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_cpu_init" >&5 +printf '%s\n' "$php_cv_have___builtin_cpu_init" >&6; } if test "x$php_cv_have___builtin_cpu_init" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CPU_INIT 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CPU_INIT 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_cpu_supports" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_cpu_supports" >&5 printf %s "checking for __builtin_cpu_supports... " >&6; } if test ${php_cv_have___builtin_cpu_supports+y} then : @@ -15587,18 +15448,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_cpu_supports" >&5 -printf "%s\n" "$php_cv_have___builtin_cpu_supports" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_cpu_supports" >&5 +printf '%s\n' "$php_cv_have___builtin_cpu_supports" >&6; } if test "x$php_cv_have___builtin_cpu_supports" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CPU_SUPPORTS 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CPU_SUPPORTS 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctzl" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctzl" >&5 printf %s "checking for __builtin_ctzl... " >&6; } if test ${php_cv_have___builtin_ctzl+y} then : @@ -15620,18 +15481,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ctzl" >&5 -printf "%s\n" "$php_cv_have___builtin_ctzl" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ctzl" >&5 +printf '%s\n' "$php_cv_have___builtin_ctzl" >&6; } if test "x$php_cv_have___builtin_ctzl" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CTZL 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CTZL 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctzll" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctzll" >&5 printf %s "checking for __builtin_ctzll... " >&6; } if test ${php_cv_have___builtin_ctzll+y} then : @@ -15653,18 +15514,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ctzll" >&5 -printf "%s\n" "$php_cv_have___builtin_ctzll" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ctzll" >&5 +printf '%s\n' "$php_cv_have___builtin_ctzll" >&6; } if test "x$php_cv_have___builtin_ctzll" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_CTZLL 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_CTZLL 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 printf %s "checking for __builtin_expect... " >&6; } if test ${php_cv_have___builtin_expect+y} then : @@ -15686,18 +15547,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_expect" >&5 -printf "%s\n" "$php_cv_have___builtin_expect" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_expect" >&5 +printf '%s\n' "$php_cv_have___builtin_expect" >&6; } if test "x$php_cv_have___builtin_expect" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_EXPECT 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_EXPECT 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_frame_address" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_frame_address" >&5 printf %s "checking for __builtin_frame_address... " >&6; } if test ${php_cv_have___builtin_frame_address+y} then : @@ -15719,18 +15580,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_frame_address" >&5 -printf "%s\n" "$php_cv_have___builtin_frame_address" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_frame_address" >&5 +printf '%s\n' "$php_cv_have___builtin_frame_address" >&6; } if test "x$php_cv_have___builtin_frame_address" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_FRAME_ADDRESS 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_FRAME_ADDRESS 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_saddl_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_saddl_overflow" >&5 printf %s "checking for __builtin_saddl_overflow... " >&6; } if test ${php_cv_have___builtin_saddl_overflow+y} then : @@ -15752,18 +15613,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_saddl_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_saddl_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_saddl_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_saddl_overflow" >&6; } if test "x$php_cv_have___builtin_saddl_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_SADDL_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_SADDL_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_saddll_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_saddll_overflow" >&5 printf %s "checking for __builtin_saddll_overflow... " >&6; } if test ${php_cv_have___builtin_saddll_overflow+y} then : @@ -15785,18 +15646,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_saddll_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_saddll_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_saddll_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_saddll_overflow" >&6; } if test "x$php_cv_have___builtin_saddll_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_SADDLL_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_SADDLL_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_smull_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_smull_overflow" >&5 printf %s "checking for __builtin_smull_overflow... " >&6; } if test ${php_cv_have___builtin_smull_overflow+y} then : @@ -15818,18 +15679,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_smull_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_smull_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_smull_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_smull_overflow" >&6; } if test "x$php_cv_have___builtin_smull_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_SMULL_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_SMULL_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_smulll_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_smulll_overflow" >&5 printf %s "checking for __builtin_smulll_overflow... " >&6; } if test ${php_cv_have___builtin_smulll_overflow+y} then : @@ -15851,18 +15712,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_smulll_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_smulll_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_smulll_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_smulll_overflow" >&6; } if test "x$php_cv_have___builtin_smulll_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_SMULLL_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_SMULLL_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ssubl_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_ssubl_overflow" >&5 printf %s "checking for __builtin_ssubl_overflow... " >&6; } if test ${php_cv_have___builtin_ssubl_overflow+y} then : @@ -15884,18 +15745,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ssubl_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_ssubl_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ssubl_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_ssubl_overflow" >&6; } if test "x$php_cv_have___builtin_ssubl_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_SSUBL_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_SSUBL_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ssubll_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_ssubll_overflow" >&5 printf %s "checking for __builtin_ssubll_overflow... " >&6; } if test ${php_cv_have___builtin_ssubll_overflow+y} then : @@ -15917,18 +15778,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ssubll_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_ssubll_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_ssubll_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_ssubll_overflow" >&6; } if test "x$php_cv_have___builtin_ssubll_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_unreachable" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_unreachable" >&5 printf %s "checking for __builtin_unreachable... " >&6; } if test ${php_cv_have___builtin_unreachable+y} then : @@ -15950,18 +15811,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_unreachable" >&5 -printf "%s\n" "$php_cv_have___builtin_unreachable" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_unreachable" >&5 +printf '%s\n' "$php_cv_have___builtin_unreachable" >&6; } if test "x$php_cv_have___builtin_unreachable" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_UNREACHABLE 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_UNREACHABLE 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_usub_overflow" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __builtin_usub_overflow" >&5 printf %s "checking for __builtin_usub_overflow... " >&6; } if test ${php_cv_have___builtin_usub_overflow+y} then : @@ -15983,18 +15844,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_usub_overflow" >&5 -printf "%s\n" "$php_cv_have___builtin_usub_overflow" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___builtin_usub_overflow" >&5 +printf '%s\n' "$php_cv_have___builtin_usub_overflow" >&6; } if test "x$php_cv_have___builtin_usub_overflow" = xyes then : -printf "%s\n" "#define PHP_HAVE_BUILTIN_USUB_OVERFLOW 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_BUILTIN_USUB_OVERFLOW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports AVX-512" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether compiler supports AVX-512" >&5 printf %s "checking whether compiler supports AVX-512... " >&6; } if test ${php_cv_have_avx512+y} then : @@ -16026,16 +15887,16 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_avx512" >&5 -printf "%s\n" "$php_cv_have_avx512" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_avx512" >&5 +printf '%s\n' "$php_cv_have_avx512" >&6; } if test "x$php_cv_have_avx512" = xyes then : -printf "%s\n" "#define PHP_HAVE_AVX512_SUPPORTS 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_AVX512_SUPPORTS 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports AVX-512 VBMI" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether compiler supports AVX-512 VBMI" >&5 printf %s "checking whether compiler supports AVX-512 VBMI... " >&6; } if test ${php_cv_have_avx512vbmi+y} then : @@ -16067,17 +15928,17 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_avx512vbmi" >&5 -printf "%s\n" "$php_cv_have_avx512vbmi" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_avx512vbmi" >&5 +printf '%s\n' "$php_cv_have_avx512vbmi" >&6; } if test "x$php_cv_have_avx512vbmi" = xyes then : -printf "%s\n" "#define PHP_HAVE_AVX512_VBMI_SUPPORTS 1" >>confdefs.h +printf '%s\n' "#define PHP_HAVE_AVX512_VBMI_SUPPORTS 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports __alignof__" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports __alignof__" >&5 printf %s "checking whether the compiler supports __alignof__... " >&6; } if test ${php_cv_have_alignof+y} then : @@ -16107,12 +15968,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_alignof" >&5 -printf "%s\n" "$php_cv_have_alignof" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_alignof" >&5 +printf '%s\n' "$php_cv_have_alignof" >&6; } if test "x$php_cv_have_alignof" = xyes then : -printf "%s\n" "#define HAVE_ALIGNOF 1" >>confdefs.h +printf '%s\n' "#define HAVE_ALIGNOF 1" >>confdefs.h fi @@ -16121,7 +15982,7 @@ if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_TM_TM_GMTOFF 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_TM_TM_GMTOFF 1" >>confdefs.h fi @@ -16130,7 +15991,7 @@ if test "x$ac_cv_member_struct_stat_st_blksize" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h fi @@ -16138,7 +15999,7 @@ if test "x$ac_cv_member_struct_stat_st_rdev" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_RDEV 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_STAT_ST_RDEV 1" >>confdefs.h fi @@ -16148,10 +16009,10 @@ if test "x$ac_cv_member_struct_stat_st_blocks" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLOCKS 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_STAT_ST_BLOCKS 1" >>confdefs.h -printf "%s\n" "#define HAVE_ST_BLOCKS 1" >>confdefs.h +printf '%s\n' "#define HAVE_ST_BLOCKS 1" >>confdefs.h else case e in #( e) case " $LIBOBJS " in @@ -16172,7 +16033,7 @@ else case e in #( e) -printf "%s\n" "#define uid_t int" >>confdefs.h +printf '%s\n' "#define uid_t int" >>confdefs.h ;; esac fi @@ -16183,7 +16044,7 @@ else case e in #( e) -printf "%s\n" "#define gid_t int" >>confdefs.h +printf '%s\n' "#define gid_t int" >>confdefs.h ;; esac fi @@ -16194,7 +16055,7 @@ if test "x$ac_cv_type_struct_sockaddr_storage" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h fi @@ -16204,7 +16065,7 @@ if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_SA_LEN 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_SOCKADDR_SA_LEN 1" >>confdefs.h fi @@ -16219,7 +16080,7 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __attribute__((ifunc))" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __attribute__((ifunc))" >&5 printf %s "checking for __attribute__((ifunc))... " >&6; } if test ${ax_cv_have_func_attribute_ifunc+y} then : @@ -16261,13 +16122,13 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_ifunc" >&5 -printf "%s\n" "$ax_cv_have_func_attribute_ifunc" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_ifunc" >&5 +printf '%s\n' "$ax_cv_have_func_attribute_ifunc" >&6; } if test yes = $ax_cv_have_func_attribute_ifunc then : -printf "%s\n" "#define HAVE_FUNC_ATTRIBUTE_IFUNC 1" >>confdefs.h +printf '%s\n' "#define HAVE_FUNC_ATTRIBUTE_IFUNC 1" >>confdefs.h fi @@ -16276,7 +16137,7 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __attribute__((target))" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __attribute__((target))" >&5 printf %s "checking for __attribute__((target))... " >&6; } if test ${ax_cv_have_func_attribute_target+y} then : @@ -16316,13 +16177,13 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_target" >&5 -printf "%s\n" "$ax_cv_have_func_attribute_target" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_target" >&5 +printf '%s\n' "$ax_cv_have_func_attribute_target" >&6; } if test yes = $ax_cv_have_func_attribute_target then : -printf "%s\n" "#define HAVE_FUNC_ATTRIBUTE_TARGET 1" >>confdefs.h +printf '%s\n' "#define HAVE_FUNC_ATTRIBUTE_TARGET 1" >>confdefs.h fi @@ -16333,7 +16194,7 @@ esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for variable __attribute__((aligned))" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for variable __attribute__((aligned))" >&5 printf %s "checking for variable __attribute__((aligned))... " >&6; } if test ${php_cv_have_variable_attribute_aligned+y} then : @@ -16367,12 +16228,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_variable_attribute_aligned" >&5 -printf "%s\n" "$php_cv_have_variable_attribute_aligned" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_variable_attribute_aligned" >&5 +printf '%s\n' "$php_cv_have_variable_attribute_aligned" >&6; } if test "x$php_cv_have_variable_attribute_aligned" = xyes then : -printf "%s\n" "#define HAVE_ATTRIBUTE_ALIGNED 1" >>confdefs.h +printf '%s\n' "#define HAVE_ATTRIBUTE_ALIGNED 1" >>confdefs.h fi @@ -16382,355 +16243,355 @@ ac_fn_c_check_func "$LINENO" "alphasort" "ac_cv_func_alphasort" if test "x$ac_cv_func_alphasort" = xyes then : - printf "%s\n" "#define HAVE_ALPHASORT 1" >>confdefs.h + printf '%s\n' "#define HAVE_ALPHASORT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "asctime_r" "ac_cv_func_asctime_r" if test "x$ac_cv_func_asctime_r" = xyes then : - printf "%s\n" "#define HAVE_ASCTIME_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_ASCTIME_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf" if test "x$ac_cv_func_asprintf" = xyes then : - printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h + printf '%s\n' "#define HAVE_ASPRINTF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "chroot" "ac_cv_func_chroot" if test "x$ac_cv_func_chroot" = xyes then : - printf "%s\n" "#define HAVE_CHROOT 1" >>confdefs.h + printf '%s\n' "#define HAVE_CHROOT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ctime_r" "ac_cv_func_ctime_r" if test "x$ac_cv_func_ctime_r" = xyes then : - printf "%s\n" "#define HAVE_CTIME_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_CTIME_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset" if test "x$ac_cv_func_explicit_memset" = xyes then : - printf "%s\n" "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h + printf '%s\n' "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fdatasync" "ac_cv_func_fdatasync" if test "x$ac_cv_func_fdatasync" = xyes then : - printf "%s\n" "#define HAVE_FDATASYNC 1" >>confdefs.h + printf '%s\n' "#define HAVE_FDATASYNC 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock" if test "x$ac_cv_func_flock" = xyes then : - printf "%s\n" "#define HAVE_FLOCK 1" >>confdefs.h + printf '%s\n' "#define HAVE_FLOCK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ftok" "ac_cv_func_ftok" if test "x$ac_cv_func_ftok" = xyes then : - printf "%s\n" "#define HAVE_FTOK 1" >>confdefs.h + printf '%s\n' "#define HAVE_FTOK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "funopen" "ac_cv_func_funopen" if test "x$ac_cv_func_funopen" = xyes then : - printf "%s\n" "#define HAVE_FUNOPEN 1" >>confdefs.h + printf '%s\n' "#define HAVE_FUNOPEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror" if test "x$ac_cv_func_gai_strerror" = xyes then : - printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h + printf '%s\n' "#define HAVE_GAI_STRERROR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" if test "x$ac_cv_func_getcwd" = xyes then : - printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETCWD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getgrnam_r" "ac_cv_func_getgrnam_r" if test "x$ac_cv_func_getgrnam_r" = xyes then : - printf "%s\n" "#define HAVE_GETGRNAM_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETGRNAM_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" if test "x$ac_cv_func_gethostname" = xyes then : - printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETHOSTNAME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" if test "x$ac_cv_func_getloadavg" = xyes then : - printf "%s\n" "#define HAVE_GETLOADAVG 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETLOADAVG 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getlogin" "ac_cv_func_getlogin" if test "x$ac_cv_func_getlogin" = xyes then : - printf "%s\n" "#define HAVE_GETLOGIN 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETLOGIN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getprotobyname" "ac_cv_func_getprotobyname" if test "x$ac_cv_func_getprotobyname" = xyes then : - printf "%s\n" "#define HAVE_GETPROTOBYNAME 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPROTOBYNAME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getprotobynumber" "ac_cv_func_getprotobynumber" if test "x$ac_cv_func_getprotobynumber" = xyes then : - printf "%s\n" "#define HAVE_GETPROTOBYNUMBER 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPROTOBYNUMBER 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpwnam_r" "ac_cv_func_getpwnam_r" if test "x$ac_cv_func_getpwnam_r" = xyes then : - printf "%s\n" "#define HAVE_GETPWNAM_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPWNAM_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r" if test "x$ac_cv_func_getpwuid_r" = xyes then : - printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPWUID_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" if test "x$ac_cv_func_getrusage" = xyes then : - printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETRUSAGE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getservbyname" "ac_cv_func_getservbyname" if test "x$ac_cv_func_getservbyname" = xyes then : - printf "%s\n" "#define HAVE_GETSERVBYNAME 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETSERVBYNAME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getservbyport" "ac_cv_func_getservbyport" if test "x$ac_cv_func_getservbyport" = xyes then : - printf "%s\n" "#define HAVE_GETSERVBYPORT 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETSERVBYPORT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" if test "x$ac_cv_func_gettimeofday" = xyes then : - printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getwd" "ac_cv_func_getwd" if test "x$ac_cv_func_getwd" = xyes then : - printf "%s\n" "#define HAVE_GETWD 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETWD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "glob" "ac_cv_func_glob" if test "x$ac_cv_func_glob" = xyes then : - printf "%s\n" "#define HAVE_GLOB 1" >>confdefs.h + printf '%s\n' "#define HAVE_GLOB 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r" if test "x$ac_cv_func_gmtime_r" = xyes then : - printf "%s\n" "#define HAVE_GMTIME_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_GMTIME_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "lchown" "ac_cv_func_lchown" if test "x$ac_cv_func_lchown" = xyes then : - printf "%s\n" "#define HAVE_LCHOWN 1" >>confdefs.h + printf '%s\n' "#define HAVE_LCHOWN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r" if test "x$ac_cv_func_localtime_r" = xyes then : - printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_LOCALTIME_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memcntl" "ac_cv_func_memcntl" if test "x$ac_cv_func_memcntl" = xyes then : - printf "%s\n" "#define HAVE_MEMCNTL 1" >>confdefs.h + printf '%s\n' "#define HAVE_MEMCNTL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memfd_create" "ac_cv_func_memfd_create" if test "x$ac_cv_func_memfd_create" = xyes then : - printf "%s\n" "#define HAVE_MEMFD_CREATE 1" >>confdefs.h + printf '%s\n' "#define HAVE_MEMFD_CREATE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memmem" "ac_cv_func_memmem" if test "x$ac_cv_func_memmem" = xyes then : - printf "%s\n" "#define HAVE_MEMMEM 1" >>confdefs.h + printf '%s\n' "#define HAVE_MEMMEM 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" if test "x$ac_cv_func_mempcpy" = xyes then : - printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h + printf '%s\n' "#define HAVE_MEMPCPY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" if test "x$ac_cv_func_memrchr" = xyes then : - printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h + printf '%s\n' "#define HAVE_MEMRCHR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" if test "x$ac_cv_func_mkstemp" = xyes then : - printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h + printf '%s\n' "#define HAVE_MKSTEMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" if test "x$ac_cv_func_mmap" = xyes then : - printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h + printf '%s\n' "#define HAVE_MMAP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "nice" "ac_cv_func_nice" if test "x$ac_cv_func_nice" = xyes then : - printf "%s\n" "#define HAVE_NICE 1" >>confdefs.h + printf '%s\n' "#define HAVE_NICE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" if test "x$ac_cv_func_nl_langinfo" = xyes then : - printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h + printf '%s\n' "#define HAVE_NL_LANGINFO 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll" if test "x$ac_cv_func_poll" = xyes then : - printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h + printf '%s\n' "#define HAVE_POLL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_jit_write_protect_np" "ac_cv_func_pthread_jit_write_protect_np" if test "x$ac_cv_func_pthread_jit_write_protect_np" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_JIT_WRITE_PROTECT_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_JIT_WRITE_PROTECT_NP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv" if test "x$ac_cv_func_putenv" = xyes then : - printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h + printf '%s\n' "#define HAVE_PUTENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "scandir" "ac_cv_func_scandir" if test "x$ac_cv_func_scandir" = xyes then : - printf "%s\n" "#define HAVE_SCANDIR 1" >>confdefs.h + printf '%s\n' "#define HAVE_SCANDIR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" if test "x$ac_cv_func_setenv" = xyes then : - printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer" if test "x$ac_cv_func_setitimer" = xyes then : - printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETITIMER 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "shutdown" "ac_cv_func_shutdown" if test "x$ac_cv_func_shutdown" = xyes then : - printf "%s\n" "#define HAVE_SHUTDOWN 1" >>confdefs.h + printf '%s\n' "#define HAVE_SHUTDOWN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask" if test "x$ac_cv_func_sigprocmask" = xyes then : - printf "%s\n" "#define HAVE_SIGPROCMASK 1" >>confdefs.h + printf '%s\n' "#define HAVE_SIGPROCMASK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "statfs" "ac_cv_func_statfs" if test "x$ac_cv_func_statfs" = xyes then : - printf "%s\n" "#define HAVE_STATFS 1" >>confdefs.h + printf '%s\n' "#define HAVE_STATFS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs" if test "x$ac_cv_func_statvfs" = xyes then : - printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h + printf '%s\n' "#define HAVE_STATVFS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "std_syslog" "ac_cv_func_std_syslog" if test "x$ac_cv_func_std_syslog" = xyes then : - printf "%s\n" "#define HAVE_STD_SYSLOG 1" >>confdefs.h + printf '%s\n' "#define HAVE_STD_SYSLOG 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" if test "x$ac_cv_func_strcasecmp" = xyes then : - printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" if test "x$ac_cv_func_strnlen" = xyes then : - printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRNLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strptime" "ac_cv_func_strptime" if test "x$ac_cv_func_strptime" = xyes then : - printf "%s\n" "#define HAVE_STRPTIME 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRPTIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strtok_r" "ac_cv_func_strtok_r" if test "x$ac_cv_func_strtok_r" = xyes then : - printf "%s\n" "#define HAVE_STRTOK_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRTOK_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "symlink" "ac_cv_func_symlink" if test "x$ac_cv_func_symlink" = xyes then : - printf "%s\n" "#define HAVE_SYMLINK 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYMLINK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset" if test "x$ac_cv_func_tzset" = xyes then : - printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h + printf '%s\n' "#define HAVE_TZSET 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv" if test "x$ac_cv_func_unsetenv" = xyes then : - printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h + printf '%s\n' "#define HAVE_UNSETENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep" if test "x$ac_cv_func_usleep" = xyes then : - printf "%s\n" "#define HAVE_USLEEP 1" >>confdefs.h + printf '%s\n' "#define HAVE_USLEEP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "utime" "ac_cv_func_utime" if test "x$ac_cv_func_utime" = xyes then : - printf "%s\n" "#define HAVE_UTIME 1" >>confdefs.h + printf '%s\n' "#define HAVE_UTIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes then : - printf "%s\n" "#define HAVE_VASPRINTF 1" >>confdefs.h + printf '%s\n' "#define HAVE_VASPRINTF 1" >>confdefs.h fi @@ -16740,8 +16601,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required inet_ntop not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -16752,15 +16613,15 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required inet_pton not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi -ac_fn_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +ac_fn_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_strerror_r" = xyes then : ac_have_decl=1 @@ -16768,7 +16629,7 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_STRERROR_R $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_STRERROR_R $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_strerror_r = yes; then @@ -16776,11 +16637,11 @@ # (We used to run AC_CHECK_FUNCS_ONCE for strerror_r, as well # as AC_CHECK_DECLS_ONCE.) -printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRERROR_R 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 printf %s "checking whether strerror_r returns char *... " >&6; } if test ${ac_cv_func_strerror_r_char_p+y} then : @@ -16815,11 +16676,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 -printf "%s\n" "$ac_cv_func_strerror_r_char_p" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 +printf '%s\n' "$ac_cv_func_strerror_r_char_p" >&6; } if test $ac_cv_func_strerror_r_char_p = yes; then -printf "%s\n" "#define STRERROR_R_CHAR_P 1" >>confdefs.h +printf '%s\n' "#define STRERROR_R_CHAR_P 1" >>confdefs.h fi @@ -16830,7 +16691,7 @@ ac_fn_c_check_func "$LINENO" "prctl" "ac_cv_func_prctl" if test "x$ac_cv_func_prctl" = xyes then : - printf "%s\n" "#define HAVE_PRCTL 1" >>confdefs.h + printf '%s\n' "#define HAVE_PRCTL 1" >>confdefs.h fi @@ -16842,7 +16703,7 @@ ac_fn_c_check_func "$LINENO" "procctl" "ac_cv_func_procctl" if test "x$ac_cv_func_procctl" = xyes then : - printf "%s\n" "#define HAVE_PROCCTL 1" >>confdefs.h + printf '%s\n' "#define HAVE_PROCCTL 1" >>confdefs.h fi @@ -16857,7 +16718,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how many arguments gethostbyname_r() takes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how many arguments gethostbyname_r() takes" >&5 printf %s "checking how many arguments gethostbyname_r() takes... " >&6; } if test ${ac_cv_func_which_gethostbyname_r+y} @@ -17005,44 +16866,44 @@ case "$ac_cv_func_which_gethostbyname_r" in three|five|six) -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h +printf '%s\n' "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h ;; esac case "$ac_cv_func_which_gethostbyname_r" in three) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: three" >&5 -printf "%s\n" "three" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: three" >&5 +printf '%s\n' "three" >&6; } -printf "%s\n" "#define HAVE_FUNC_GETHOSTBYNAME_R_3 1" >>confdefs.h +printf '%s\n' "#define HAVE_FUNC_GETHOSTBYNAME_R_3 1" >>confdefs.h ;; five) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: five" >&5 -printf "%s\n" "five" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: five" >&5 +printf '%s\n' "five" >&6; } -printf "%s\n" "#define HAVE_FUNC_GETHOSTBYNAME_R_5 1" >>confdefs.h +printf '%s\n' "#define HAVE_FUNC_GETHOSTBYNAME_R_5 1" >>confdefs.h ;; six) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: six" >&5 -printf "%s\n" "six" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: six" >&5 +printf '%s\n' "six" >&6; } -printf "%s\n" "#define HAVE_FUNC_GETHOSTBYNAME_R_6 1" >>confdefs.h +printf '%s\n' "#define HAVE_FUNC_GETHOSTBYNAME_R_6 1" >>confdefs.h ;; no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find function declaration in netdb.h" >&5 -printf "%s\n" "cannot find function declaration in netdb.h" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: cannot find function declaration in netdb.h" >&5 +printf '%s\n' "cannot find function declaration in netdb.h" >&6; } ;; unknown) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: can't tell" >&5 -printf "%s\n" "can't tell" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: can't tell" >&5 +printf '%s\n' "can't tell" >&6; } ;; *) @@ -17065,10 +16926,10 @@ ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" if test "x$ac_cv_func_nanosleep" = xyes then : - printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h + printf '%s\n' "#define HAVE_NANOSLEEP 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5 printf %s "checking for library containing nanosleep... " >&6; } if test ${ac_cv_search_nanosleep+y} then : @@ -17126,13 +16987,13 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5 -printf "%s\n" "$ac_cv_search_nanosleep" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5 +printf '%s\n' "$ac_cv_search_nanosleep" >&6; } ac_res=$ac_cv_search_nanosleep if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h + printf '%s\n' "#define HAVE_NANOSLEEP 1" >>confdefs.h fi ;; @@ -17141,7 +17002,7 @@ done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5 printf %s "checking for getaddrinfo... " >&6; } if test ${php_cv_func_getaddrinfo+y} then : @@ -17231,16 +17092,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_getaddrinfo" >&5 -printf "%s\n" "$php_cv_func_getaddrinfo" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_getaddrinfo" >&5 +printf '%s\n' "$php_cv_func_getaddrinfo" >&6; } if test "x$php_cv_func_getaddrinfo" = xyes then : -printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h +printf '%s\n' "#define HAVE_GETADDRINFO 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for copy_file_range" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for copy_file_range" >&5 printf %s "checking for copy_file_range... " >&6; } if test ${php_cv_func_copy_file_range+y} then : @@ -17278,19 +17139,19 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_copy_file_range" >&5 -printf "%s\n" "$php_cv_func_copy_file_range" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_copy_file_range" >&5 +printf '%s\n' "$php_cv_func_copy_file_range" >&6; } if test "x$php_cv_func_copy_file_range" = xyes then : -printf "%s\n" "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h +printf '%s\n' "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat" if test "x$ac_cv_func_strlcat" = xyes then : - printf "%s\n" "#define HAVE_STRLCAT 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRLCAT 1" >>confdefs.h else case e in #( e) case " $LIBOBJS " in @@ -17304,7 +17165,7 @@ ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" if test "x$ac_cv_func_strlcpy" = xyes then : - printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRLCPY 1" >>confdefs.h else case e in #( e) case " $LIBOBJS " in @@ -17318,7 +17179,7 @@ ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" if test "x$ac_cv_func_explicit_bzero" = xyes then : - printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h + printf '%s\n' "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h else case e in #( e) case " $LIBOBJS " in @@ -17332,7 +17193,7 @@ ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt" if test "x$ac_cv_func_getopt" = xyes then : - printf "%s\n" "#define HAVE_GETOPT 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETOPT 1" >>confdefs.h else case e in #( e) case " $LIBOBJS " in @@ -17350,14 +17211,14 @@ else case e in #( e) -printf "%s\n" "#define size_t unsigned int" >>confdefs.h +printf '%s\n' "#define size_t unsigned int" >>confdefs.h ;; esac fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 printf %s "checking for working alloca.h... " >&6; } if test ${ac_cv_working_alloca_h+y} then : @@ -17386,15 +17247,15 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -printf "%s\n" "$ac_cv_working_alloca_h" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then -printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_ALLOCA_H 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 printf %s "checking for alloca... " >&6; } if test ${ac_cv_func_alloca_works+y} then : @@ -17439,12 +17300,12 @@ fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then -printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h +printf '%s\n' "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions @@ -17454,10 +17315,10 @@ ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h +printf '%s\n' "#define C_ALLOCA 1" >>confdefs.h -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 printf %s "checking stack direction for C alloca... " >&6; } if test ${ac_cv_c_stack_direction+y} then : @@ -17501,14 +17362,14 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -printf "%s\n" "$ac_cv_c_stack_direction" >&6; } -printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of reentrant time-related functions" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for type of reentrant time-related functions" >&5 printf %s "checking for type of reentrant time-related functions... " >&6; } if test ${php_cv_time_r_type+y} then : @@ -17582,23 +17443,23 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_time_r_type" >&5 -printf "%s\n" "$php_cv_time_r_type" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_time_r_type" >&5 +printf '%s\n' "$php_cv_time_r_type" >&6; } case $php_cv_time_r_type in #( hpux) : -printf "%s\n" "#define PHP_HPUX_TIME_R 1" >>confdefs.h +printf '%s\n' "#define PHP_HPUX_TIME_R 1" >>confdefs.h ;; #( irix) : -printf "%s\n" "#define PHP_IRIX_TIME_R 1" >>confdefs.h +printf '%s\n' "#define PHP_IRIX_TIME_R 1" >>confdefs.h ;; #( *) : ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for aarch64 CRC32 API" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for aarch64 CRC32 API" >&5 printf %s "checking for aarch64 CRC32 API... " >&6; } if test ${php_cv_func___crc32d+y} then : @@ -17638,16 +17499,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func___crc32d" >&5 -printf "%s\n" "$php_cv_func___crc32d" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func___crc32d" >&5 +printf '%s\n' "$php_cv_func___crc32d" >&6; } if test "x$php_cv_func___crc32d" = xyes then : -printf "%s\n" "#define HAVE_AARCH64_CRC32 1" >>confdefs.h +printf '%s\n' "#define HAVE_AARCH64_CRC32 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for asm goto" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for asm goto" >&5 printf %s "checking for asm goto... " >&6; } if test ${php_cv_have__asm_goto+y} then : @@ -17683,19 +17544,19 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__asm_goto" >&5 -printf "%s\n" "$php_cv_have__asm_goto" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__asm_goto" >&5 +printf '%s\n' "$php_cv_have__asm_goto" >&6; } if test "x$php_cv_have__asm_goto" = xyes then : -printf "%s\n" "#define HAVE_ASM_GOTO 1" >>confdefs.h +printf '%s\n' "#define HAVE_ASM_GOTO 1" >>confdefs.h fi php_with_valgrind=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Valgrind support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable Valgrind support" >&5 printf %s "checking whether to enable Valgrind support... " >&6; } # Check whether --with-valgrind was given. @@ -17712,8 +17573,8 @@ ext_output=$PHP_VALGRIND -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -17725,17 +17586,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for valgrind" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for valgrind" >&5 printf %s "checking for valgrind... " >&6; } if test -n "$VALGRIND_CFLAGS"; then pkg_cv_VALGRIND_CFLAGS="$VALGRIND_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"valgrind\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"valgrind\""; } >&5 ($PKG_CONFIG --exists --print-errors "valgrind") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VALGRIND_CFLAGS=`$PKG_CONFIG --cflags "valgrind" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17749,10 +17610,10 @@ pkg_cv_VALGRIND_LIBS="$VALGRIND_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"valgrind\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"valgrind\""; } >&5 ($PKG_CONFIG --exists --print-errors "valgrind") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_VALGRIND_LIBS=`$PKG_CONFIG --libs "valgrind" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -17766,8 +17627,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -17793,10 +17654,10 @@ and VALGRIND_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -17810,8 +17671,8 @@ else VALGRIND_CFLAGS=$pkg_cv_VALGRIND_CFLAGS VALGRIND_LIBS=$pkg_cv_VALGRIND_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $VALGRIND_CFLAGS; do case $ac_i in @@ -17856,7 +17717,7 @@ done -printf "%s\n" "#define HAVE_VALGRIND 1" >>confdefs.h +printf '%s\n' "#define HAVE_VALGRIND 1" >>confdefs.h fi save_CFLAGS=$CFLAGS @@ -17864,7 +17725,7 @@ ac_fn_c_check_header_compile "$LINENO" "valgrind/cachegrind.h" "ac_cv_header_valgrind_cachegrind_h" "$ac_includes_default" if test "x$ac_cv_header_valgrind_cachegrind_h" = xyes then : - printf "%s\n" "#define HAVE_VALGRIND_CACHEGRIND_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_VALGRIND_CACHEGRIND_H 1" >>confdefs.h fi @@ -17874,10 +17735,10 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}General settings${T_ME}" >&5 -printf "%s\n" "${T_MD}General settings${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}General settings${T_ME}" >&5 +printf '%s\n' "${T_MD}General settings${T_ME}" >&6; } # Check whether --enable- was given. @@ -17890,7 +17751,7 @@ php_enable_gcov=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to include gcov symbols" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to include gcov symbols" >&5 printf %s "checking whether to include gcov symbols... " >&6; } # Check whether --enable-gcov was given. if test ${enable_gcov+y} @@ -17906,8 +17767,8 @@ ext_output=$PHP_GCOV -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -17936,7 +17797,7 @@ fi -printf "%s\n" "#define HAVE_GCOV 1" >>confdefs.h +printf '%s\n' "#define HAVE_GCOV 1" >>confdefs.h src=$abs_srcdir/build/Makefile.gcov ac_srcdir=$abs_srcdir @@ -17958,7 +17819,7 @@ php_enable_debug=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to include debugging symbols" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to include debugging symbols" >&5 printf %s "checking whether to include debugging symbols... " >&6; } # Check whether --enable-debug was given. if test ${enable_debug+y} @@ -17974,8 +17835,8 @@ ext_output=$PHP_DEBUG -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18015,7 +17876,7 @@ php_enable_debug_assertions=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable debug assertions in release mode" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable debug assertions in release mode" >&5 printf %s "checking whether to enable debug assertions in release mode... " >&6; } # Check whether --enable-debug-assertions was given. if test ${enable_debug_assertions+y} @@ -18031,8 +17892,8 @@ ext_output=$PHP_DEBUG_ASSERTIONS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18070,25 +17931,25 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Unable to verify system support for POSIX Threads, which are required for PHP thread safety (ZTS) build. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for POSIX threads" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for POSIX threads" >&5 printf %s "checking for POSIX threads... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi php_enable_rtld_now=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to dlopen extensions with RTLD_NOW instead of RTLD_LAZY" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to dlopen extensions with RTLD_NOW instead of RTLD_LAZY" >&5 printf %s "checking whether to dlopen extensions with RTLD_NOW instead of RTLD_LAZY... " >&6; } # Check whether --enable-rtld-now was given. if test ${enable_rtld_now+y} @@ -18104,8 +17965,8 @@ ext_output=$PHP_RTLD_NOW -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18113,14 +17974,14 @@ if test "x$PHP_RTLD_NOW" = xyes then : -printf "%s\n" "#define PHP_USE_RTLD_NOW 1" >>confdefs.h +printf '%s\n' "#define PHP_USE_RTLD_NOW 1" >>confdefs.h fi php_with_layout=PHP -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking layout of installed files" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking layout of installed files" >&5 printf %s "checking layout of installed files... " >&6; } # Check whether --with-layout was given. @@ -18137,8 +17998,8 @@ ext_output=$PHP_LAYOUT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18153,7 +18014,7 @@ php_with_config_file_path=DEFAULT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking path to configuration file" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking path to configuration file" >&5 printf %s "checking path to configuration file... " >&6; } # Check whether --with-config-file-path was given. @@ -18170,8 +18031,8 @@ ext_output=$PHP_CONFIG_FILE_PATH -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18186,7 +18047,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to scan for configuration files" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where to scan for configuration files" >&5 printf %s "checking where to scan for configuration files... " >&6; } php_with_config_file_scan_dir=DEFAULT @@ -18216,13 +18077,13 @@ then : PHP_CONFIG_FILE_SCAN_DIR= fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP_CONFIG_FILE_SCAN_DIR" >&5 -printf "%s\n" "$PHP_CONFIG_FILE_SCAN_DIR" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP_CONFIG_FILE_SCAN_DIR" >&5 +printf '%s\n' "$PHP_CONFIG_FILE_SCAN_DIR" >&6; } php_enable_sigchild=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable PHP's own SIGCHLD handler" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable PHP's own SIGCHLD handler" >&5 printf %s "checking whether to enable PHP's own SIGCHLD handler... " >&6; } # Check whether --enable-sigchild was given. if test ${enable_sigchild+y} @@ -18238,8 +18099,8 @@ ext_output=$PHP_SIGCHILD -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18247,10 +18108,10 @@ if test "x$PHP_SIGCHILD" = xyes then : - printf "%s\n" "#define PHP_SIGCHILD 1" >>confdefs.h + printf '%s\n' "#define PHP_SIGCHILD 1" >>confdefs.h else case e in #( - e) printf "%s\n" "#define PHP_SIGCHILD 0" >>confdefs.h + e) printf '%s\n' "#define PHP_SIGCHILD 0" >>confdefs.h ;; esac fi @@ -18258,7 +18119,7 @@ php_enable_libgcc=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to explicitly link against libgcc" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to explicitly link against libgcc" >&5 printf %s "checking whether to explicitly link against libgcc... " >&6; } # Check whether --enable-libgcc was given. if test ${enable_libgcc+y} @@ -18274,8 +18135,8 @@ ext_output=$PHP_LIBGCC -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18345,7 +18206,7 @@ php_enable_short_tags=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable short tags by default" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable short tags by default" >&5 printf %s "checking whether to enable short tags by default... " >&6; } # Check whether --enable-short-tags was given. if test ${enable_short_tags+y} @@ -18361,8 +18222,8 @@ ext_output=$PHP_SHORT_TAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18370,10 +18231,10 @@ if test "x$PHP_SHORT_TAGS" = xyes then : - printf "%s\n" "#define DEFAULT_SHORT_OPEN_TAG \"1\"" >>confdefs.h + printf '%s\n' "#define DEFAULT_SHORT_OPEN_TAG \"1\"" >>confdefs.h else case e in #( - e) printf "%s\n" "#define DEFAULT_SHORT_OPEN_TAG \"0\"" >>confdefs.h + e) printf '%s\n' "#define DEFAULT_SHORT_OPEN_TAG \"0\"" >>confdefs.h ;; esac fi @@ -18381,7 +18242,7 @@ php_enable_dmalloc=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable dmalloc" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable dmalloc" >&5 printf %s "checking whether to enable dmalloc... " >&6; } # Check whether --enable-dmalloc was given. if test ${enable_dmalloc+y} @@ -18397,15 +18258,15 @@ ext_output=$PHP_DMALLOC -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "x$PHP_DMALLOC" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dmalloc_error in -ldmalloc" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dmalloc_error in -ldmalloc" >&5 printf %s "checking for dmalloc_error in -ldmalloc... " >&6; } if test ${ac_cv_lib_dmalloc_dmalloc_error+y} then : @@ -18446,8 +18307,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmalloc_dmalloc_error" >&5 -printf "%s\n" "$ac_cv_lib_dmalloc_dmalloc_error" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmalloc_dmalloc_error" >&5 +printf '%s\n' "$ac_cv_lib_dmalloc_dmalloc_error" >&6; } if test "x$ac_cv_lib_dmalloc_dmalloc_error" = xyes then : @@ -18461,12 +18322,12 @@ -printf "%s\n" "#define HAVE_DMALLOC 1" >>confdefs.h +printf '%s\n' "#define HAVE_DMALLOC 1" >>confdefs.h as_fn_append CPPFLAGS " -DDMALLOC_FUNC_CHECK" else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The dmalloc check failed. Cannot enable dmalloc. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -18477,7 +18338,7 @@ php_enable_ipv6=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6 support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6 support" >&5 printf %s "checking whether to enable IPv6 support... " >&6; } # Check whether --enable-ipv6 was given. if test ${enable_ipv6+y} @@ -18493,15 +18354,15 @@ ext_output=$PHP_IPV6 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "x$PHP_IPV6" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IPv6 support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for IPv6 support" >&5 printf %s "checking for IPv6 support... " >&6; } if test ${php_cv_have_ipv6+y} then : @@ -18540,21 +18401,21 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_ipv6" >&5 -printf "%s\n" "$php_cv_have_ipv6" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_ipv6" >&5 +printf '%s\n' "$php_cv_have_ipv6" >&6; } fi if test "x$php_cv_have_ipv6" = xyes then : -printf "%s\n" "#define HAVE_IPV6 1" >>confdefs.h +printf '%s\n' "#define HAVE_IPV6 1" >>confdefs.h fi php_enable_dtrace=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable DTrace support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable DTrace support" >&5 printf %s "checking whether to enable DTrace support... " >&6; } # Check whether --enable-dtrace was given. if test ${enable_dtrace+y} @@ -18570,8 +18431,8 @@ ext_output=$PHP_DTRACE -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -18584,8 +18445,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot find required to enable DTrace support. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -18693,12 +18554,12 @@ -printf "%s\n" "#define HAVE_DTRACE 1" >>confdefs.h +printf '%s\n' "#define HAVE_DTRACE 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how big to make fd sets" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how big to make fd sets" >&5 printf %s "checking how big to make fd sets... " >&6; } php_enable_fd_setsize=no @@ -18725,14 +18586,14 @@ if test "x$PHP_FD_SETSIZE" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using system default" >&5 -printf "%s\n" "using system default" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: using system default" >&5 +printf '%s\n' "using system default" >&6; } else case e in #( e) if test "0$PHP_FD_SETSIZE" -gt 0 2>/dev/null; then CPPFLAGS="$CPPFLAGS -DFD_SETSIZE=$PHP_FD_SETSIZE" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $PHP_FD_SETSIZE" >&5 -printf "%s\n" "using $PHP_FD_SETSIZE" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: using $PHP_FD_SETSIZE" >&5 +printf '%s\n' "using $PHP_FD_SETSIZE" >&6; } else as_fn_error $? "Invalid value passed to --enable-fd-setsize!" "$LINENO" 5 fi @@ -18838,10 +18699,10 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring extensions${T_ME}" >&5 -printf "%s\n" "${T_MD}Configuring extensions${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring extensions${T_ME}" >&5 +printf '%s\n' "${T_MD}Configuring extensions${T_ME}" >&6; } # Check whether --enable-all was given. @@ -18857,7 +18718,7 @@ ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "$ac_includes_default" if test "x$ac_cv_header_io_h" = xyes then : - printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_IO_H 1" >>confdefs.h fi @@ -18865,18 +18726,18 @@ ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" if test "x$ac_cv_func_strtoll" = xyes then : - printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRTOLL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "atoll" "ac_cv_func_atoll" if test "x$ac_cv_func_atoll" = xyes then : - printf "%s\n" "#define HAVE_ATOLL 1" >>confdefs.h + printf '%s\n' "#define HAVE_ATOLL 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-implicit-fallthrough" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-implicit-fallthrough" >&5 printf %s "checking whether the C compiler accepts -Wno-implicit-fallthrough... " >&6; } if test ${ax_cv_check_cflags__Werror__Wno_implicit_fallthrough+y} then : @@ -18907,8 +18768,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&6; } if test "x$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" = xyes then : PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -Wno-implicit-fallthrough" @@ -18920,7 +18781,7 @@ PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fwrapv" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fwrapv" >&5 printf %s "checking whether the C compiler accepts -fwrapv... " >&6; } if test ${ax_cv_check_cflags___fwrapv+y} then : @@ -18951,8 +18812,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fwrapv" >&5 -printf "%s\n" "$ax_cv_check_cflags___fwrapv" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fwrapv" >&5 +printf '%s\n' "$ax_cv_check_cflags___fwrapv" >&6; } if test "x$ax_cv_check_cflags___fwrapv" = xyes then : PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -fwrapv" @@ -19100,7 +18961,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_DATE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_DATE 1" >>confdefs.h fi fi @@ -19308,7 +19169,7 @@ -printf "%s\n" "#define HAVE_TIMELIB_CONFIG_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIMELIB_CONFIG_H 1" >>confdefs.h cat > $ext_builddir/lib/timelib_config.h <&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with LIBXML support" >&5 printf %s "checking whether to build with LIBXML support... " >&6; } # Check whether --with-libxml was given. @@ -19374,8 +19235,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -19386,17 +19247,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19410,10 +19271,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19427,8 +19288,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -19454,10 +19315,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -19471,8 +19332,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -19632,7 +19493,7 @@ -printf "%s\n" "#define HAVE_LIBXML 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBXML 1" >>confdefs.h ext_builddir=ext/libxml @@ -19769,7 +19630,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_LIBXML 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_LIBXML 1" >>confdefs.h fi fi @@ -19914,7 +19775,7 @@ php_with_openssl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for OpenSSL support" >&5 printf %s "checking for OpenSSL support... " >&6; } # Check whether --with-openssl was given. @@ -19952,8 +19813,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -19961,7 +19822,7 @@ php_with_system_ciphers=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use system default cipher list instead of hardcoded value" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use system default cipher list instead of hardcoded value" >&5 printf %s "checking whether to use system default cipher list instead of hardcoded value... " >&6; } # Check whether --with-system-ciphers was given. @@ -19978,8 +19839,8 @@ ext_output=$PHP_SYSTEM_CIPHERS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -19987,7 +19848,7 @@ php_with_openssl_legacy_provider=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to load legacy algorithm provider" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to load legacy algorithm provider" >&5 printf %s "checking whether to load legacy algorithm provider... " >&6; } # Check whether --with-openssl-legacy-provider was given. @@ -20004,8 +19865,8 @@ ext_output=$PHP_OPENSSL_LEGACY_PROVIDER -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -20013,7 +19874,7 @@ php_with_openssl_argon2=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable argon2 password hashing (requires OpenSSL >= 3.2)" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable argon2 password hashing (requires OpenSSL >= 3.2)" >&5 printf %s "checking whether to enable argon2 password hashing (requires OpenSSL >= 3.2)... " >&6; } # Check whether --with-openssl-argon2 was given. @@ -20030,8 +19891,8 @@ ext_output=$PHP_OPENSSL_ARGON2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -20172,7 +20033,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_OPENSSL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_OPENSSL 1" >>confdefs.h fi fi @@ -20298,17 +20159,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 printf %s "checking for openssl >= 1.1.1... " >&6; } if test -n "$OPENSSL_CFLAGS"; then pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -20322,10 +20183,10 @@ pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -20339,8 +20200,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -20366,10 +20227,10 @@ and OPENSSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -20383,8 +20244,8 @@ else OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_openssl=yes fi @@ -20545,7 +20406,7 @@ done -printf "%s\n" "#define HAVE_OPENSSL_EXT 1" >>confdefs.h +printf '%s\n' "#define HAVE_OPENSSL_EXT 1" >>confdefs.h fi @@ -20668,7 +20529,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for RAND_egd in -lcrypto" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for RAND_egd in -lcrypto" >&5 printf %s "checking for RAND_egd in -lcrypto... " >&6; } if test ${ac_cv_lib_crypto_RAND_egd+y} then : @@ -20709,15 +20570,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RAND_egd" >&5 -printf "%s\n" "$ac_cv_lib_crypto_RAND_egd" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RAND_egd" >&5 +printf '%s\n' "$ac_cv_lib_crypto_RAND_egd" >&6; } if test "x$ac_cv_lib_crypto_RAND_egd" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_RAND_EGD 1" >>confdefs.h +printf '%s\n' "#define HAVE_RAND_EGD 1" >>confdefs.h else case e in #( @@ -20736,7 +20597,7 @@ else case e in #( e) -printf "%s\n" "#define USE_OPENSSL_SYSTEM_CIPHERS 1" >>confdefs.h +printf '%s\n' "#define USE_OPENSSL_SYSTEM_CIPHERS 1" >>confdefs.h ;; esac fi @@ -20746,7 +20607,7 @@ else case e in #( e) -printf "%s\n" "#define LOAD_OPENSSL_LEGACY_PROVIDER 1" >>confdefs.h +printf '%s\n' "#define LOAD_OPENSSL_LEGACY_PROVIDER 1" >>confdefs.h ;; esac fi @@ -20879,7 +20740,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OSSL_set_max_threads in -lcrypto" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for OSSL_set_max_threads in -lcrypto" >&5 printf %s "checking for OSSL_set_max_threads in -lcrypto... " >&6; } if test ${ac_cv_lib_crypto_OSSL_set_max_threads+y} then : @@ -20920,15 +20781,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_OSSL_set_max_threads" >&5 -printf "%s\n" "$ac_cv_lib_crypto_OSSL_set_max_threads" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_OSSL_set_max_threads" >&5 +printf '%s\n' "$ac_cv_lib_crypto_OSSL_set_max_threads" >&6; } if test "x$ac_cv_lib_crypto_OSSL_set_max_threads" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_OPENSSL_ARGON2 1" >>confdefs.h +printf '%s\n' "#define HAVE_OPENSSL_ARGON2 1" >>confdefs.h else case e in #( @@ -20976,7 +20837,7 @@ php_with_pcre_jit=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable PCRE JIT functionality" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable PCRE JIT functionality" >&5 printf %s "checking whether to enable PCRE JIT functionality... " >&6; } # Check whether --with-pcre-jit was given. @@ -20993,8 +20854,8 @@ ext_output=$PHP_PCRE_JIT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -21005,17 +20866,17 @@ if test "$PHP_EXTERNAL_PCRE" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpcre2-8 >= 10.30" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libpcre2-8 >= 10.30" >&5 printf %s "checking for libpcre2-8 >= 10.30... " >&6; } if test -n "$PCRE2_CFLAGS"; then pkg_cv_PCRE2_CFLAGS="$PCRE2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre2-8 >= 10.30\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre2-8 >= 10.30\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpcre2-8 >= 10.30") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PCRE2_CFLAGS=`$PKG_CONFIG --cflags "libpcre2-8 >= 10.30" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -21029,10 +20890,10 @@ pkg_cv_PCRE2_LIBS="$PCRE2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre2-8 >= 10.30\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre2-8 >= 10.30\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpcre2-8 >= 10.30") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PCRE2_LIBS=`$PKG_CONFIG --libs "libpcre2-8 >= 10.30" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -21046,8 +20907,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -21073,10 +20934,10 @@ and PCRE2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21090,8 +20951,8 @@ else PCRE2_CFLAGS=$pkg_cv_PCRE2_CFLAGS PCRE2_LIBS=$pkg_cv_PCRE2_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -21232,14 +21093,14 @@ esac done - printf "%s\n" "#define PCRE2_CODE_UNIT_WIDTH 8" >>confdefs.h + printf '%s\n' "#define PCRE2_CODE_UNIT_WIDTH 8" >>confdefs.h if test "x$PHP_PCRE_JIT" = xno then : else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether external PCRE2 library has JIT supported" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether external PCRE2 library has JIT supported" >&5 printf %s "checking whether external PCRE2 library has JIT supported... " >&6; } if test ${php_cv_have_pcre2_jit+y} then : @@ -21288,11 +21149,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_pcre2_jit" >&5 -printf "%s\n" "$php_cv_have_pcre2_jit" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_pcre2_jit" >&5 +printf '%s\n' "$php_cv_have_pcre2_jit" >&6; } if test "x$php_cv_have_pcre2_jit" = xyes then : - printf "%s\n" "#define HAVE_PCRE_JIT_SUPPORT 1" >>confdefs.h + printf '%s\n' "#define HAVE_PCRE_JIT_SUPPORT 1" >>confdefs.h fi ;; @@ -21434,7 +21295,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PCRE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PCRE 1" >>confdefs.h fi fi @@ -21570,13 +21431,13 @@ else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PCRE library to use" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PCRE library to use" >&5 printf %s "checking for PCRE library to use... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: bundled" >&5 -printf "%s\n" "bundled" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: bundled" >&5 +printf '%s\n' "bundled" >&6; } pcrelib_sources=" pcre2lib/pcre2_auto_possess.c pcre2lib/pcre2_chartables.c pcre2lib/pcre2_chkdint.c pcre2lib/pcre2_compile.c pcre2lib/pcre2_config.c pcre2lib/pcre2_context.c pcre2lib/pcre2_convert.c pcre2lib/pcre2_dfa_match.c pcre2lib/pcre2_error.c pcre2lib/pcre2_extuni.c pcre2lib/pcre2_find_bracket.c pcre2lib/pcre2_jit_compile.c pcre2lib/pcre2_maketables.c pcre2lib/pcre2_match_data.c pcre2lib/pcre2_match.c pcre2lib/pcre2_newline.c pcre2lib/pcre2_ord2utf.c pcre2lib/pcre2_pattern_info.c pcre2lib/pcre2_script_run.c pcre2lib/pcre2_serialize.c pcre2lib/pcre2_string_utils.c pcre2lib/pcre2_study.c pcre2lib/pcre2_substitute.c pcre2lib/pcre2_substring.c pcre2lib/pcre2_tables.c pcre2lib/pcre2_ucd.c pcre2lib/pcre2_valid_utf.c pcre2lib/pcre2_xclass.c " - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-implicit-fallthrough" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-implicit-fallthrough" >&5 printf %s "checking whether the C compiler accepts -Wno-implicit-fallthrough... " >&6; } if test ${ax_cv_check_cflags__Werror__Wno_implicit_fallthrough+y} then : @@ -21607,8 +21468,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&6; } if test "x$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" = xyes then : PHP_PCRE_CFLAGS="$PHP_PCRE_CFLAGS -Wno-implicit-fallthrough" @@ -21620,18 +21481,18 @@ PHP_PCRE_CFLAGS="$PHP_PCRE_CFLAGS -DHAVE_CONFIG_H -I@ext_srcdir@/pcre2lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1" -printf "%s\n" "#define HAVE_BUNDLED_PCRE 1" >>confdefs.h +printf '%s\n' "#define HAVE_BUNDLED_PCRE 1" >>confdefs.h - printf "%s\n" "#define PCRE2_CODE_UNIT_WIDTH 8" >>confdefs.h + printf '%s\n' "#define PCRE2_CODE_UNIT_WIDTH 8" >>confdefs.h if test "x$PHP_PCRE_JIT" = xno then : else case e in #( - e) printf "%s\n" "#define HAVE_PCRE_JIT_SUPPORT 1" >>confdefs.h + e) printf '%s\n' "#define HAVE_PCRE_JIT_SUPPORT 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Intel CET is enabled" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether Intel CET is enabled" >&5 printf %s "checking whether Intel CET is enabled... " >&6; } if test ${php_cv_have_pcre2_intel_cet+y} then : @@ -21663,8 +21524,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_pcre2_intel_cet" >&5 -printf "%s\n" "$php_cv_have_pcre2_intel_cet" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_pcre2_intel_cet" >&5 +printf '%s\n' "$php_cv_have_pcre2_intel_cet" >&6; } if test "x$php_cv_have_pcre2_intel_cet" = xyes then : PHP_PCRE_CFLAGS="-mshstk $PHP_PCRE_CFLAGS" @@ -21680,7 +21541,7 @@ e) if test "x$ZEND_DEBUG" = xyes then : -printf "%s\n" "#define HAVE_PCRE_VALGRIND_SUPPORT 1" >>confdefs.h +printf '%s\n' "#define HAVE_PCRE_VALGRIND_SUPPORT 1" >>confdefs.h fi ;; esac @@ -21821,7 +21682,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PCRE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PCRE 1" >>confdefs.h fi fi @@ -21966,7 +21827,7 @@ php_with_sqlite3=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable the SQLite3 extension" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable the SQLite3 extension" >&5 printf %s "checking whether to enable the SQLite3 extension... " >&6; } # Check whether --with-sqlite3 was given. @@ -22004,8 +21865,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -22014,17 +21875,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= 3.7.7" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= 3.7.7" >&5 printf %s "checking for sqlite3 >= 3.7.7... " >&6; } if test -n "$SQLITE_CFLAGS"; then pkg_cv_SQLITE_CFLAGS="$SQLITE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7.7") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SQLITE_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.7.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -22038,10 +21899,10 @@ pkg_cv_SQLITE_LIBS="$SQLITE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7.7") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SQLITE_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.7.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -22055,8 +21916,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -22082,10 +21943,10 @@ and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -22099,8 +21960,8 @@ else SQLITE_CFLAGS=$pkg_cv_SQLITE_CFLAGS SQLITE_LIBS=$pkg_cv_SQLITE_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $SQLITE_CFLAGS; do @@ -22261,7 +22122,7 @@ fi -printf "%s\n" "#define HAVE_SQLITE3 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLITE3 1" >>confdefs.h @@ -22382,7 +22243,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_errstr in -lsqlite3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3_errstr in -lsqlite3" >&5 printf %s "checking for sqlite3_errstr in -lsqlite3... " >&6; } if test ${ac_cv_lib_sqlite3_sqlite3_errstr+y} then : @@ -22423,15 +22284,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_errstr" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_errstr" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_errstr" >&5 +printf '%s\n' "$ac_cv_lib_sqlite3_sqlite3_errstr" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_errstr" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SQLITE3_ERRSTR 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLITE3_ERRSTR 1" >>confdefs.h else case e in #( @@ -22563,7 +22424,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_expanded_sql in -lsqlite3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3_expanded_sql in -lsqlite3" >&5 printf %s "checking for sqlite3_expanded_sql in -lsqlite3... " >&6; } if test ${ac_cv_lib_sqlite3_sqlite3_expanded_sql+y} then : @@ -22604,15 +22465,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_expanded_sql" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_expanded_sql" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_expanded_sql" >&5 +printf '%s\n' "$ac_cv_lib_sqlite3_sqlite3_expanded_sql" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_expanded_sql" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SQLITE3_EXPANDED_SQL 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLITE3_EXPANDED_SQL 1" >>confdefs.h else case e in #( @@ -22744,7 +22605,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5 printf %s "checking for sqlite3_load_extension in -lsqlite3... " >&6; } if test ${ac_cv_lib_sqlite3_sqlite3_load_extension+y} then : @@ -22785,8 +22646,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5 +printf '%s\n' "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes then : @@ -22800,7 +22661,7 @@ ext_shared=$save_ext_shared unset ac_cv_lib_sqlite3_sqlite3_load_extension -printf "%s\n" "#define SQLITE_OMIT_LOAD_EXTENSION 1" >>confdefs.h +printf '%s\n' "#define SQLITE_OMIT_LOAD_EXTENSION 1" >>confdefs.h ;; esac @@ -22942,7 +22803,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SQLITE3 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SQLITE3 1" >>confdefs.h fi fi @@ -23071,7 +22932,7 @@ php_with_zlib=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZLIB support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ZLIB support" >&5 printf %s "checking for ZLIB support... " >&6; } # Check whether --with-zlib was given. @@ -23109,8 +22970,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -23118,17 +22979,17 @@ if test "$PHP_ZLIB" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.11" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.11" >&5 printf %s "checking for zlib >= 1.2.11... " >&6; } if test -n "$ZLIB_CFLAGS"; then pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -23142,10 +23003,10 @@ pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -23159,8 +23020,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -23186,10 +23047,10 @@ and ZLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -23203,8 +23064,8 @@ else ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS ZLIB_LIBS=$pkg_cv_ZLIB_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $ZLIB_CFLAGS; do case $ac_i in @@ -23361,7 +23222,7 @@ done -printf "%s\n" "#define HAVE_ZLIB 1" >>confdefs.h +printf '%s\n' "#define HAVE_ZLIB 1" >>confdefs.h ext_builddir=ext/zlib @@ -23498,7 +23359,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_ZLIB 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_ZLIB 1" >>confdefs.h fi fi @@ -23628,7 +23489,7 @@ php_enable_bcmath=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable bc style precision math functions" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable bc style precision math functions" >&5 printf %s "checking whether to enable bc style precision math functions... " >&6; } # Check whether --enable-bcmath was given. if test ${enable_bcmath+y} @@ -23665,8 +23526,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -23807,7 +23668,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_BCMATH 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_BCMATH 1" >>confdefs.h fi fi @@ -23928,7 +23789,7 @@ as_fn_append BUILD_DIR " $ext_builddir/libbcmath/src" -printf "%s\n" "#define HAVE_BCMATH 1" >>confdefs.h +printf '%s\n' "#define HAVE_BCMATH 1" >>confdefs.h fi @@ -23938,7 +23799,7 @@ php_with_bz2=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZip2 support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for BZip2 support" >&5 printf %s "checking for BZip2 support... " >&6; } # Check whether --with-bz2 was given. @@ -23976,8 +23837,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -23998,18 +23859,18 @@ esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZip2" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for BZip2" >&5 printf %s "checking for BZip2... " >&6; } if ${BZIP_DIR:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: bzlib.h not found" >&5 -printf "%s\n" "bzlib.h not found" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: bzlib.h not found" >&5 +printf '%s\n' "bzlib.h not found" >&6; } as_fn_error $? "Please reinstall the BZip2 library package" "$LINENO" 5 else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $BZIP_DIR" >&5 -printf "%s\n" "found in $BZIP_DIR" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: found in $BZIP_DIR" >&5 +printf '%s\n' "found in $BZIP_DIR" >&6; } ;; esac fi @@ -24131,7 +23992,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzerror in -lbz2" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzerror in -lbz2" >&5 printf %s "checking for BZ2_bzerror in -lbz2... " >&6; } if test ${ac_cv_lib_bz2_BZ2_bzerror+y} then : @@ -24172,8 +24033,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzerror" >&5 -printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzerror" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzerror" >&5 +printf '%s\n' "$ac_cv_lib_bz2_BZ2_bzerror" >&6; } if test "x$ac_cv_lib_bz2_BZ2_bzerror" = xyes then : @@ -24320,7 +24181,7 @@ -printf "%s\n" "#define HAVE_BZ2 1" >>confdefs.h +printf '%s\n' "#define HAVE_BZ2 1" >>confdefs.h @@ -24329,8 +24190,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_bz2_BZ2_bzerror - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The bz2 extension requires libbz2 >= 1.0.0 See 'config.log' for more details" "$LINENO" 5; } ;; @@ -24473,7 +24334,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_BZ2 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_BZ2 1" >>confdefs.h fi fi @@ -24602,7 +24463,7 @@ php_enable_calendar=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable calendar conversion support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable calendar conversion support" >&5 printf %s "checking whether to enable calendar conversion support... " >&6; } # Check whether --enable-calendar was given. if test ${enable_calendar+y} @@ -24639,15 +24500,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_CALENDAR" = "yes"; then -printf "%s\n" "#define HAVE_CALENDAR 1" >>confdefs.h +printf '%s\n' "#define HAVE_CALENDAR 1" >>confdefs.h ext_builddir=ext/calendar @@ -24784,7 +24645,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_CALENDAR 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_CALENDAR 1" >>confdefs.h fi fi @@ -24910,7 +24771,7 @@ php_enable_ctype=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable ctype functions" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable ctype functions" >&5 printf %s "checking whether to enable ctype functions... " >&6; } # Check whether --enable-ctype was given. if test ${enable_ctype+y} @@ -24947,15 +24808,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_CTYPE" != "no"; then -printf "%s\n" "#define HAVE_CTYPE 1" >>confdefs.h +printf '%s\n' "#define HAVE_CTYPE 1" >>confdefs.h ext_builddir=ext/ctype @@ -25092,7 +24953,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_CTYPE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_CTYPE 1" >>confdefs.h fi fi @@ -25218,7 +25079,7 @@ php_with_curl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cURL support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cURL support" >&5 printf %s "checking for cURL support... " >&6; } # Check whether --with-curl was given. @@ -25256,8 +25117,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -25265,17 +25126,17 @@ if test "$PHP_CURL" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcurl >= 7.61.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libcurl >= 7.61.0" >&5 printf %s "checking for libcurl >= 7.61.0... " >&6; } if test -n "$CURL_CFLAGS"; then pkg_cv_CURL_CFLAGS="$CURL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.61.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.61.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcurl >= 7.61.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CURL_CFLAGS=`$PKG_CONFIG --cflags "libcurl >= 7.61.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -25289,10 +25150,10 @@ pkg_cv_CURL_LIBS="$CURL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.61.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.61.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcurl >= 7.61.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CURL_LIBS=`$PKG_CONFIG --libs "libcurl >= 7.61.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -25306,8 +25167,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -25333,10 +25194,10 @@ and CURL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -25350,8 +25211,8 @@ else CURL_CFLAGS=$pkg_cv_CURL_CFLAGS CURL_LIBS=$pkg_cv_CURL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -25359,10 +25220,10 @@ pkg_cv_CURL_FEATURES="$CURL_FEATURES" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcurl") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CURL_FEATURES=`$PKG_CONFIG --variable="supported_features" "libcurl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -25535,7 +25396,7 @@ done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL support in libcurl" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SSL support in libcurl" >&5 printf %s "checking for SSL support in libcurl... " >&6; } case $CURL_FEATURES in #( *SSL*) : @@ -25543,12 +25404,12 @@ *) : CURL_SSL=no ;; esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL_SSL" >&5 -printf "%s\n" "$CURL_SSL" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CURL_SSL" >&5 +printf '%s\n' "$CURL_SSL" >&6; } if test "x$PHP_THREAD_SAFETY" = xyes && test "x$CURL_SSL" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether libcurl is linked against old OpenSSL < 1.1" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether libcurl is linked against old OpenSSL < 1.1" >&5 printf %s "checking whether libcurl is linked against old OpenSSL < 1.1... " >&6; } if test ${php_cv_lib_curl_ssl+y} then : @@ -25625,31 +25486,31 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_curl_ssl" >&5 -printf "%s\n" "$php_cv_lib_curl_ssl" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_curl_ssl" >&5 +printf '%s\n' "$php_cv_lib_curl_ssl" >&6; } if test "x$php_cv_lib_curl_ssl" = xyes then : -printf "%s\n" "#define HAVE_CURL_OLD_OPENSSL 1" >>confdefs.h +printf '%s\n' "#define HAVE_CURL_OLD_OPENSSL 1" >>confdefs.h found_openssl=no pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 printf %s "checking for openssl >= 1.1.1... " >&6; } if test -n "$OPENSSL_CFLAGS"; then pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -25663,10 +25524,10 @@ pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -25680,8 +25541,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -25707,10 +25568,10 @@ and OPENSSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -25724,8 +25585,8 @@ else OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_openssl=yes fi @@ -25888,7 +25749,7 @@ ac_fn_c_check_header_compile "$LINENO" "openssl/crypto.h" "ac_cv_header_openssl_crypto_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_crypto_h" = xyes then : - printf "%s\n" "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h fi @@ -26017,7 +25878,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curl_easy_perform in -lcurl" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for curl_easy_perform in -lcurl" >&5 printf %s "checking for curl_easy_perform in -lcurl... " >&6; } if test ${ac_cv_lib_curl_curl_easy_perform+y} then : @@ -26058,15 +25919,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curl_curl_easy_perform" >&5 -printf "%s\n" "$ac_cv_lib_curl_curl_easy_perform" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curl_curl_easy_perform" >&5 +printf '%s\n' "$ac_cv_lib_curl_curl_easy_perform" >&6; } if test "x$ac_cv_lib_curl_curl_easy_perform" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_CURL 1" >>confdefs.h +printf '%s\n' "#define HAVE_CURL 1" >>confdefs.h else case e in #( @@ -26074,8 +25935,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_curl_curl_easy_perform - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The libcurl check failed. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -26218,7 +26079,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_CURL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_CURL 1" >>confdefs.h fi fi @@ -26793,8 +26654,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$LIB""_dpopen" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dpopen in -l$LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$LIB""_dpopen" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dpopen in -l$LIB" >&5 printf %s "checking for dpopen in -l$LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -26836,8 +26697,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -26845,10 +26706,10 @@ ext_shared=$save_ext_shared -printf "%s\n" "#define QDBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define QDBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_QDBM 1" >>confdefs.h +printf '%s\n' "#define DBA_QDBM 1" >>confdefs.h THIS_LIBS=$LIB @@ -27001,7 +26862,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -27009,11 +26870,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -27029,7 +26890,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n "You cannot combine --with-gdbm with --with-qdbm"; then as_fn_error $? "You cannot combine --with-gdbm with --with-qdbm" "$LINENO" 5 @@ -27037,11 +26898,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -27173,7 +27034,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5 printf %s "checking for gdbm_open in -lgdbm... " >&6; } if test ${ac_cv_lib_gdbm_gdbm_open+y} then : @@ -27214,8 +27075,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5 -printf "%s\n" "$ac_cv_lib_gdbm_gdbm_open" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5 +printf '%s\n' "$ac_cv_lib_gdbm_gdbm_open" >&6; } if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes then : @@ -27223,10 +27084,10 @@ ext_shared=$save_ext_shared -printf "%s\n" "#define GDBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define GDBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_GDBM 1" >>confdefs.h +printf '%s\n' "#define DBA_GDBM 1" >>confdefs.h THIS_LIBS=gdbm @@ -27375,7 +27236,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -27383,11 +27244,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -27526,8 +27387,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$LIB""_dbm_open" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dbm_open in -l$LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$LIB""_dbm_open" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dbm_open in -l$LIB" >&5 printf %s "checking for dbm_open in -l$LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -27569,8 +27430,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -27578,10 +27439,10 @@ ext_shared=$save_ext_shared -printf "%s\n" "#define NDBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define NDBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_NDBM 1" >>confdefs.h +printf '%s\n' "#define DBA_NDBM 1" >>confdefs.h THIS_LIBS=$LIB @@ -27734,7 +27595,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -27742,11 +27603,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -27915,8 +27776,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$LIB""_tcadbopen" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tcadbopen in -l$LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$LIB""_tcadbopen" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tcadbopen in -l$LIB" >&5 printf %s "checking for tcadbopen in -l$LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -27958,8 +27819,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -27967,10 +27828,10 @@ ext_shared=$save_ext_shared -printf "%s\n" "#define TCADB_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define TCADB_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_TCADB 1" >>confdefs.h +printf '%s\n' "#define DBA_TCADB 1" >>confdefs.h THIS_LIBS=$LIB @@ -28123,7 +27984,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -28131,11 +27992,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -28304,8 +28165,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$LIB""_mdb_env_open" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mdb_env_open in -l$LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$LIB""_mdb_env_open" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mdb_env_open in -l$LIB" >&5 printf %s "checking for mdb_env_open in -l$LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -28347,8 +28208,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -28356,10 +28217,10 @@ ext_shared=$save_ext_shared -printf "%s\n" "#define LMDB_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define LMDB_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_LMDB 1" >>confdefs.h +printf '%s\n' "#define DBA_LMDB 1" >>confdefs.h THIS_LIBS=$LIB @@ -28512,7 +28373,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -28520,11 +28381,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -28665,14 +28526,14 @@ if ${THIS_LIBS:+false} : then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "DB4 major version check failed: header contains different version See 'config.log' for more details" "$LINENO" 5; } fi if test "4" = "4"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DB4 minor version and patch level" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DB4 minor version and patch level" >&5 printf %s "checking for DB4 minor version and patch level... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -28686,8 +28547,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "yes" >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf '%s\n' "ok" >&6; } else case e in #( e) as_fn_error $? "Version 4.1 requires patch level 25" "$LINENO" 5 ;; esac @@ -28698,7 +28559,7 @@ if test "x$ext_shared" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if dba can be used as shared extension" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if dba can be used as shared extension" >&5 printf %s "checking if dba can be used as shared extension... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -28712,8 +28573,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "yes" >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( e) as_fn_error $? "At least version 3.3 is required" "$LINENO" 5 ;; esac @@ -28729,7 +28590,7 @@ fi -printf "%s\n" "#define DBA_DB4 1" >>confdefs.h +printf '%s\n' "#define DBA_DB4 1" >>confdefs.h if ${THIS_INCLUDE:+false} : @@ -28737,7 +28598,7 @@ else case e in #( e) -printf "%s\n" "#define DB4_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define DB4_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h ;; esac fi @@ -28868,7 +28729,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -28876,11 +28737,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -28896,7 +28757,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n "You cannot combine --with-db3 with --with-db4"; then as_fn_error $? "You cannot combine --with-db3 with --with-db4" "$LINENO" 5 @@ -28904,11 +28765,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -29004,14 +28865,14 @@ if ${THIS_LIBS:+false} : then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "DB3 major version check failed: header contains different version See 'config.log' for more details" "$LINENO" 5; } fi if test "3" = "4"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DB4 minor version and patch level" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DB4 minor version and patch level" >&5 printf %s "checking for DB4 minor version and patch level... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -29025,8 +28886,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "yes" >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf '%s\n' "ok" >&6; } else case e in #( e) as_fn_error $? "Version 4.1 requires patch level 25" "$LINENO" 5 ;; esac @@ -29037,7 +28898,7 @@ if test "x$ext_shared" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if dba can be used as shared extension" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if dba can be used as shared extension" >&5 printf %s "checking if dba can be used as shared extension... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -29051,8 +28912,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "yes" >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( e) as_fn_error $? "At least version 3.3 is required" "$LINENO" 5 ;; esac @@ -29068,7 +28929,7 @@ fi -printf "%s\n" "#define DBA_DB3 1" >>confdefs.h +printf '%s\n' "#define DBA_DB3 1" >>confdefs.h if ${THIS_INCLUDE:+false} : @@ -29076,7 +28937,7 @@ else case e in #( e) -printf "%s\n" "#define DB3_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define DB3_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h ;; esac fi @@ -29207,7 +29068,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -29215,11 +29076,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -29234,7 +29095,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n "You cannot combine --with-db2 with --with-db3 or --with-db4"; then as_fn_error $? "You cannot combine --with-db2 with --with-db3 or --with-db4" "$LINENO" 5 @@ -29242,11 +29103,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -29334,14 +29195,14 @@ if ${THIS_LIBS:+false} : then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "DB2 major version check failed: header contains different version See 'config.log' for more details" "$LINENO" 5; } fi if test "2" = "4"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DB4 minor version and patch level" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DB4 minor version and patch level" >&5 printf %s "checking for DB4 minor version and patch level... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -29355,8 +29216,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "yes" >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf '%s\n' "ok" >&6; } else case e in #( e) as_fn_error $? "Version 4.1 requires patch level 25" "$LINENO" 5 ;; esac @@ -29367,7 +29228,7 @@ if test "x$ext_shared" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if dba can be used as shared extension" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if dba can be used as shared extension" >&5 printf %s "checking if dba can be used as shared extension... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -29381,8 +29242,8 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "yes" >/dev/null 2>&1 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( e) as_fn_error $? "At least version 3.3 is required" "$LINENO" 5 ;; esac @@ -29398,7 +29259,7 @@ fi -printf "%s\n" "#define DBA_DB2 1" >>confdefs.h +printf '%s\n' "#define DBA_DB2 1" >>confdefs.h if ${THIS_INCLUDE:+false} : @@ -29406,7 +29267,7 @@ else case e in #( e) -printf "%s\n" "#define DB2_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define DB2_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h ;; esac fi @@ -29537,7 +29398,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -29545,18 +29406,18 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME if test "$PHP_DB1" != "no"; then unset THIS_INCLUDE THIS_LIBS THIS_LFLAGS THIS_PREFIX THIS_RESULT - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DB1 in library" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DB1 in library" >&5 printf %s "checking for DB1 in library... " >&6; } if test "$HAVE_DB4" = "1"; then THIS_VERSION=4 @@ -29572,7 +29433,7 @@ fi if test "$HAVE_DB4" = "1" || test "$HAVE_DB3" = "1" || test "$HAVE_DB2" = "1"; then -printf "%s\n" "#define DB1_VERSION \"Berkeley DB 1.85 emulation in DB$THIS_VERSION\"" >>confdefs.h +printf '%s\n' "#define DB1_VERSION \"Berkeley DB 1.85 emulation in DB$THIS_VERSION\"" >>confdefs.h for i in \ db$THIS_VERSION/db_185.h \ @@ -29586,7 +29447,7 @@ done else -printf "%s\n" "#define DB1_VERSION \"Unknown DB1\"" >>confdefs.h +printf '%s\n' "#define DB1_VERSION \"Unknown DB1\"" >>confdefs.h for i in $PHP_DB1 /usr/local /usr; do if test -f "$i/db1/db.h"; then @@ -29605,12 +29466,12 @@ done THIS_LIBS=db fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_LIBS" >&5 -printf "%s\n" "$THIS_LIBS" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DB1 in header" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_LIBS" >&5 +printf '%s\n' "$THIS_LIBS" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DB1 in header" >&5 printf %s "checking for DB1 in header... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_INCLUDE" >&5 -printf "%s\n" "$THIS_INCLUDE" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_INCLUDE" >&5 +printf '%s\n' "$THIS_INCLUDE" >&6; } if test -n "$THIS_INCLUDE"; then old_LDFLAGS=$LDFLAGS @@ -29631,10 +29492,10 @@ if ac_fn_c_try_link "$LINENO" then : -printf "%s\n" "#define DB1_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define DB1_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_DB1 1" >>confdefs.h +printf '%s\n' "#define DBA_DB1 1" >>confdefs.h THIS_RESULT=yes @@ -29780,7 +29641,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -29788,11 +29649,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -29808,7 +29669,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n "You cannot combine --with-dbm with --with-qdbm"; then as_fn_error $? "You cannot combine --with-dbm with --with-qdbm" "$LINENO" 5 @@ -29816,11 +29677,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -29957,8 +29818,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$LIB""_dbminit" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dbminit in -l$LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$LIB""_dbminit" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dbminit in -l$LIB" >&5 printf %s "checking for dbminit in -l$LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -30000,40 +29861,40 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DBM using GDBM" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DBM using GDBM" >&5 printf %s "checking for DBM using GDBM... " >&6; } -printf "%s\n" "#define DBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define DBM_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h if test "x$LIB" = xgdbm then : -printf "%s\n" "#define DBM_VERSION \"GDBM\"" >>confdefs.h +printf '%s\n' "#define DBM_VERSION \"GDBM\"" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( e) -printf "%s\n" "#define DBM_VERSION \"DBM\"" >>confdefs.h +printf '%s\n' "#define DBM_VERSION \"DBM\"" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi -printf "%s\n" "#define DBA_DBM 1" >>confdefs.h +printf '%s\n' "#define DBA_DBM 1" >>confdefs.h THIS_LIBS=$LIB @@ -30186,7 +30047,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -30194,11 +30055,11 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME @@ -30281,10 +30142,10 @@ if test "$PHP_CDB" = "yes"; then -printf "%s\n" "#define DBA_CDB_BUILTIN 1" >>confdefs.h +printf '%s\n' "#define DBA_CDB_BUILTIN 1" >>confdefs.h -printf "%s\n" "#define DBA_CDB 1" >>confdefs.h +printf '%s\n' "#define DBA_CDB 1" >>confdefs.h cdb_sources="libcdb/cdb.c libcdb/cdb_make.c libcdb/uint32.c" THIS_RESULT="builtin" @@ -30418,8 +30279,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$LIB""_cdb_read" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cdb_read in -l$LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$LIB""_cdb_read" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cdb_read in -l$LIB" >&5 printf %s "checking for cdb_read in -l$LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -30461,8 +30322,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -30470,10 +30331,10 @@ ext_shared=$save_ext_shared -printf "%s\n" "#define CDB_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h +printf '%s\n' "#define CDB_INCLUDE_FILE \"$THIS_INCLUDE\"" >>confdefs.h -printf "%s\n" "#define DBA_CDB 1" >>confdefs.h +printf '%s\n' "#define DBA_CDB 1" >>confdefs.h THIS_LIBS=$LIB @@ -30626,7 +30487,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -30634,18 +30495,18 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME if test "$PHP_INIFILE" != "no"; then -printf "%s\n" "#define DBA_INIFILE 1" >>confdefs.h +printf '%s\n' "#define DBA_INIFILE 1" >>confdefs.h ini_sources="libinifile/inifile.c" THIS_RESULT="builtin" @@ -30657,7 +30518,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -30665,18 +30526,18 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME if test "$PHP_FLATFILE" != "no"; then -printf "%s\n" "#define DBA_FLATFILE 1" >>confdefs.h +printf '%s\n' "#define DBA_FLATFILE 1" >>confdefs.h flat_sources="libflatfile/flatfile.c" THIS_RESULT="builtin" @@ -30688,7 +30549,7 @@ else THIS_FULL_NAME="$THIS_NAME" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $THIS_FULL_NAME support" >&5 printf %s "checking for $THIS_FULL_NAME support... " >&6; } if test -n ""; then as_fn_error $? "" "$LINENO" 5 @@ -30696,32 +30557,32 @@ if test "$THIS_RESULT" = "yes" || test "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 eval HAVE_$THIS_NAME=1 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 -printf "%s\n" "$THIS_RESULT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $THIS_RESULT" >&5 +printf '%s\n' "$THIS_RESULT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi unset THIS_RESULT THIS_NAME THIS_FULL_NAME -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable DBA interface" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable DBA interface" >&5 printf %s "checking whether to enable DBA interface... " >&6; } if test "x$HAVE_DBA" = x1 then : if test "x$ext_shared" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, shared" >&5 -printf "%s\n" "yes, shared" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes, shared" >&5 +printf '%s\n' "yes, shared" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; esac fi -printf "%s\n" "#define HAVE_DBA 1" >>confdefs.h +printf '%s\n' "#define HAVE_DBA 1" >>confdefs.h ext_builddir=ext/dba @@ -30858,7 +30719,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_DBA 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_DBA 1" >>confdefs.h fi fi @@ -30983,8 +30844,8 @@ else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi @@ -30994,7 +30855,7 @@ php_enable_dl_test=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable dl-test extension" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable dl-test extension" >&5 printf %s "checking whether to enable dl-test extension... " >&6; } # Check whether --enable-dl-test was given. if test ${enable_dl_test+y} @@ -31031,8 +30892,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -31175,7 +31036,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_DL_TEST 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_DL_TEST 1" >>confdefs.h fi fi @@ -31301,7 +31162,7 @@ php_enable_dom=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable DOM support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable DOM support" >&5 printf %s "checking whether to enable DOM support... " >&6; } # Check whether --enable-dom was given. if test ${enable_dom+y} @@ -31338,8 +31199,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -31348,17 +31209,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -31372,10 +31233,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -31389,8 +31250,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -31416,10 +31277,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -31433,8 +31294,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -31594,9 +31455,9 @@ -printf "%s\n" "#define HAVE_DOM 1" >>confdefs.h +printf '%s\n' "#define HAVE_DOM 1" >>confdefs.h - PHP_LEXBOR_CFLAGS="-I@ext_srcdir@/lexbor -DLEXBOR_STATIC" + PHP_LEXBOR_CFLAGS="-Wno-unknown-warning-option -Wno-unterminated-string-initialization -I@ext_srcdir@/lexbor -DLEXBOR_STATIC" LEXBOR_DIR="lexbor/lexbor" LEXBOR_SOURCES=" $LEXBOR_DIR/core/array_obj.c $LEXBOR_DIR/core/array.c $LEXBOR_DIR/core/avl.c $LEXBOR_DIR/core/bst.c $LEXBOR_DIR/core/conv.c $LEXBOR_DIR/core/diyfp.c $LEXBOR_DIR/core/dobject.c $LEXBOR_DIR/core/dtoa.c $LEXBOR_DIR/core/hash.c $LEXBOR_DIR/core/mem.c $LEXBOR_DIR/core/mraw.c $LEXBOR_DIR/core/print.c $LEXBOR_DIR/core/serialize.c $LEXBOR_DIR/core/shs.c $LEXBOR_DIR/core/str.c $LEXBOR_DIR/core/strtod.c $LEXBOR_DIR/css/at_rule.c $LEXBOR_DIR/css/at_rule/state.c $LEXBOR_DIR/css/blank.c $LEXBOR_DIR/css/css.c $LEXBOR_DIR/css/declaration.c $LEXBOR_DIR/css/log.c $LEXBOR_DIR/css/parser.c $LEXBOR_DIR/css/property.c $LEXBOR_DIR/css/property/state.c $LEXBOR_DIR/css/rule.c $LEXBOR_DIR/css/selectors/pseudo_state.c $LEXBOR_DIR/css/selectors/pseudo.c $LEXBOR_DIR/css/selectors/selector.c $LEXBOR_DIR/css/selectors/selectors.c $LEXBOR_DIR/css/selectors/state.c $LEXBOR_DIR/css/state.c $LEXBOR_DIR/css/stylesheet.c $LEXBOR_DIR/css/syntax/anb.c $LEXBOR_DIR/css/syntax/parser.c $LEXBOR_DIR/css/syntax/state.c $LEXBOR_DIR/css/syntax/syntax.c $LEXBOR_DIR/css/syntax/token.c $LEXBOR_DIR/css/syntax/tokenizer.c $LEXBOR_DIR/css/syntax/tokenizer/error.c $LEXBOR_DIR/css/unit.c $LEXBOR_DIR/css/value.c $LEXBOR_DIR/dom/interface.c $LEXBOR_DIR/dom/interfaces/attr.c $LEXBOR_DIR/dom/interfaces/cdata_section.c $LEXBOR_DIR/dom/interfaces/character_data.c $LEXBOR_DIR/dom/interfaces/comment.c $LEXBOR_DIR/dom/interfaces/document_fragment.c $LEXBOR_DIR/dom/interfaces/document_type.c $LEXBOR_DIR/dom/interfaces/document.c $LEXBOR_DIR/dom/interfaces/element.c $LEXBOR_DIR/dom/interfaces/node.c $LEXBOR_DIR/dom/interfaces/processing_instruction.c $LEXBOR_DIR/dom/interfaces/shadow_root.c $LEXBOR_DIR/dom/interfaces/text.c $LEXBOR_DIR/encoding/decode.c $LEXBOR_DIR/encoding/encode.c $LEXBOR_DIR/encoding/encoding.c $LEXBOR_DIR/encoding/multi.c $LEXBOR_DIR/encoding/range.c $LEXBOR_DIR/encoding/res.c $LEXBOR_DIR/encoding/single.c $LEXBOR_DIR/html/encoding.c $LEXBOR_DIR/html/interface.c $LEXBOR_DIR/html/interfaces/anchor_element.c $LEXBOR_DIR/html/interfaces/area_element.c $LEXBOR_DIR/html/interfaces/audio_element.c $LEXBOR_DIR/html/interfaces/base_element.c $LEXBOR_DIR/html/interfaces/body_element.c $LEXBOR_DIR/html/interfaces/br_element.c $LEXBOR_DIR/html/interfaces/button_element.c $LEXBOR_DIR/html/interfaces/canvas_element.c $LEXBOR_DIR/html/interfaces/d_list_element.c $LEXBOR_DIR/html/interfaces/data_element.c $LEXBOR_DIR/html/interfaces/data_list_element.c $LEXBOR_DIR/html/interfaces/details_element.c $LEXBOR_DIR/html/interfaces/dialog_element.c $LEXBOR_DIR/html/interfaces/directory_element.c $LEXBOR_DIR/html/interfaces/div_element.c $LEXBOR_DIR/html/interfaces/document.c $LEXBOR_DIR/html/interfaces/element.c $LEXBOR_DIR/html/interfaces/embed_element.c $LEXBOR_DIR/html/interfaces/field_set_element.c $LEXBOR_DIR/html/interfaces/font_element.c $LEXBOR_DIR/html/interfaces/form_element.c $LEXBOR_DIR/html/interfaces/frame_element.c $LEXBOR_DIR/html/interfaces/frame_set_element.c $LEXBOR_DIR/html/interfaces/head_element.c $LEXBOR_DIR/html/interfaces/heading_element.c $LEXBOR_DIR/html/interfaces/hr_element.c $LEXBOR_DIR/html/interfaces/html_element.c $LEXBOR_DIR/html/interfaces/iframe_element.c $LEXBOR_DIR/html/interfaces/image_element.c $LEXBOR_DIR/html/interfaces/input_element.c $LEXBOR_DIR/html/interfaces/label_element.c $LEXBOR_DIR/html/interfaces/legend_element.c $LEXBOR_DIR/html/interfaces/li_element.c $LEXBOR_DIR/html/interfaces/link_element.c $LEXBOR_DIR/html/interfaces/map_element.c $LEXBOR_DIR/html/interfaces/marquee_element.c $LEXBOR_DIR/html/interfaces/media_element.c $LEXBOR_DIR/html/interfaces/menu_element.c $LEXBOR_DIR/html/interfaces/meta_element.c $LEXBOR_DIR/html/interfaces/meter_element.c $LEXBOR_DIR/html/interfaces/mod_element.c $LEXBOR_DIR/html/interfaces/o_list_element.c $LEXBOR_DIR/html/interfaces/object_element.c $LEXBOR_DIR/html/interfaces/opt_group_element.c $LEXBOR_DIR/html/interfaces/option_element.c $LEXBOR_DIR/html/interfaces/output_element.c $LEXBOR_DIR/html/interfaces/paragraph_element.c $LEXBOR_DIR/html/interfaces/param_element.c $LEXBOR_DIR/html/interfaces/picture_element.c $LEXBOR_DIR/html/interfaces/pre_element.c $LEXBOR_DIR/html/interfaces/progress_element.c $LEXBOR_DIR/html/interfaces/quote_element.c $LEXBOR_DIR/html/interfaces/script_element.c $LEXBOR_DIR/html/interfaces/search_element.c $LEXBOR_DIR/html/interfaces/select_element.c $LEXBOR_DIR/html/interfaces/selectedcontent_element.c $LEXBOR_DIR/html/interfaces/slot_element.c $LEXBOR_DIR/html/interfaces/source_element.c $LEXBOR_DIR/html/interfaces/span_element.c $LEXBOR_DIR/html/interfaces/style_element.c $LEXBOR_DIR/html/interfaces/table_caption_element.c $LEXBOR_DIR/html/interfaces/table_cell_element.c $LEXBOR_DIR/html/interfaces/table_col_element.c $LEXBOR_DIR/html/interfaces/table_element.c $LEXBOR_DIR/html/interfaces/table_row_element.c $LEXBOR_DIR/html/interfaces/table_section_element.c $LEXBOR_DIR/html/interfaces/template_element.c $LEXBOR_DIR/html/interfaces/text_area_element.c $LEXBOR_DIR/html/interfaces/time_element.c $LEXBOR_DIR/html/interfaces/title_element.c $LEXBOR_DIR/html/interfaces/track_element.c $LEXBOR_DIR/html/interfaces/u_list_element.c $LEXBOR_DIR/html/interfaces/unknown_element.c $LEXBOR_DIR/html/interfaces/video_element.c $LEXBOR_DIR/html/interfaces/window.c $LEXBOR_DIR/html/parser.c $LEXBOR_DIR/html/tag.c $LEXBOR_DIR/html/token_attr.c $LEXBOR_DIR/html/token.c $LEXBOR_DIR/html/tokenizer.c $LEXBOR_DIR/html/tokenizer/error.c $LEXBOR_DIR/html/tokenizer/state_comment.c $LEXBOR_DIR/html/tokenizer/state_doctype.c $LEXBOR_DIR/html/tokenizer/state_rawtext.c $LEXBOR_DIR/html/tokenizer/state_rcdata.c $LEXBOR_DIR/html/tokenizer/state_script.c $LEXBOR_DIR/html/tokenizer/state.c $LEXBOR_DIR/html/tree.c $LEXBOR_DIR/html/tree/active_formatting.c $LEXBOR_DIR/html/tree/error.c $LEXBOR_DIR/html/tree/insertion_mode/after_after_body.c $LEXBOR_DIR/html/tree/insertion_mode/after_after_frameset.c $LEXBOR_DIR/html/tree/insertion_mode/after_body.c $LEXBOR_DIR/html/tree/insertion_mode/after_frameset.c $LEXBOR_DIR/html/tree/insertion_mode/after_head.c $LEXBOR_DIR/html/tree/insertion_mode/before_head.c $LEXBOR_DIR/html/tree/insertion_mode/before_html.c $LEXBOR_DIR/html/tree/insertion_mode/foreign_content.c $LEXBOR_DIR/html/tree/insertion_mode/in_body.c $LEXBOR_DIR/html/tree/insertion_mode/in_caption.c $LEXBOR_DIR/html/tree/insertion_mode/in_cell.c $LEXBOR_DIR/html/tree/insertion_mode/in_column_group.c $LEXBOR_DIR/html/tree/insertion_mode/in_frameset.c $LEXBOR_DIR/html/tree/insertion_mode/in_head_noscript.c $LEXBOR_DIR/html/tree/insertion_mode/in_head.c $LEXBOR_DIR/html/tree/insertion_mode/in_row.c $LEXBOR_DIR/html/tree/insertion_mode/in_table_body.c $LEXBOR_DIR/html/tree/insertion_mode/in_table_text.c $LEXBOR_DIR/html/tree/insertion_mode/in_table.c $LEXBOR_DIR/html/tree/insertion_mode/in_template.c $LEXBOR_DIR/html/tree/insertion_mode/initial.c $LEXBOR_DIR/html/tree/insertion_mode/text.c $LEXBOR_DIR/html/tree/open_elements.c $LEXBOR_DIR/ns/ns.c $LEXBOR_DIR/ports/posix/lexbor/core/memory.c $LEXBOR_DIR/selectors-adapted/selectors.c $LEXBOR_DIR/tag/tag.c " @@ -31734,7 +31595,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_DOM 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_DOM 1" >>confdefs.h fi fi @@ -31903,7 +31764,7 @@ php_with_enchant=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with Enchant support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with Enchant support" >&5 printf %s "checking whether to build with Enchant support... " >&6; } # Check whether --with-enchant was given. @@ -31941,8 +31802,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -31950,17 +31811,17 @@ if test "$PHP_ENCHANT" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant-2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for enchant-2" >&5 printf %s "checking for enchant-2... " >&6; } if test -n "$ENCHANT2_CFLAGS"; then pkg_cv_ENCHANT2_CFLAGS="$ENCHANT2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant-2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant-2\""; } >&5 ($PKG_CONFIG --exists --print-errors "enchant-2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ENCHANT2_CFLAGS=`$PKG_CONFIG --cflags "enchant-2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -31974,10 +31835,10 @@ pkg_cv_ENCHANT2_LIBS="$ENCHANT2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant-2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant-2\""; } >&5 ($PKG_CONFIG --exists --print-errors "enchant-2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ENCHANT2_LIBS=`$PKG_CONFIG --libs "enchant-2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -31991,8 +31852,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -32009,14 +31870,14 @@ found_enchant_2=no elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } found_enchant_2=no else ENCHANT2_CFLAGS=$pkg_cv_ENCHANT2_CFLAGS ENCHANT2_LIBS=$pkg_cv_ENCHANT2_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_enchant_2=yes fi @@ -32179,26 +32040,26 @@ done -printf "%s\n" "#define HAVE_ENCHANT_GET_VERSION 1" >>confdefs.h +printf '%s\n' "#define HAVE_ENCHANT_GET_VERSION 1" >>confdefs.h else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libenchant-2 not found trying with old libenchant" >&5 -printf "%s\n" "$as_me: WARNING: libenchant-2 not found trying with old libenchant" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: libenchant-2 not found trying with old libenchant" >&5 +printf '%s\n' "$as_me: WARNING: libenchant-2 not found trying with old libenchant" >&2;} pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant >= 1.4.2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for enchant >= 1.4.2" >&5 printf %s "checking for enchant >= 1.4.2... " >&6; } if test -n "$ENCHANT_CFLAGS"; then pkg_cv_ENCHANT_CFLAGS="$ENCHANT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant >= 1.4.2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant >= 1.4.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "enchant >= 1.4.2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ENCHANT_CFLAGS=`$PKG_CONFIG --cflags "enchant >= 1.4.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -32212,10 +32073,10 @@ pkg_cv_ENCHANT_LIBS="$ENCHANT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant >= 1.4.2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant >= 1.4.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "enchant >= 1.4.2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ENCHANT_LIBS=`$PKG_CONFIG --libs "enchant >= 1.4.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -32229,8 +32090,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -32256,10 +32117,10 @@ and ENCHANT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -32273,8 +32134,8 @@ else ENCHANT_CFLAGS=$pkg_cv_ENCHANT_CFLAGS ENCHANT_LIBS=$pkg_cv_ENCHANT_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -32552,7 +32413,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant_get_version in -lenchant" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for enchant_get_version in -lenchant" >&5 printf %s "checking for enchant_get_version in -lenchant... " >&6; } if test ${ac_cv_lib_enchant_enchant_get_version+y} then : @@ -32593,14 +32454,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_enchant_enchant_get_version" >&5 -printf "%s\n" "$ac_cv_lib_enchant_enchant_get_version" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_enchant_enchant_get_version" >&5 +printf '%s\n' "$ac_cv_lib_enchant_enchant_get_version" >&6; } if test "x$ac_cv_lib_enchant_enchant_get_version" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared - printf "%s\n" "#define HAVE_ENCHANT_GET_VERSION 1" >>confdefs.h + printf '%s\n' "#define HAVE_ENCHANT_GET_VERSION 1" >>confdefs.h else case e in #( @@ -32732,7 +32593,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for enchant_broker_set_param in -lenchant" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for enchant_broker_set_param in -lenchant" >&5 printf %s "checking for enchant_broker_set_param in -lenchant... " >&6; } if test ${ac_cv_lib_enchant_enchant_broker_set_param+y} then : @@ -32773,15 +32634,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_enchant_enchant_broker_set_param" >&5 -printf "%s\n" "$ac_cv_lib_enchant_enchant_broker_set_param" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_enchant_enchant_broker_set_param" >&5 +printf '%s\n' "$ac_cv_lib_enchant_enchant_broker_set_param" >&6; } if test "x$ac_cv_lib_enchant_enchant_broker_set_param" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_ENCHANT_BROKER_SET_PARAM 1" >>confdefs.h +printf '%s\n' "#define HAVE_ENCHANT_BROKER_SET_PARAM 1" >>confdefs.h else case e in #( @@ -32799,7 +32660,7 @@ fi -printf "%s\n" "#define HAVE_ENCHANT 1" >>confdefs.h +printf '%s\n' "#define HAVE_ENCHANT 1" >>confdefs.h @@ -32937,7 +32798,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_ENCHANT 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_ENCHANT 1" >>confdefs.h fi fi @@ -33066,7 +32927,7 @@ php_enable_exif=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable EXIF (metadata from images) support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable EXIF (metadata from images) support" >&5 printf %s "checking whether to enable EXIF (metadata from images) support... " >&6; } # Check whether --enable-exif was given. if test ${enable_exif+y} @@ -33103,15 +32964,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_EXIF" != "no"; then -printf "%s\n" "#define HAVE_EXIF 1" >>confdefs.h +printf '%s\n' "#define HAVE_EXIF 1" >>confdefs.h ext_builddir=ext/exif @@ -33248,7 +33109,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_EXIF 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_EXIF 1" >>confdefs.h fi fi @@ -33374,7 +33235,7 @@ php_with_ffi=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FFI support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for FFI support" >&5 printf %s "checking for FFI support... " >&6; } # Check whether --with-ffi was given. @@ -33412,8 +33273,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -33421,17 +33282,17 @@ if test "$PHP_FFI" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libffi >= 3.0.11" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libffi >= 3.0.11" >&5 printf %s "checking for libffi >= 3.0.11... " >&6; } if test -n "$FFI_CFLAGS"; then pkg_cv_FFI_CFLAGS="$FFI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "libffi >= 3.0.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi >= 3.0.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -33445,10 +33306,10 @@ pkg_cv_FFI_LIBS="$FFI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "libffi >= 3.0.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFI_LIBS=`$PKG_CONFIG --libs "libffi >= 3.0.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -33462,8 +33323,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -33489,10 +33350,10 @@ and FFI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -33506,8 +33367,8 @@ else FFI_CFLAGS=$pkg_cv_FFI_CFLAGS FFI_LIBS=$pkg_cv_FFI_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -33668,14 +33529,14 @@ -printf "%s\n" "#define HAVE_FFI 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI 1" >>confdefs.h ac_fn_c_check_type "$LINENO" "long double" "ac_cv_type_long_double" "$ac_includes_default" if test "x$ac_cv_type_long_double" = xyes then : -printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h +printf '%s\n' "#define HAVE_LONG_DOUBLE 1" >>confdefs.h fi @@ -33686,59 +33547,59 @@ CFLAGS_SAVE=$CFLAGS CFLAGS="$CFLAGS $FFI_CFLAGS" ac_fn_check_decl "$LINENO" "FFI_FASTCALL" "ac_cv_have_decl_FFI_FASTCALL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_FASTCALL" = xyes then : -printf "%s\n" "#define HAVE_FFI_FASTCALL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_FASTCALL 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "FFI_THISCALL" "ac_cv_have_decl_FFI_THISCALL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_THISCALL" = xyes then : -printf "%s\n" "#define HAVE_FFI_THISCALL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_THISCALL 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "FFI_STDCALL" "ac_cv_have_decl_FFI_STDCALL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_STDCALL" = xyes then : -printf "%s\n" "#define HAVE_FFI_STDCALL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_STDCALL 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "FFI_PASCAL" "ac_cv_have_decl_FFI_PASCAL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_PASCAL" = xyes then : -printf "%s\n" "#define HAVE_FFI_PASCAL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_PASCAL 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "FFI_REGISTER" "ac_cv_have_decl_FFI_REGISTER" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_REGISTER" = xyes then : -printf "%s\n" "#define HAVE_FFI_REGISTER 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_REGISTER 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "FFI_MS_CDECL" "ac_cv_have_decl_FFI_MS_CDECL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_MS_CDECL" = xyes then : -printf "%s\n" "#define HAVE_FFI_MS_CDECL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_MS_CDECL 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "FFI_SYSV" "ac_cv_have_decl_FFI_SYSV" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_FFI_SYSV" = xyes then : -printf "%s\n" "#define HAVE_FFI_SYSV 1" >>confdefs.h +printf '%s\n' "#define HAVE_FFI_SYSV 1" >>confdefs.h fi CFLAGS=$CFLAGS_SAVE @@ -33878,7 +33739,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_FFI 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_FFI 1" >>confdefs.h fi fi @@ -34007,7 +33868,7 @@ php_enable_fileinfo=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fileinfo support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for fileinfo support" >&5 printf %s "checking for fileinfo support... " >&6; } # Check whether --enable-fileinfo was given. if test ${enable_fileinfo+y} @@ -34044,8 +33905,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -34056,7 +33917,7 @@ ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" if test "x$ac_cv_header_sys_sysmacros_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h fi @@ -34067,12 +33928,12 @@ ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr" if test "x$ac_cv_func_strcasestr" = xyes then : - printf "%s\n" "#define HAVE_STRCASESTR 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRCASESTR 1" >>confdefs.h else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using libmagic strcasestr implementation" >&5 -printf "%s\n" "$as_me: using libmagic strcasestr implementation" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: using libmagic strcasestr implementation" >&5 +printf '%s\n' "$as_me: using libmagic strcasestr implementation" >&6;} libmagic_sources="$libmagic_sources libmagic/strcasestr.c" ;; esac @@ -34083,7 +33944,7 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility))" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility))" >&5 printf %s "checking for __attribute__((visibility))... " >&6; } if test ${ax_cv_have_func_attribute_visibility+y} then : @@ -34126,13 +33987,13 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_visibility" >&5 -printf "%s\n" "$ax_cv_have_func_attribute_visibility" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_visibility" >&5 +printf '%s\n' "$ax_cv_have_func_attribute_visibility" >&6; } if test yes = $ax_cv_have_func_attribute_visibility then : -printf "%s\n" "#define HAVE_FUNC_ATTRIBUTE_VISIBILITY 1" >>confdefs.h +printf '%s\n' "#define HAVE_FUNC_ATTRIBUTE_VISIBILITY 1" >>confdefs.h fi @@ -34274,7 +34135,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_FILEINFO 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_FILEINFO 1" >>confdefs.h fi fi @@ -34417,13 +34278,13 @@ ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes" if test "x$ac_cv_func_utimes" = xyes then : - printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h + printf '%s\n' "#define HAVE_UTIMES 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" if test "x$ac_cv_func_strndup" = xyes then : - printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h + printf '%s\n' "#define HAVE_STRNDUP 1" >>confdefs.h fi @@ -34441,7 +34302,7 @@ php_enable_filter=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable input filter support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable input filter support" >&5 printf %s "checking whether to enable input filter support... " >&6; } # Check whether --enable-filter was given. if test ${enable_filter+y} @@ -34478,8 +34339,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -34620,7 +34481,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_FILTER 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_FILTER 1" >>confdefs.h fi fi @@ -34783,7 +34644,7 @@ php_enable_ftp=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable FTP support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable FTP support" >&5 printf %s "checking whether to enable FTP support... " >&6; } # Check whether --enable-ftp was given. if test ${enable_ftp+y} @@ -34820,8 +34681,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -34834,7 +34695,7 @@ php_with_ftp_ssl=$PHP_OPENSSL -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable FTP over SSL support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable FTP over SSL support" >&5 printf %s "checking whether to enable FTP over SSL support... " >&6; } # Check whether --with-ftp-ssl was given. @@ -34851,15 +34712,15 @@ ext_output=$PHP_FTP_SSL -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_FTP" = "yes"; then -printf "%s\n" "#define HAVE_FTP 1" >>confdefs.h +printf '%s\n' "#define HAVE_FTP 1" >>confdefs.h ext_builddir=ext/ftp @@ -34996,7 +34857,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_FTP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_FTP 1" >>confdefs.h fi fi @@ -35125,17 +34986,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 printf %s "checking for openssl >= 1.1.1... " >&6; } if test -n "$OPENSSL_CFLAGS"; then pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -35149,10 +35010,10 @@ pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -35166,8 +35027,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -35193,10 +35054,10 @@ and OPENSSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -35210,8 +35071,8 @@ else OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_openssl=yes fi @@ -35378,7 +35239,7 @@ PHP_VAR_SUBST="$PHP_VAR_SUBST FTP_SHARED_LIBADD" -printf "%s\n" "#define HAVE_FTP_SSL 1" >>confdefs.h +printf '%s\n' "#define HAVE_FTP_SSL 1" >>confdefs.h ;; esac @@ -35391,7 +35252,7 @@ php_enable_gd=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GD support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GD support" >&5 printf %s "checking for GD support... " >&6; } # Check whether --enable-gd was given. if test ${enable_gd+y} @@ -35428,8 +35289,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35437,7 +35298,7 @@ php_with_external_gd=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for external libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for external libgd" >&5 printf %s "checking for external libgd... " >&6; } # Check whether --with-external-gd was given. @@ -35454,8 +35315,8 @@ ext_output=$PHP_EXTERNAL_GD -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35463,7 +35324,7 @@ php_with_avif=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libavif" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libavif" >&5 printf %s "checking for libavif... " >&6; } # Check whether --with-avif was given. @@ -35480,8 +35341,8 @@ ext_output=$PHP_AVIF -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35489,7 +35350,7 @@ php_with_webp=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libwebp" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libwebp" >&5 printf %s "checking for libwebp... " >&6; } # Check whether --with-webp was given. @@ -35506,8 +35367,8 @@ ext_output=$PHP_WEBP -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35515,7 +35376,7 @@ php_with_jpeg=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libjpeg" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libjpeg" >&5 printf %s "checking for libjpeg... " >&6; } # Check whether --with-jpeg was given. @@ -35532,8 +35393,8 @@ ext_output=$PHP_JPEG -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35541,7 +35402,7 @@ php_with_xpm=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libXpm" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libXpm" >&5 printf %s "checking for libXpm... " >&6; } # Check whether --with-xpm was given. @@ -35558,8 +35419,8 @@ ext_output=$PHP_XPM -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35567,7 +35428,7 @@ php_with_freetype=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FreeType 2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for FreeType 2" >&5 printf %s "checking for FreeType 2... " >&6; } # Check whether --with-freetype was given. @@ -35584,8 +35445,8 @@ ext_output=$PHP_FREETYPE -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35593,7 +35454,7 @@ php_enable_gd_jis_conv=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable JIS-mapped Japanese font support in GD" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable JIS-mapped Japanese font support in GD" >&5 printf %s "checking whether to enable JIS-mapped Japanese font support in GD... " >&6; } # Check whether --enable-gd-jis-conv was given. if test ${enable_gd_jis_conv+y} @@ -35609,8 +35470,8 @@ ext_output=$PHP_GD_JIS_CONV -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -35640,31 +35501,31 @@ extra_sources=" libgd/gd_avif.c libgd/gd_bmp.c libgd/gd_color_match.c libgd/gd_crop.c libgd/gd_filter.c libgd/gd_gd.c libgd/gd_gd2.c libgd/gd_gif_in.c libgd/gd_gif_out.c libgd/gd_interpolation.c libgd/gd_io_dp.c libgd/gd_io_file.c libgd/gd_io_ss.c libgd/gd_io.c libgd/gd_jpeg.c libgd/gd_matrix.c libgd/gd_pixelate.c libgd/gd_png.c libgd/gd_rotate.c libgd/gd_security.c libgd/gd_ss.c libgd/gd_tga.c libgd/gd_topal.c libgd/gd_transform.c libgd/gd_wbmp.c libgd/gd_webp.c libgd/gd_xbm.c libgd/gd.c libgd/gdcache.c libgd/gdfontg.c libgd/gdfontl.c libgd/gdfontmb.c libgd/gdfonts.c libgd/gdfontt.c libgd/gdft.c libgd/gdhelpers.c libgd/gdkanji.c libgd/gdtables.c libgd/gdxpm.c libgd/wbmp.c " -printf "%s\n" "#define HAVE_GD_BUNDLED 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_BUNDLED 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_PNG 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_PNG 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_BMP 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_BMP 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_TGA 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_TGA 1" >>confdefs.h pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.11" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.11" >&5 printf %s "checking for zlib >= 1.2.11... " >&6; } if test -n "$ZLIB_CFLAGS"; then pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -35678,10 +35539,10 @@ pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -35695,8 +35556,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -35722,10 +35583,10 @@ and ZLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -35739,8 +35600,8 @@ else ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS ZLIB_LIBS=$pkg_cv_ZLIB_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $ZLIB_CFLAGS; do case $ac_i in @@ -35901,17 +35762,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5 printf %s "checking for libpng... " >&6; } if test -n "$PNG_CFLAGS"; then pkg_cv_PNG_CFLAGS="$PNG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -35925,10 +35786,10 @@ pkg_cv_PNG_LIBS="$PNG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -35942,8 +35803,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -35969,10 +35830,10 @@ and PNG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -35986,8 +35847,8 @@ else PNG_CFLAGS=$pkg_cv_PNG_CFLAGS PNG_LIBS=$pkg_cv_PNG_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -36146,7 +36007,7 @@ done -printf "%s\n" "#define HAVE_LIBPNG 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBPNG 1" >>confdefs.h @@ -36157,17 +36018,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libavif >= 0.8.2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libavif >= 0.8.2" >&5 printf %s "checking for libavif >= 0.8.2... " >&6; } if test -n "$AVIF_CFLAGS"; then pkg_cv_AVIF_CFLAGS="$AVIF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavif >= 0.8.2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavif >= 0.8.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libavif >= 0.8.2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_AVIF_CFLAGS=`$PKG_CONFIG --cflags "libavif >= 0.8.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36181,10 +36042,10 @@ pkg_cv_AVIF_LIBS="$AVIF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavif >= 0.8.2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavif >= 0.8.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libavif >= 0.8.2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_AVIF_LIBS=`$PKG_CONFIG --libs "libavif >= 0.8.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36198,8 +36059,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -36225,10 +36086,10 @@ and AVIF_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -36242,8 +36103,8 @@ else AVIF_CFLAGS=$pkg_cv_AVIF_CFLAGS AVIF_LIBS=$pkg_cv_AVIF_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -36402,10 +36263,10 @@ done -printf "%s\n" "#define HAVE_LIBAVIF 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBAVIF 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_AVIF 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_AVIF 1" >>confdefs.h ;; esac @@ -36419,17 +36280,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libwebp >= 0.2.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libwebp >= 0.2.0" >&5 printf %s "checking for libwebp >= 0.2.0... " >&6; } if test -n "$WEBP_CFLAGS"; then pkg_cv_WEBP_CFLAGS="$WEBP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp >= 0.2.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp >= 0.2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libwebp >= 0.2.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_WEBP_CFLAGS=`$PKG_CONFIG --cflags "libwebp >= 0.2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36443,10 +36304,10 @@ pkg_cv_WEBP_LIBS="$WEBP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp >= 0.2.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp >= 0.2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libwebp >= 0.2.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_WEBP_LIBS=`$PKG_CONFIG --libs "libwebp >= 0.2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36460,8 +36321,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -36487,10 +36348,10 @@ and WEBP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -36504,8 +36365,8 @@ else WEBP_CFLAGS=$pkg_cv_WEBP_CFLAGS WEBP_LIBS=$pkg_cv_WEBP_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -36664,10 +36525,10 @@ done -printf "%s\n" "#define HAVE_LIBWEBP 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBWEBP 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_WEBP 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_WEBP 1" >>confdefs.h ;; esac @@ -36681,17 +36542,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libjpeg" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libjpeg" >&5 printf %s "checking for libjpeg... " >&6; } if test -n "$JPEG_CFLAGS"; then pkg_cv_JPEG_CFLAGS="$JPEG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 ($PKG_CONFIG --exists --print-errors "libjpeg") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_JPEG_CFLAGS=`$PKG_CONFIG --cflags "libjpeg" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36705,10 +36566,10 @@ pkg_cv_JPEG_LIBS="$JPEG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 ($PKG_CONFIG --exists --print-errors "libjpeg") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_JPEG_LIBS=`$PKG_CONFIG --libs "libjpeg" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36722,8 +36583,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -36749,10 +36610,10 @@ and JPEG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -36766,8 +36627,8 @@ else JPEG_CFLAGS=$pkg_cv_JPEG_CFLAGS JPEG_LIBS=$pkg_cv_JPEG_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -36926,10 +36787,10 @@ done -printf "%s\n" "#define HAVE_LIBJPEG 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBJPEG 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_JPG 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_JPG 1" >>confdefs.h ;; esac @@ -36943,17 +36804,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xpm" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for xpm" >&5 printf %s "checking for xpm... " >&6; } if test -n "$XPM_CFLAGS"; then pkg_cv_XPM_CFLAGS="$XPM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xpm\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xpm\""; } >&5 ($PKG_CONFIG --exists --print-errors "xpm") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XPM_CFLAGS=`$PKG_CONFIG --cflags "xpm" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36967,10 +36828,10 @@ pkg_cv_XPM_LIBS="$XPM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xpm\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xpm\""; } >&5 ($PKG_CONFIG --exists --print-errors "xpm") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XPM_LIBS=`$PKG_CONFIG --libs "xpm" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -36984,8 +36845,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -37011,10 +36872,10 @@ and XPM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -37028,8 +36889,8 @@ else XPM_CFLAGS=$pkg_cv_XPM_CFLAGS XPM_LIBS=$pkg_cv_XPM_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -37188,10 +37049,10 @@ done -printf "%s\n" "#define HAVE_XPM 1" >>confdefs.h +printf '%s\n' "#define HAVE_XPM 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_XPM 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_XPM 1" >>confdefs.h ;; esac @@ -37205,17 +37066,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5 printf %s "checking for freetype2... " >&6; } if test -n "$FREETYPE2_CFLAGS"; then pkg_cv_FREETYPE2_CFLAGS="$FREETYPE2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FREETYPE2_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -37229,10 +37090,10 @@ pkg_cv_FREETYPE2_LIBS="$FREETYPE2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FREETYPE2_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -37246,8 +37107,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -37273,10 +37134,10 @@ and FREETYPE2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -37290,8 +37151,8 @@ else FREETYPE2_CFLAGS=$pkg_cv_FREETYPE2_CFLAGS FREETYPE2_LIBS=$pkg_cv_FREETYPE2_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -37450,10 +37311,10 @@ done -printf "%s\n" "#define HAVE_LIBFREETYPE 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBFREETYPE 1" >>confdefs.h -printf "%s\n" "#define HAVE_GD_FREETYPE 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_FREETYPE 1" >>confdefs.h ;; esac @@ -37464,10 +37325,10 @@ then : -printf "%s\n" "#define USE_GD_JISX0208 1" >>confdefs.h +printf '%s\n' "#define USE_GD_JISX0208 1" >>confdefs.h -printf "%s\n" "#define JISX0208 1" >>confdefs.h +printf '%s\n' "#define JISX0208 1" >>confdefs.h fi @@ -37608,7 +37469,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_GD 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_GD 1" >>confdefs.h fi fi @@ -37747,7 +37608,7 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build works" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build works" >&5 printf %s "checking whether build works... " >&6; } if test ${php_cv_lib_gd_works+y} then : @@ -37780,14 +37641,14 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_works" >&5 -printf "%s\n" "$php_cv_lib_gd_works" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_works" >&5 +printf '%s\n' "$php_cv_lib_gd_works" >&6; } if test "x$php_cv_lib_gd_works" = xyes then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "GD library build test failed. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -37796,17 +37657,17 @@ extra_sources="gd_compat.c" pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdlib >= 2.1.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdlib >= 2.1.0" >&5 printf %s "checking for gdlib >= 2.1.0... " >&6; } if test -n "$GDLIB_CFLAGS"; then pkg_cv_GDLIB_CFLAGS="$GDLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdlib >= 2.1.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdlib >= 2.1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gdlib >= 2.1.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GDLIB_CFLAGS=`$PKG_CONFIG --cflags "gdlib >= 2.1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -37820,10 +37681,10 @@ pkg_cv_GDLIB_LIBS="$GDLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdlib >= 2.1.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdlib >= 2.1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gdlib >= 2.1.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GDLIB_LIBS=`$PKG_CONFIG --libs "gdlib >= 2.1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -37837,8 +37698,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -37864,10 +37725,10 @@ and GDLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -37881,8 +37742,8 @@ else GDLIB_CFLAGS=$pkg_cv_GDLIB_CFLAGS GDLIB_LIBS=$pkg_cv_GDLIB_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -38041,7 +37902,7 @@ done -printf "%s\n" "#define HAVE_LIBGD 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBGD 1" >>confdefs.h @@ -38055,7 +37916,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromPng in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromPng in libgd" >&5 printf %s "checking for working gdImageCreateFromPng in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromPng+y} then : @@ -38100,11 +37961,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromPng" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromPng" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromPng" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromPng" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromPng" = xyes then : - printf "%s\n" "#define HAVE_GD_PNG 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_PNG 1" >>confdefs.h fi ac_ext=c @@ -38128,7 +37989,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromAvif in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromAvif in libgd" >&5 printf %s "checking for working gdImageCreateFromAvif in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromAvif+y} then : @@ -38173,11 +38034,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromAvif" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromAvif" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromAvif" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromAvif" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromAvif" = xyes then : - printf "%s\n" "#define HAVE_GD_AVIF 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_AVIF 1" >>confdefs.h fi ac_ext=c @@ -38201,7 +38062,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromWebp in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromWebp in libgd" >&5 printf %s "checking for working gdImageCreateFromWebp in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromWebp+y} then : @@ -38246,11 +38107,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromWebp" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromWebp" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromWebp" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromWebp" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromWebp" = xyes then : - printf "%s\n" "#define HAVE_GD_WEBP 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_WEBP 1" >>confdefs.h fi ac_ext=c @@ -38274,7 +38135,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromJpeg in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromJpeg in libgd" >&5 printf %s "checking for working gdImageCreateFromJpeg in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromJpeg+y} then : @@ -38319,11 +38180,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromJpeg" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromJpeg" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromJpeg" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromJpeg" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromJpeg" = xyes then : - printf "%s\n" "#define HAVE_GD_JPG 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_JPG 1" >>confdefs.h fi ac_ext=c @@ -38347,7 +38208,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromXpm in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromXpm in libgd" >&5 printf %s "checking for working gdImageCreateFromXpm in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromXpm+y} then : @@ -38392,11 +38253,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromXpm" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromXpm" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromXpm" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromXpm" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromXpm" = xyes then : - printf "%s\n" "#define HAVE_GD_XPM 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_XPM 1" >>confdefs.h fi ac_ext=c @@ -38420,7 +38281,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromBmp in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromBmp in libgd" >&5 printf %s "checking for working gdImageCreateFromBmp in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromBmp+y} then : @@ -38465,11 +38326,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromBmp" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromBmp" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromBmp" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromBmp" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromBmp" = xyes then : - printf "%s\n" "#define HAVE_GD_BMP 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_BMP 1" >>confdefs.h fi ac_ext=c @@ -38493,7 +38354,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromTga in libgd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working gdImageCreateFromTga in libgd" >&5 printf %s "checking for working gdImageCreateFromTga in libgd... " >&6; } if test ${php_cv_lib_gd_gdImageCreateFromTga+y} then : @@ -38538,11 +38399,11 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromTga" >&5 -printf "%s\n" "$php_cv_lib_gd_gdImageCreateFromTga" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_gd_gdImageCreateFromTga" >&5 +printf '%s\n' "$php_cv_lib_gd_gdImageCreateFromTga" >&6; } if test "x$php_cv_lib_gd_gdImageCreateFromTga" = xyes then : - printf "%s\n" "#define HAVE_GD_TGA 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_TGA 1" >>confdefs.h fi ac_ext=c @@ -38673,7 +38534,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdFontCacheShutdown in -lgd" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdFontCacheShutdown in -lgd" >&5 printf %s "checking for gdFontCacheShutdown in -lgd... " >&6; } if test ${ac_cv_lib_gd_gdFontCacheShutdown+y} then : @@ -38714,14 +38575,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdFontCacheShutdown" >&5 -printf "%s\n" "$ac_cv_lib_gd_gdFontCacheShutdown" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdFontCacheShutdown" >&5 +printf '%s\n' "$ac_cv_lib_gd_gdFontCacheShutdown" >&6; } if test "x$ac_cv_lib_gd_gdFontCacheShutdown" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared - printf "%s\n" "#define HAVE_GD_FREETYPE 1" >>confdefs.h + printf '%s\n' "#define HAVE_GD_FREETYPE 1" >>confdefs.h else case e in #( @@ -38852,7 +38713,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdVersionString in -lgd" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdVersionString in -lgd" >&5 printf %s "checking for gdVersionString in -lgd... " >&6; } if test ${ac_cv_lib_gd_gdVersionString+y} then : @@ -38893,15 +38754,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdVersionString" >&5 -printf "%s\n" "$ac_cv_lib_gd_gdVersionString" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdVersionString" >&5 +printf '%s\n' "$ac_cv_lib_gd_gdVersionString" >&6; } if test "x$ac_cv_lib_gd_gdVersionString" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_GD_LIBVERSION 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_LIBVERSION 1" >>confdefs.h else case e in #( @@ -39032,7 +38893,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdImageGetInterpolationMethod in -lgd" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdImageGetInterpolationMethod in -lgd" >&5 printf %s "checking for gdImageGetInterpolationMethod in -lgd... " >&6; } if test ${ac_cv_lib_gd_gdImageGetInterpolationMethod+y} then : @@ -39073,15 +38934,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdImageGetInterpolationMethod" >&5 -printf "%s\n" "$ac_cv_lib_gd_gdImageGetInterpolationMethod" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdImageGetInterpolationMethod" >&5 +printf '%s\n' "$ac_cv_lib_gd_gdImageGetInterpolationMethod" >&6; } if test "x$ac_cv_lib_gd_gdImageGetInterpolationMethod" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_GD_GET_INTERPOLATION 1" >>confdefs.h +printf '%s\n' "#define HAVE_GD_GET_INTERPOLATION 1" >>confdefs.h else case e in #( @@ -39231,7 +39092,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_GD 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_GD 1" >>confdefs.h fi fi @@ -39484,7 +39345,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdImageCreate in -lgd" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gdImageCreate in -lgd" >&5 printf %s "checking for gdImageCreate in -lgd... " >&6; } if test ${ac_cv_lib_gd_gdImageCreate+y} then : @@ -39525,8 +39386,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdImageCreate" >&5 -printf "%s\n" "$ac_cv_lib_gd_gdImageCreate" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gd_gdImageCreate" >&5 +printf '%s\n' "$ac_cv_lib_gd_gdImageCreate" >&6; } if test "x$ac_cv_lib_gd_gdImageCreate" = xyes then : @@ -39539,8 +39400,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_gd_gdImageCreate - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "GD library build test failed. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -39560,7 +39421,7 @@ php_with_gettext=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext support" >&5 printf %s "checking for GNU gettext support... " >&6; } # Check whether --with-gettext was given. @@ -39598,8 +39459,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -39622,7 +39483,7 @@ O_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -L$GETTEXT_LIBDIR" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 printf %s "checking for bindtextdomain in -lintl... " >&6; } if test ${ac_cv_lib_intl_bindtextdomain+y} then : @@ -39663,8 +39524,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 -printf "%s\n" "$ac_cv_lib_intl_bindtextdomain" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 +printf '%s\n' "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes then : @@ -39672,7 +39533,7 @@ GETTEXT_CHECK_IN_LIB=intl else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lc" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lc" >&5 printf %s "checking for bindtextdomain in -lc... " >&6; } if test ${ac_cv_lib_c_bindtextdomain+y} then : @@ -39713,16 +39574,16 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_bindtextdomain" >&5 -printf "%s\n" "$ac_cv_lib_c_bindtextdomain" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_bindtextdomain" >&5 +printf '%s\n' "$ac_cv_lib_c_bindtextdomain" >&6; } if test "x$ac_cv_lib_c_bindtextdomain" = xyes then : GETTEXT_LIBS= GETTEXT_CHECK_IN_LIB=c - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: symlinking en_US.UTF-8 messages to en_US in case you are on musl" >&5 -printf "%s\n" "$as_me: symlinking en_US.UTF-8 messages to en_US in case you are on musl" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: symlinking en_US.UTF-8 messages to en_US in case you are on musl" >&5 +printf '%s\n' "$as_me: symlinking en_US.UTF-8 messages to en_US in case you are on musl" >&6;} _linkdest="${srcdir%/}"/ext/gettext/tests/locale/en_US if test ! -e "${_linkdest}" then : @@ -39733,8 +39594,8 @@ else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Unable to find required intl library for gettext. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -39745,7 +39606,7 @@ -printf "%s\n" "#define HAVE_LIBINTL 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBINTL 1" >>confdefs.h ext_builddir=ext/gettext @@ -39882,7 +39743,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_GETTEXT 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_GETTEXT 1" >>confdefs.h fi fi @@ -40039,8 +39900,8 @@ done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_ngettext" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngettext in -l$GETTEXT_CHECK_IN_LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_ngettext" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ngettext in -l$GETTEXT_CHECK_IN_LIB" >&5 printf %s "checking for ngettext in -l$GETTEXT_CHECK_IN_LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -40082,17 +39943,17 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : -printf "%s\n" "#define HAVE_NGETTEXT 1" >>confdefs.h +printf '%s\n' "#define HAVE_NGETTEXT 1" >>confdefs.h fi - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_dngettext" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dngettext in -l$GETTEXT_CHECK_IN_LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_dngettext" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dngettext in -l$GETTEXT_CHECK_IN_LIB" >&5 printf %s "checking for dngettext in -l$GETTEXT_CHECK_IN_LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -40134,17 +39995,17 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : -printf "%s\n" "#define HAVE_DNGETTEXT 1" >>confdefs.h +printf '%s\n' "#define HAVE_DNGETTEXT 1" >>confdefs.h fi - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_dcngettext" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dcngettext in -l$GETTEXT_CHECK_IN_LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_dcngettext" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dcngettext in -l$GETTEXT_CHECK_IN_LIB" >&5 printf %s "checking for dcngettext in -l$GETTEXT_CHECK_IN_LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -40186,17 +40047,17 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : -printf "%s\n" "#define HAVE_DCNGETTEXT 1" >>confdefs.h +printf '%s\n' "#define HAVE_DCNGETTEXT 1" >>confdefs.h fi - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_bind_textdomain_codeset" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bind_textdomain_codeset in -l$GETTEXT_CHECK_IN_LIB" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$GETTEXT_CHECK_IN_LIB""_bind_textdomain_codeset" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for bind_textdomain_codeset in -l$GETTEXT_CHECK_IN_LIB" >&5 printf %s "checking for bind_textdomain_codeset in -l$GETTEXT_CHECK_IN_LIB... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -40238,12 +40099,12 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : -printf "%s\n" "#define HAVE_BIND_TEXTDOMAIN_CODESET 1" >>confdefs.h +printf '%s\n' "#define HAVE_BIND_TEXTDOMAIN_CODESET 1" >>confdefs.h fi @@ -40368,7 +40229,7 @@ php_with_gmp=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU MP support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU MP support" >&5 printf %s "checking for GNU MP support... " >&6; } # Check whether --with-gmp was given. @@ -40406,8 +40267,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -40418,17 +40279,17 @@ then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gmp >= 4.2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gmp >= 4.2" >&5 printf %s "checking for gmp >= 4.2... " >&6; } if test -n "$GMP_CFLAGS"; then pkg_cv_GMP_CFLAGS="$GMP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmp >= 4.2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmp >= 4.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "gmp >= 4.2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GMP_CFLAGS=`$PKG_CONFIG --cflags "gmp >= 4.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -40442,10 +40303,10 @@ pkg_cv_GMP_LIBS="$GMP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmp >= 4.2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmp >= 4.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "gmp >= 4.2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GMP_LIBS=`$PKG_CONFIG --libs "gmp >= 4.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -40459,8 +40320,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -40477,14 +40338,14 @@ : elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } : else GMP_CFLAGS=$pkg_cv_GMP_CFLAGS GMP_LIBS=$pkg_cv_GMP_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } gmp_found=yes fi fi @@ -40524,8 +40385,8 @@ if test "x$gmp_check" = xno then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? " The required GNU MP library version 4.2 or greater not found. @@ -40841,7 +40702,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_GMP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_GMP 1" >>confdefs.h fi fi @@ -40963,7 +40824,7 @@ PHP_VAR_SUBST="$PHP_VAR_SUBST GMP_SHARED_LIBADD" -printf "%s\n" "#define HAVE_GMP 1" >>confdefs.h +printf '%s\n' "#define HAVE_GMP 1" >>confdefs.h fi @@ -40973,7 +40834,7 @@ php_with_mhash=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mhash support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mhash support" >&5 printf %s "checking for mhash support... " >&6; } # Check whether --with-mhash was given. @@ -41011,8 +40872,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -41022,10 +40883,10 @@ else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The --with-mhash option and mhash* functions are deprecated as of PHP 8.1.0" >&5 -printf "%s\n" "$as_me: WARNING: The --with-mhash option and mhash* functions are deprecated as of PHP 8.1.0" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The --with-mhash option and mhash* functions are deprecated as of PHP 8.1.0" >&5 +printf '%s\n' "$as_me: WARNING: The --with-mhash option and mhash* functions are deprecated as of PHP 8.1.0" >&2;} -printf "%s\n" "#define PHP_MHASH_BC 1" >>confdefs.h +printf '%s\n' "#define PHP_MHASH_BC 1" >>confdefs.h ;; esac @@ -41036,10 +40897,10 @@ EXT_HASH_SHA3_SOURCES= -printf "%s\n" "#define HAVE_SLOW_HASH3 1" >>confdefs.h +printf '%s\n' "#define HAVE_SLOW_HASH3 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Using SHA3 slow implementation on bigendian" >&5 -printf "%s\n" "$as_me: WARNING: Using SHA3 slow implementation on bigendian" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: Using SHA3 slow implementation on bigendian" >&5 +printf '%s\n' "$as_me: WARNING: Using SHA3 slow implementation on bigendian" >&2;} SHA3_DIR= else case e in #( @@ -41048,7 +40909,7 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : @@ -41058,37 +40919,30 @@ then : else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi ;; + e) ac_cv_sizeof_long=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf '%s\n' "$ac_cv_sizeof_long" >&6; } -printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h +printf '%s\n' "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we're at 64-bit platform" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if we're at 64-bit platform" >&5 printf %s "checking if we're at 64-bit platform... " >&6; } if test "$ac_cv_sizeof_long" -eq 4 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } SHA3_DIR="sha3/generic32lc" SHA3_OPT_SRC="$SHA3_DIR/KeccakP-1600-inplace32BI.c" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-implicit-fallthrough" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-implicit-fallthrough" >&5 printf %s "checking whether the C compiler accepts -Wno-implicit-fallthrough... " >&6; } if test ${ax_cv_check_cflags__Werror__Wno_implicit_fallthrough+y} then : @@ -41119,8 +40973,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" >&6; } if test "x$ax_cv_check_cflags__Werror__Wno_implicit_fallthrough" = xyes then : PHP_HASH_CFLAGS="$PHP_HASH_CFLAGS -Wno-implicit-fallthrough" @@ -41132,8 +40986,8 @@ else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } SHA3_DIR="sha3/generic64lc" SHA3_OPT_SRC="$SHA3_DIR/KeccakP-1600-opt64.c" ;; @@ -41280,7 +41134,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_HASH 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_HASH 1" >>confdefs.h fi fi @@ -41432,7 +41286,7 @@ php_with_iconv=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv support" >&5 printf %s "checking for iconv support... " >&6; } # Check whether --with-iconv was given. @@ -41470,8 +41324,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -41496,7 +41350,7 @@ if test "x$ac_cv_func_libiconv" = xyes then : - printf "%s\n" "#define HAVE_LIBICONV 1" >>confdefs.h + printf '%s\n' "#define HAVE_LIBICONV 1" >>confdefs.h found_iconv=yes @@ -41653,8 +41507,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$iconv_lib_name""_libiconv" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libiconv in -l$iconv_lib_name" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$iconv_lib_name""_libiconv" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libiconv in -l$iconv_lib_name" >&5 printf %s "checking for libiconv in -l$iconv_lib_name... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -41696,8 +41550,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -41705,10 +41559,10 @@ ext_shared=$save_ext_shared found_iconv=yes - printf "%s\n" "#define HAVE_LIBICONV 1" >>confdefs.h + printf '%s\n' "#define HAVE_LIBICONV 1" >>confdefs.h -printf "%s\n" "#define ICONV_ALIASED_LIBICONV 1" >>confdefs.h +printf '%s\n' "#define ICONV_ALIASED_LIBICONV 1" >>confdefs.h @@ -41835,8 +41689,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$iconv_lib_name""_iconv" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv in -l$iconv_lib_name" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$iconv_lib_name""_iconv" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv in -l$iconv_lib_name" >&5 printf %s "checking for iconv in -l$iconv_lib_name... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -41878,8 +41732,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -42048,8 +41902,8 @@ fi -else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +else { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The iconv not found. See 'config.log' for more details" "$LINENO" 5; } fi @@ -42060,7 +41914,7 @@ LIBS="$LIBS $ICONV_SHARED_LIBADD" CFLAGS="$INCLUDES $CFLAGS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv implementation" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv implementation" >&5 printf %s "checking for iconv implementation... " >&6; } if test ${php_cv_iconv_implementation+y} then : @@ -42162,8 +42016,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_implementation" >&5 -printf "%s\n" "$php_cv_iconv_implementation" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_implementation" >&5 +printf '%s\n' "$php_cv_iconv_implementation" >&6; } @@ -42171,34 +42025,34 @@ glibc) : -printf "%s\n" "#define HAVE_GLIBC_ICONV 1" >>confdefs.h +printf '%s\n' "#define HAVE_GLIBC_ICONV 1" >>confdefs.h - printf "%s\n" "#define PHP_ICONV_IMPL \"glibc\"" >>confdefs.h + printf '%s\n' "#define PHP_ICONV_IMPL \"glibc\"" >>confdefs.h ;; #( "GNU libiconv") : - printf "%s\n" "#define PHP_ICONV_IMPL \"libiconv\"" >>confdefs.h + printf '%s\n' "#define PHP_ICONV_IMPL \"libiconv\"" >>confdefs.h - printf "%s\n" "#define HAVE_LIBICONV 1" >>confdefs.h + printf '%s\n' "#define HAVE_LIBICONV 1" >>confdefs.h ;; #( BSD) : - printf "%s\n" "#define PHP_ICONV_IMPL \"BSD iconv\"" >>confdefs.h + printf '%s\n' "#define PHP_ICONV_IMPL \"BSD iconv\"" >>confdefs.h ;; #( IBM) : -printf "%s\n" "#define HAVE_IBM_ICONV 1" >>confdefs.h +printf '%s\n' "#define HAVE_IBM_ICONV 1" >>confdefs.h - printf "%s\n" "#define PHP_ICONV_IMPL \"IBM iconv\"" >>confdefs.h + printf '%s\n' "#define PHP_ICONV_IMPL \"IBM iconv\"" >>confdefs.h ;; #( *) : ;; esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if iconv supports errno" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if iconv supports errno" >&5 printf %s "checking if iconv supports errno... " >&6; } if test ${php_cv_iconv_errno+y} then : @@ -42243,20 +42097,20 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_errno" >&5 -printf "%s\n" "$php_cv_iconv_errno" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_errno" >&5 +printf '%s\n' "$php_cv_iconv_errno" >&6; } if test "x$php_cv_iconv_errno" = xyes then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The iconv check failed, 'errno' is missing. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if iconv input parameter is const (non-standard)" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if iconv input parameter is const (non-standard)" >&5 printf %s "checking if iconv input parameter is const (non-standard)... " >&6; } if test ${php_cv_iconv_const+y} then : @@ -42280,14 +42134,14 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_const" >&5 -printf "%s\n" "$php_cv_iconv_const" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_const" >&5 +printf '%s\n' "$php_cv_iconv_const" >&6; } if test "x$php_cv_iconv_const" = xnon-const then : php_cv_iconv_const= fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if iconv supports //IGNORE" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if iconv supports //IGNORE" >&5 printf %s "checking if iconv supports //IGNORE... " >&6; } if test ${php_cv_iconv_ignore+y} then : @@ -42334,12 +42188,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_ignore" >&5 -printf "%s\n" "$php_cv_iconv_ignore" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_iconv_ignore" >&5 +printf '%s\n' "$php_cv_iconv_ignore" >&6; } if test "x$php_cv_iconv_ignore" = xno then : -printf "%s\n" "#define ICONV_BROKEN_IGNORE 1" >>confdefs.h +printf '%s\n' "#define ICONV_BROKEN_IGNORE 1" >>confdefs.h fi @@ -42347,7 +42201,7 @@ CFLAGS=$save_CFLAGS -printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h +printf '%s\n' "#define HAVE_ICONV 1" >>confdefs.h @@ -42485,7 +42339,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_ICONV 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_ICONV 1" >>confdefs.h fi fi @@ -42631,7 +42485,7 @@ php_enable_intl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable internationalization support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable internationalization support" >&5 printf %s "checking whether to enable internationalization support... " >&6; } # Check whether --enable-intl was given. if test ${enable_intl+y} @@ -42668,8 +42522,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -42678,17 +42532,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icu-uc >= 50.1 icu-io icu-i18n" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for icu-uc >= 50.1 icu-io icu-i18n" >&5 printf %s "checking for icu-uc >= 50.1 icu-io icu-i18n... " >&6; } if test -n "$ICU_CFLAGS"; then pkg_cv_ICU_CFLAGS="$ICU_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc >= 50.1 icu-io icu-i18n\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc >= 50.1 icu-io icu-i18n\""; } >&5 ($PKG_CONFIG --exists --print-errors "icu-uc >= 50.1 icu-io icu-i18n") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ICU_CFLAGS=`$PKG_CONFIG --cflags "icu-uc >= 50.1 icu-io icu-i18n" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -42702,10 +42556,10 @@ pkg_cv_ICU_LIBS="$ICU_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc >= 50.1 icu-io icu-i18n\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc >= 50.1 icu-io icu-i18n\""; } >&5 ($PKG_CONFIG --exists --print-errors "icu-uc >= 50.1 icu-io icu-i18n") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ICU_LIBS=`$PKG_CONFIG --libs "icu-uc >= 50.1 icu-io icu-i18n" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -42719,8 +42573,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -42746,10 +42600,10 @@ and ICU_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -42763,8 +42617,8 @@ else ICU_CFLAGS=$pkg_cv_ICU_CFLAGS ICU_LIBS=$pkg_cv_ICU_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -43071,7 +42925,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_INTL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_INTL 1" >>confdefs.h fi fi @@ -43230,7 +43084,7 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : @@ -43251,7 +43105,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -43263,11 +43117,11 @@ fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf '%s\n' "$CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -43280,7 +43134,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : @@ -43301,7 +43155,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -43313,11 +43167,11 @@ fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf '%s\n' "$ac_ct_CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -43329,8 +43183,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -43340,7 +43194,7 @@ fi fi # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -43350,7 +43204,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -43360,11 +43214,11 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : @@ -43396,8 +43250,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then @@ -43407,7 +43261,7 @@ fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : @@ -43475,8 +43329,8 @@ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf '%s\n' "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -43492,106 +43346,6 @@ CXXFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 ;; -esac -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 ;; -esac -fi -fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -43603,7 +43357,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} @@ -43670,8 +43424,8 @@ else ac_cv_prog_CXXCPP=$CXXCPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -printf "%s\n" "$CXXCPP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +printf '%s\n' "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -43719,8 +43473,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -43747,14 +43501,14 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if intl requires -std=gnu++17" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if intl requires -std=gnu++17" >&5 printf %s "checking if intl requires -std=gnu++17... " >&6; } if $PKG_CONFIG icu-uc --atleast-version=74 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ax_cxx_compile_alternatives="17 1z" ax_cxx_compile_cxx17_required=true ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -43764,8 +43518,8 @@ for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do - cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx17_$switch" | sed "$as_sed_sh"` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5 + cachevar=`printf '%s\n' "ax_cv_cxx_compile_cxx17_$switch" | sed "$as_sed_sh"` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5 printf %s "checking whether $CXX supports C++17 features with $switch... " >&6; } if eval test \${$cachevar+y} then : @@ -44574,8 +44328,8 @@ esac fi eval ac_res=\$$cachevar - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then eval PHP_INTL_STDCXX="$switch" ac_success=yes @@ -44599,16 +44353,16 @@ fi fi if test x$ac_success = xno; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++17 support was found" >&5 -printf "%s\n" "$as_me: No compiler with C++17 support was found" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: No compiler with C++17 support was found" >&5 +printf '%s\n' "$as_me: No compiler with C++17 support was found" >&6;} fi else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=true ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -44618,8 +44372,8 @@ for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do - cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 + cachevar=`printf '%s\n' "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval test \${$cachevar+y} then : @@ -44930,8 +44684,8 @@ esac fi eval ac_res=\$$cachevar - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then eval PHP_INTL_STDCXX="$switch" ac_success=yes @@ -44955,8 +44709,8 @@ fi fi if test x$ac_success = xno; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 -printf "%s\n" "$as_me: No compiler with C++11 support was found" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 +printf '%s\n' "$as_me: No compiler with C++11 support was found" >&6;} fi @@ -45229,7 +44983,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_JSON 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_JSON 1" >>confdefs.h fi fi @@ -45378,7 +45132,7 @@ php_with_ldap=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LDAP support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for LDAP support" >&5 printf %s "checking for LDAP support... " >&6; } # Check whether --with-ldap was given. @@ -45416,8 +45170,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -45425,7 +45179,7 @@ php_with_ldap_sasl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with LDAP Cyrus SASL support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with LDAP Cyrus SASL support" >&5 printf %s "checking whether to build with LDAP Cyrus SASL support... " >&6; } # Check whether --with-ldap-sasl was given. @@ -45442,8 +45196,8 @@ ext_output=$PHP_LDAP_SASL -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -45584,7 +45338,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_LDAP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_LDAP 1" >>confdefs.h fi fi @@ -45722,7 +45476,7 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : @@ -45732,40 +45486,33 @@ then : else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi ;; + e) ac_cv_sizeof_long=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf '%s\n' "$ac_cv_sizeof_long" >&6; } -printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h +printf '%s\n' "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we're at 64-bit platform" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if we're at 64-bit platform" >&5 printf %s "checking if we're at 64-bit platform... " >&6; } if test "$ac_cv_sizeof_long" -eq 4 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } PHP_OCI8_IC_LIBDIR_SUFFIX="" else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } PHP_OCI8_IC_LIBDIR_SUFFIX=64 ;; esac @@ -45802,7 +45549,7 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : @@ -45812,40 +45559,33 @@ then : else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi ;; + e) ac_cv_sizeof_long=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf '%s\n' "$ac_cv_sizeof_long" >&6; } -printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h +printf '%s\n' "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we're at 64-bit platform" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if we're at 64-bit platform" >&5 printf %s "checking if we're at 64-bit platform... " >&6; } if test "$ac_cv_sizeof_long" -eq 4 then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } PHP_OCI8_IC_LIBDIR_SUFFIX="" else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } PHP_OCI8_IC_LIBDIR_SUFFIX=64 ;; esac @@ -46301,7 +46041,7 @@ fi - printf "%s\n" "#define HAVE_ORALDAP 1" >>confdefs.h + printf '%s\n' "#define HAVE_ORALDAP 1" >>confdefs.h elif test -f $LDAP_LIBDIR/libclntsh.$SHLIB_SUFFIX_NAME.11.1 || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libclntsh.$SHLIB_SUFFIX_NAME.11.1; then @@ -46410,7 +46150,7 @@ fi - printf "%s\n" "#define HAVE_ORALDAP 1" >>confdefs.h + printf '%s\n' "#define HAVE_ORALDAP 1" >>confdefs.h elif test -f $LDAP_LIBDIR/libclntsh.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/libclntsh.$SHLIB_SUFFIX_NAME; then @@ -46519,7 +46259,7 @@ fi - printf "%s\n" "#define HAVE_ORALDAP 1" >>confdefs.h + printf '%s\n' "#define HAVE_ORALDAP 1" >>confdefs.h else @@ -46564,7 +46304,7 @@ PHP_VAR_SUBST="$PHP_VAR_SUBST LDAP_SHARED_LIBADD" -printf "%s\n" "#define HAVE_LDAP 1" >>confdefs.h +printf '%s\n' "#define HAVE_LDAP 1" >>confdefs.h _SAVE_CPPFLAGS=$CPPFLAGS @@ -46572,7 +46312,7 @@ CPPFLAGS="$CPPFLAGS -I$LDAP_INCDIR" LIBS="$LIBS $LDAP_SHARED_LIBADD" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 3 arg ldap_set_rebind_proc" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 3 arg ldap_set_rebind_proc" >&5 printf %s "checking for 3 arg ldap_set_rebind_proc... " >&6; } if test ${php_cv_have_3arg_setrebindproc+y} then : @@ -46599,73 +46339,73 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_3arg_setrebindproc" >&5 -printf "%s\n" "$php_cv_have_3arg_setrebindproc" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_3arg_setrebindproc" >&5 +printf '%s\n' "$php_cv_have_3arg_setrebindproc" >&6; } if test "x$php_cv_have_3arg_setrebindproc" = xyes then : -printf "%s\n" "#define HAVE_3ARG_SETREBINDPROC 1" >>confdefs.h +printf '%s\n' "#define HAVE_3ARG_SETREBINDPROC 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_control_find" "ac_cv_func_ldap_control_find" if test "x$ac_cv_func_ldap_control_find" = xyes then : - printf "%s\n" "#define HAVE_LDAP_CONTROL_FIND 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_CONTROL_FIND 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_extended_operation" "ac_cv_func_ldap_extended_operation" if test "x$ac_cv_func_ldap_extended_operation" = xyes then : - printf "%s\n" "#define HAVE_LDAP_EXTENDED_OPERATION 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_EXTENDED_OPERATION 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_extended_operation_s" "ac_cv_func_ldap_extended_operation_s" if test "x$ac_cv_func_ldap_extended_operation_s" = xyes then : - printf "%s\n" "#define HAVE_LDAP_EXTENDED_OPERATION_S 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_EXTENDED_OPERATION_S 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_parse_extended_result" "ac_cv_func_ldap_parse_extended_result" if test "x$ac_cv_func_ldap_parse_extended_result" = xyes then : - printf "%s\n" "#define HAVE_LDAP_PARSE_EXTENDED_RESULT 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_PARSE_EXTENDED_RESULT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_parse_reference" "ac_cv_func_ldap_parse_reference" if test "x$ac_cv_func_ldap_parse_reference" = xyes then : - printf "%s\n" "#define HAVE_LDAP_PARSE_REFERENCE 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_PARSE_REFERENCE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_parse_result" "ac_cv_func_ldap_parse_result" if test "x$ac_cv_func_ldap_parse_result" = xyes then : - printf "%s\n" "#define HAVE_LDAP_PARSE_RESULT 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_PARSE_RESULT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_passwd" "ac_cv_func_ldap_passwd" if test "x$ac_cv_func_ldap_passwd" = xyes then : - printf "%s\n" "#define HAVE_LDAP_PASSWD 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_PASSWD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_refresh_s" "ac_cv_func_ldap_refresh_s" if test "x$ac_cv_func_ldap_refresh_s" = xyes then : - printf "%s\n" "#define HAVE_LDAP_REFRESH_S 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_REFRESH_S 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_start_tls_s" "ac_cv_func_ldap_start_tls_s" if test "x$ac_cv_func_ldap_start_tls_s" = xyes then : - printf "%s\n" "#define HAVE_LDAP_START_TLS_S 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_START_TLS_S 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_whoami_s" "ac_cv_func_ldap_whoami_s" if test "x$ac_cv_func_ldap_whoami_s" = xyes then : - printf "%s\n" "#define HAVE_LDAP_WHOAMI_S 1" >>confdefs.h + printf '%s\n' "#define HAVE_LDAP_WHOAMI_S 1" >>confdefs.h fi @@ -46677,17 +46417,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsasl2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libsasl2" >&5 printf %s "checking for libsasl2... " >&6; } if test -n "$SASL_CFLAGS"; then pkg_cv_SASL_CFLAGS="$SASL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsasl2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsasl2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsasl2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SASL_CFLAGS=`$PKG_CONFIG --cflags "libsasl2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -46701,10 +46441,10 @@ pkg_cv_SASL_LIBS="$SASL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsasl2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsasl2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsasl2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SASL_LIBS=`$PKG_CONFIG --libs "libsasl2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -46718,8 +46458,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -46745,10 +46485,10 @@ and SASL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -46762,8 +46502,8 @@ else SASL_CFLAGS=$pkg_cv_SASL_CFLAGS SASL_LIBS=$pkg_cv_SASL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -46922,7 +46662,7 @@ done -printf "%s\n" "#define HAVE_LDAP_SASL 1" >>confdefs.h +printf '%s\n' "#define HAVE_LDAP_SASL 1" >>confdefs.h ;; esac @@ -46971,7 +46711,7 @@ php_enable_mbstring=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable multibyte string support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable multibyte string support" >&5 printf %s "checking whether to enable multibyte string support... " >&6; } # Check whether --enable-mbstring was given. if test ${enable_mbstring+y} @@ -47008,8 +46748,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -47017,7 +46757,7 @@ php_enable_mbregex=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable multibyte regex support (requires oniguruma)" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable multibyte regex support (requires oniguruma)" >&5 printf %s "checking whether to enable multibyte regex support (requires oniguruma)... " >&6; } # Check whether --enable-mbregex was given. if test ${enable_mbregex+y} @@ -47033,15 +46773,15 @@ ext_output=$PHP_MBREGEX -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_MBSTRING" != "no"; then -printf "%s\n" "#define HAVE_MBSTRING 1" >>confdefs.h +printf '%s\n' "#define HAVE_MBSTRING 1" >>confdefs.h @@ -47053,17 +46793,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for oniguruma" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for oniguruma" >&5 printf %s "checking for oniguruma... " >&6; } if test -n "$ONIG_CFLAGS"; then pkg_cv_ONIG_CFLAGS="$ONIG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"oniguruma\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"oniguruma\""; } >&5 ($PKG_CONFIG --exists --print-errors "oniguruma") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ONIG_CFLAGS=`$PKG_CONFIG --cflags "oniguruma" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -47077,10 +46817,10 @@ pkg_cv_ONIG_LIBS="$ONIG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"oniguruma\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"oniguruma\""; } >&5 ($PKG_CONFIG --exists --print-errors "oniguruma") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ONIG_LIBS=`$PKG_CONFIG --libs "oniguruma" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -47094,8 +46834,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -47121,10 +46861,10 @@ and ONIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -47138,8 +46878,8 @@ else ONIG_CFLAGS=$pkg_cv_ONIG_CFLAGS ONIG_LIBS=$pkg_cv_ONIG_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -47298,7 +47038,7 @@ done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if oniguruma has an invalid entry for KOI8 encoding" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if oniguruma has an invalid entry for KOI8 encoding" >&5 printf %s "checking if oniguruma has an invalid entry for KOI8 encoding... " >&6; } if test ${php_cv_lib_onig_invalid_koi8+y} then : @@ -47335,12 +47075,12 @@ CFLAGS=$save_old_CFLAGS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_onig_invalid_koi8" >&5 -printf "%s\n" "$php_cv_lib_onig_invalid_koi8" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_lib_onig_invalid_koi8" >&5 +printf '%s\n' "$php_cv_lib_onig_invalid_koi8" >&6; } if test "x$php_cv_lib_onig_invalid_koi8" = xyes then : -printf "%s\n" "#define PHP_ONIG_BAD_KOI8_ENTRY 1" >>confdefs.h +printf '%s\n' "#define PHP_ONIG_BAD_KOI8_ENTRY 1" >>confdefs.h fi @@ -47352,7 +47092,7 @@ -printf "%s\n" "#define HAVE_MBREGEX 1" >>confdefs.h +printf '%s\n' "#define HAVE_MBREGEX 1" >>confdefs.h @@ -47593,7 +47333,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_MBSTRING 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_MBSTRING 1" >>confdefs.h fi fi @@ -47849,7 +47589,7 @@ php_with_mysqli=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQLi support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for MySQLi support" >&5 printf %s "checking for MySQLi support... " >&6; } # Check whether --with-mysqli was given. @@ -47887,8 +47627,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -47896,7 +47636,7 @@ php_with_mysql_sock=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for specified location of the MySQL Unix socket" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for specified location of the MySQL Unix socket" >&5 printf %s "checking for specified location of the MySQL Unix socket... " >&6; } # Check whether --with-mysql-sock was given. @@ -47913,8 +47653,8 @@ ext_output=$PHP_MYSQL_SOCK -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -47928,7 +47668,7 @@ '--with-mysqli=$PHP_MYSQLI' with '--with-mysqli'." "$LINENO" 5 ;; esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL Unix socket location" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for MySQL Unix socket location" >&5 printf %s "checking for MySQL Unix socket location... " >&6; } case $PHP_MYSQL_SOCK in #( yes) : @@ -47952,28 +47692,28 @@ if ${MYSQL_SOCK:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } else case e in #( e) -printf "%s\n" "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$MYSQL_SOCK\"" >>confdefs.h +printf '%s\n' "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$MYSQL_SOCK\"" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MYSQL_SOCK" >&5 -printf "%s\n" "$MYSQL_SOCK" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MYSQL_SOCK" >&5 +printf '%s\n' "$MYSQL_SOCK" >&6; } ;; esac fi ;; #( no) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; #( + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; #( *) : - printf "%s\n" "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$PHP_MYSQL_SOCK\"" >>confdefs.h + printf '%s\n' "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$PHP_MYSQL_SOCK\"" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP_MYSQL_SOCK" >&5 -printf "%s\n" "$PHP_MYSQL_SOCK" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP_MYSQL_SOCK" >&5 +printf '%s\n' "$PHP_MYSQL_SOCK" >&6; } ;; esac @@ -48112,7 +47852,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_MYSQLI 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_MYSQLI 1" >>confdefs.h fi fi @@ -48350,7 +48090,7 @@ php_with_adabas=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Adabas support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Adabas support" >&5 printf %s "checking for Adabas support... " >&6; } # Check whether --with-adabas was given. @@ -48388,8 +48128,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -48559,7 +48299,7 @@ as_fn_error $? "ODBC header file '$ODBC_INCDIR/sqlext.h' not found!" "$LINENO" 5 fi -printf "%s\n" "#define HAVE_ADABAS 1" >>confdefs.h +printf '%s\n' "#define HAVE_ADABAS 1" >>confdefs.h ;; esac @@ -48573,7 +48313,7 @@ php_with_sapdb=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SAP DB support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SAP DB support" >&5 printf %s "checking for SAP DB support... " >&6; } # Check whether --with-sapdb was given. @@ -48611,8 +48351,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -48709,7 +48449,7 @@ ODBC_TYPE=sapdb -printf "%s\n" "#define HAVE_SAPDB 1" >>confdefs.h +printf '%s\n' "#define HAVE_SAPDB 1" >>confdefs.h ;; esac @@ -48723,7 +48463,7 @@ php_with_solid=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Solid support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Solid support" >&5 printf %s "checking for Solid support... " >&6; } # Check whether --with-solid was given. @@ -48761,8 +48501,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -48782,19 +48522,19 @@ ODBC_TYPE=solid if test -f $ODBC_LIBDIR/soc*35.a; then -printf "%s\n" "#define HAVE_SOLID_35 1" >>confdefs.h +printf '%s\n' "#define HAVE_SOLID_35 1" >>confdefs.h elif test -f $ODBC_LIBDIR/scl*30.a; then -printf "%s\n" "#define HAVE_SOLID_30 1" >>confdefs.h +printf '%s\n' "#define HAVE_SOLID_30 1" >>confdefs.h elif test -f $ODBC_LIBDIR/scl*23.a; then -printf "%s\n" "#define HAVE_SOLID 1" >>confdefs.h +printf '%s\n' "#define HAVE_SOLID 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Solid library file" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking Solid library file" >&5 printf %s "checking Solid library file... " >&6; } ac_solid_uname_r=$(uname -r 2>/dev/null) ac_solid_uname_s=$(uname -s 2>/dev/null) @@ -48808,7 +48548,7 @@ ac_solid_os=lux fi -printf "%s\n" "#define SS_LINUX 1" >>confdefs.h +printf '%s\n' "#define SS_LINUX 1" >>confdefs.h ;; SunOS) @@ -48820,7 +48560,7 @@ ac_solid_os=fbx fi -printf "%s\n" "#define SS_FBX 1" >>confdefs.h +printf '%s\n' "#define SS_FBX 1" >>confdefs.h ;; esac @@ -48850,8 +48590,8 @@ ODBC_LIBS=-l${ac_solid_prefix}${ac_solid_os}${ac_solid_version} fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&5 -printf "%s\n" "$(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&5 +printf '%s\n' "$(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&6; } ;; esac @@ -48865,7 +48605,7 @@ php_with_ibm_db2=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IBM DB2 support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for IBM DB2 support" >&5 printf %s "checking for IBM DB2 support... " >&6; } # Check whether --with-ibm-db2 was given. @@ -48903,8 +48643,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -48944,11 +48684,11 @@ if test "x$ac_cv_func_SQLExecute" = xyes then : -printf "%s\n" "#define HAVE_IBMDB2 1" >>confdefs.h +printf '%s\n' "#define HAVE_IBMDB2 1" >>confdefs.h else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? " ODBC build test failed. You need to source your DB2 environment before running PHP configure: @@ -48971,7 +48711,7 @@ php_with_empress=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Empress support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Empress support" >&5 printf %s "checking for Empress support... " >&6; } # Check whether --with-empress was given. @@ -49009,8 +48749,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49037,17 +48777,17 @@ ODBC_LFLAGS=-L$ODBC_LIBDIR ODBC_TYPE=empress -printf "%s\n" "#define HAVE_EMPRESS 1" >>confdefs.h +printf '%s\n' "#define HAVE_EMPRESS 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Empress library file" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking Empress library file" >&5 printf %s "checking Empress library file... " >&6; } ODBC_LIBS=$(echo $ODBC_LIBDIR/libempodbccl.so | cut -d' ' -f1) if test ! -f $ODBC_LIBS; then ODBC_LIBS=$(echo $ODBC_LIBDIR/libempodbccl.so | cut -d' ' -f1) fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&5 -printf "%s\n" "$(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&5 +printf '%s\n' "$(echo $ODBC_LIBS | $SED -e 's!.*/!!')" >&6; } ;; esac @@ -49061,7 +48801,7 @@ php_with_empress_bcs=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Empress local access support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Empress local access support" >&5 printf %s "checking for Empress local access support... " >&6; } # Check whether --with-empress-bcs was given. @@ -49099,8 +48839,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49143,17 +48883,17 @@ ODBC_LIBS="-lempphpbcs -lms -lmscfg -lbasic -lbasic_os -lnlscstab -lnlsmsgtab -lm -ldl -lcrypt" ODBC_TYPE=empress-bcs -printf "%s\n" "#define HAVE_EMPRESS 1" >>confdefs.h +printf '%s\n' "#define HAVE_EMPRESS 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Empress local access library file" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking Empress local access library file" >&5 printf %s "checking Empress local access library file... " >&6; } ODBCBCS_LIBS=$(echo $ODBC_LIBDIR/libempodbcbcs.a | cut -d' ' -f1) if test ! -f $ODBCBCS_LIBS; then ODBCBCS_LIBS=$(echo $ODBC_LIBDIR/libempodbcbcs.a | cut -d' ' -f1) fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $(echo $ODBCBCS_LIBS | $SED -e 's!.*/!!')" >&5 -printf "%s\n" "$(echo $ODBCBCS_LIBS | $SED -e 's!.*/!!')" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $(echo $ODBCBCS_LIBS | $SED -e 's!.*/!!')" >&5 +printf '%s\n' "$(echo $ODBCBCS_LIBS | $SED -e 's!.*/!!')" >&6; } ;; esac @@ -49167,7 +48907,7 @@ php_with_custom_odbc=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a custom ODBC support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a custom ODBC support" >&5 printf %s "checking for a custom ODBC support... " >&6; } # Check whether --with-custom-odbc was given. @@ -49205,8 +48945,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49227,7 +48967,7 @@ ODBC_LIBS=$CUSTOM_ODBC_LIBS ODBC_TYPE=custom-odbc -printf "%s\n" "#define HAVE_CODBC 1" >>confdefs.h +printf '%s\n' "#define HAVE_CODBC 1" >>confdefs.h ;; esac @@ -49241,7 +48981,7 @@ php_with_iodbc=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with iODBC support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with iODBC support" >&5 printf %s "checking whether to build with iODBC support... " >&6; } # Check whether --with-iodbc was given. @@ -49279,8 +49019,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49292,17 +49032,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libiodbc" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libiodbc" >&5 printf %s "checking for libiodbc... " >&6; } if test -n "$ODBC_CFLAGS"; then pkg_cv_ODBC_CFLAGS="$ODBC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libiodbc\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libiodbc\""; } >&5 ($PKG_CONFIG --exists --print-errors "libiodbc") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ODBC_CFLAGS=`$PKG_CONFIG --cflags "libiodbc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -49316,10 +49056,10 @@ pkg_cv_ODBC_LIBS="$ODBC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libiodbc\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libiodbc\""; } >&5 ($PKG_CONFIG --exists --print-errors "libiodbc") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ODBC_LIBS=`$PKG_CONFIG --libs "libiodbc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -49333,8 +49073,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -49360,10 +49100,10 @@ and ODBC_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -49377,8 +49117,8 @@ else ODBC_CFLAGS=$pkg_cv_ODBC_CFLAGS ODBC_LIBS=$pkg_cv_ODBC_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -49426,7 +49166,7 @@ ODBC_TYPE=iodbc -printf "%s\n" "#define HAVE_IODBC 1" >>confdefs.h +printf '%s\n' "#define HAVE_IODBC 1" >>confdefs.h ;; esac @@ -49440,7 +49180,7 @@ php_with_esoob=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Easysoft ODBC-ODBC Bridge support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Easysoft ODBC-ODBC Bridge support" >&5 printf %s "checking for Easysoft ODBC-ODBC Bridge support... " >&6; } # Check whether --with-esoob was given. @@ -49478,8 +49218,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49500,7 +49240,7 @@ ODBC_LIBS=-lesoobclient ODBC_TYPE=esoob -printf "%s\n" "#define HAVE_ESOOB 1" >>confdefs.h +printf '%s\n' "#define HAVE_ESOOB 1" >>confdefs.h ;; esac @@ -49514,7 +49254,7 @@ php_with_unixodbc=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with unixODBC support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with unixODBC support" >&5 printf %s "checking whether to build with unixODBC support... " >&6; } # Check whether --with-unixODBC was given. @@ -49552,8 +49292,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49568,17 +49308,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for odbc" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for odbc" >&5 printf %s "checking for odbc... " >&6; } if test -n "$ODBC_CFLAGS"; then pkg_cv_ODBC_CFLAGS="$ODBC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"odbc\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"odbc\""; } >&5 ($PKG_CONFIG --exists --print-errors "odbc") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ODBC_CFLAGS=`$PKG_CONFIG --cflags "odbc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -49592,10 +49332,10 @@ pkg_cv_ODBC_LIBS="$ODBC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"odbc\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"odbc\""; } >&5 ($PKG_CONFIG --exists --print-errors "odbc") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ODBC_LIBS=`$PKG_CONFIG --libs "odbc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -49609,8 +49349,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -49636,10 +49376,10 @@ and ODBC_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -49653,8 +49393,8 @@ else ODBC_CFLAGS=$pkg_cv_ODBC_CFLAGS ODBC_LIBS=$pkg_cv_ODBC_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -49712,14 +49452,14 @@ then : as_fn_error $? "ODBC header file '$ODBC_INCDIR/sqlext.h' not found!" "$LINENO" 5 fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using unixODBC in $PHP_UNIXODBC" >&5 -printf "%s\n" "$as_me: Using unixODBC in $PHP_UNIXODBC" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: Using unixODBC in $PHP_UNIXODBC" >&5 +printf '%s\n' "$as_me: Using unixODBC in $PHP_UNIXODBC" >&6;} ;; esac fi ODBC_TYPE=unixODBC -printf "%s\n" "#define HAVE_UNIXODBC 1" >>confdefs.h +printf '%s\n' "#define HAVE_UNIXODBC 1" >>confdefs.h ;; esac @@ -49733,7 +49473,7 @@ php_with_dbmaker=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for DBMaker support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for DBMaker support" >&5 printf %s "checking for DBMaker support... " >&6; } # Check whether --with-dbmaker was given. @@ -49771,8 +49511,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -49814,7 +49554,7 @@ ODBC_TYPE=dbmaker -printf "%s\n" "#define HAVE_DBMAKER 1" >>confdefs.h +printf '%s\n' "#define HAVE_DBMAKER 1" >>confdefs.h if test "x$ext_shared" = xyes @@ -49921,14 +49661,14 @@ if test "x$PHP_ODBCVER" = xno then : - printf "%s\n" "#define ODBCVER 0x0350" >>confdefs.h + printf '%s\n' "#define ODBCVER 0x0350" >>confdefs.h else case e in #( e) if test "x$PHP_ODBCVER" = x0 then : else case e in #( - e) printf "%s\n" "#define ODBCVER $PHP_ODBCVER" >>confdefs.h + e) printf '%s\n' "#define ODBCVER $PHP_ODBCVER" >>confdefs.h ;; esac fi ;; @@ -50058,7 +49798,7 @@ else case e in #( e) -printf "%s\n" "#define HAVE_SQLDATASOURCES 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLDATASOURCES 1" >>confdefs.h ;; esac fi @@ -50067,7 +49807,7 @@ fi -printf "%s\n" "#define HAVE_UODBC 1" >>confdefs.h +printf '%s\n' "#define HAVE_UODBC 1" >>confdefs.h PHP_VAR_SUBST="$PHP_VAR_SUBST ODBC_SHARED_LIBADD" @@ -50212,7 +49952,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_ODBC 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_ODBC 1" >>confdefs.h fi fi @@ -50331,10 +50071,10 @@ fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for any ODBC driver support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for any ODBC driver support" >&5 printf %s "checking for any ODBC driver support... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -50343,7 +50083,7 @@ php_enable_opcache=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend OPcache support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend OPcache support" >&5 printf %s "checking whether to enable Zend OPcache support... " >&6; } # Check whether --enable-opcache was given. if test ${enable_opcache+y} @@ -50380,8 +50120,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -50389,7 +50129,7 @@ php_enable_huge_code_pages=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable copying PHP CODE pages into HUGE PAGES" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable copying PHP CODE pages into HUGE PAGES" >&5 printf %s "checking whether to enable copying PHP CODE pages into HUGE PAGES... " >&6; } # Check whether --enable-huge-code-pages was given. if test ${enable_huge_code_pages+y} @@ -50405,8 +50145,8 @@ ext_output=$PHP_HUGE_CODE_PAGES -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -50414,7 +50154,7 @@ php_enable_opcache_jit=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable JIT" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable JIT" >&5 printf %s "checking whether to enable JIT... " >&6; } # Check whether --enable-opcache-jit was given. if test ${enable_opcache_jit+y} @@ -50430,8 +50170,8 @@ ext_output=$PHP_OPCACHE_JIT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -50439,7 +50179,7 @@ php_with_capstone=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support opcache JIT disassembly through Capstone" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to support opcache JIT disassembly through Capstone" >&5 printf %s "checking whether to support opcache JIT disassembly through Capstone... " >&6; } # Check whether --with-capstone was given. @@ -50456,8 +50196,8 @@ ext_output=$PHP_CAPSTONE -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -50468,7 +50208,7 @@ if test "x$PHP_HUGE_CODE_PAGES" = xyes then : -printf "%s\n" "#define HAVE_HUGE_CODE_PAGES 1" >>confdefs.h +printf '%s\n' "#define HAVE_HUGE_CODE_PAGES 1" >>confdefs.h fi @@ -50480,15 +50220,15 @@ ;; #( *) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: JIT not supported by host architecture" >&5 -printf "%s\n" "$as_me: WARNING: JIT not supported by host architecture" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: JIT not supported by host architecture" >&5 +printf '%s\n' "$as_me: WARNING: JIT not supported by host architecture" >&2;} PHP_OPCACHE_JIT=no ;; esac if test "$host_vendor" = "apple" && test "$host_cpu" = "aarch64" && test "$PHP_THREAD_SAFETY" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: JIT not supported on Apple Silicon with ZTS" >&5 -printf "%s\n" "$as_me: WARNING: JIT not supported on Apple Silicon with ZTS" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: JIT not supported on Apple Silicon with ZTS" >&5 +printf '%s\n' "$as_me: WARNING: JIT not supported on Apple Silicon with ZTS" >&2;} PHP_OPCACHE_JIT=no fi @@ -50498,7 +50238,7 @@ then : -printf "%s\n" "#define HAVE_JIT 1" >>confdefs.h +printf '%s\n' "#define HAVE_JIT 1" >>confdefs.h ZEND_JIT_SRC=" jit/ir/ir_cfg.c jit/ir/ir_check.c jit/ir/ir_dump.c jit/ir/ir_emit.c jit/ir/ir_gcm.c jit/ir/ir_gdb.c jit/ir/ir_patch.c jit/ir/ir_perf.c jit/ir/ir_ra.c jit/ir/ir_save.c jit/ir/ir_sccp.c jit/ir/ir_strtab.c jit/ir/ir.c jit/zend_jit_vm_helpers.c jit/zend_jit.c " @@ -50533,17 +50273,17 @@ then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for capstone >= 3.0.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for capstone >= 3.0.0" >&5 printf %s "checking for capstone >= 3.0.0... " >&6; } if test -n "$CAPSTONE_CFLAGS"; then pkg_cv_CAPSTONE_CFLAGS="$CAPSTONE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"capstone >= 3.0.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"capstone >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "capstone >= 3.0.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAPSTONE_CFLAGS=`$PKG_CONFIG --cflags "capstone >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -50557,10 +50297,10 @@ pkg_cv_CAPSTONE_LIBS="$CAPSTONE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"capstone >= 3.0.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"capstone >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "capstone >= 3.0.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAPSTONE_LIBS=`$PKG_CONFIG --libs "capstone >= 3.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -50574,8 +50314,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -50601,10 +50341,10 @@ and CAPSTONE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -50618,11 +50358,11 @@ else CAPSTONE_CFLAGS=$pkg_cv_CAPSTONE_CFLAGS CAPSTONE_LIBS=$pkg_cv_CAPSTONE_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } -printf "%s\n" "#define HAVE_CAPSTONE 1" >>confdefs.h +printf '%s\n' "#define HAVE_CAPSTONE 1" >>confdefs.h for ac_i in $CAPSTONE_LIBS; do @@ -50805,18 +50545,18 @@ ac_fn_c_check_func "$LINENO" "mprotect" "ac_cv_func_mprotect" if test "x$ac_cv_func_mprotect" = xyes then : - printf "%s\n" "#define HAVE_MPROTECT 1" >>confdefs.h + printf '%s\n' "#define HAVE_MPROTECT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "shm_create_largepage" "ac_cv_func_shm_create_largepage" if test "x$ac_cv_func_shm_create_largepage" = xyes then : - printf "%s\n" "#define HAVE_SHM_CREATE_LARGEPAGE 1" >>confdefs.h + printf '%s\n' "#define HAVE_SHM_CREATE_LARGEPAGE 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysvipc shared memory support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sysvipc shared memory support" >&5 printf %s "checking for sysvipc shared memory support... " >&6; } if test ${php_cv_shm_ipc+y} then : @@ -50908,16 +50648,16 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_shm_ipc" >&5 -printf "%s\n" "$php_cv_shm_ipc" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_shm_ipc" >&5 +printf '%s\n' "$php_cv_shm_ipc" >&6; } if test "x$php_cv_shm_ipc" = xyes then : -printf "%s\n" "#define HAVE_SHM_IPC 1" >>confdefs.h +printf '%s\n' "#define HAVE_SHM_IPC 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mmap() using MAP_ANON shared memory support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mmap() using MAP_ANON shared memory support" >&5 printf %s "checking for mmap() using MAP_ANON shared memory support... " >&6; } if test ${php_cv_shm_mmap_anon+y} then : @@ -50996,18 +50736,18 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_shm_mmap_anon" >&5 -printf "%s\n" "$php_cv_shm_mmap_anon" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_shm_mmap_anon" >&5 +printf '%s\n' "$php_cv_shm_mmap_anon" >&6; } if test "x$php_cv_shm_mmap_anon" = xyes then : -printf "%s\n" "#define HAVE_SHM_MMAP_ANON 1" >>confdefs.h +printf '%s\n' "#define HAVE_SHM_MMAP_ANON 1" >>confdefs.h fi LIBS_save=$LIBS LIBS= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5 printf %s "checking for library containing shm_open... " >&6; } if test ${ac_cv_search_shm_open+y} then : @@ -51065,13 +50805,13 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5 -printf "%s\n" "$ac_cv_search_shm_open" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5 +printf '%s\n' "$ac_cv_search_shm_open" >&6; } ac_res=$ac_cv_search_shm_open if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mmap() using shm_open() shared memory support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mmap() using shm_open() shared memory support" >&5 printf %s "checking for mmap() using shm_open() shared memory support... " >&6; } if test ${php_cv_shm_mmap_posix+y} then : @@ -51162,8 +50902,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_shm_mmap_posix" >&5 -printf "%s\n" "$php_cv_shm_mmap_posix" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_shm_mmap_posix" >&5 +printf '%s\n' "$php_cv_shm_mmap_posix" >&6; } fi @@ -51173,7 +50913,7 @@ then : -printf "%s\n" "#define HAVE_SHM_MMAP_POSIX 1" >>confdefs.h +printf '%s\n' "#define HAVE_SHM_MMAP_POSIX 1" >>confdefs.h case $ac_cv_search_shm_open in #( "none required"|no) : @@ -51430,7 +51170,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_OPCACHE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_OPCACHE 1" >>confdefs.h fi fi @@ -51589,8 +51329,8 @@ if test "$php_cv_shm_ipc" != "yes" && test "$php_cv_shm_mmap_posix" != "yes" && test "$php_cv_shm_mmap_anon" != "yes"; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "No supported shared memory caching support was found when configuring opcache. See 'config.log' for more details" "$LINENO" 5; } fi @@ -51618,7 +51358,7 @@ php_enable_pcntl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable pcntl support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable pcntl support" >&5 printf %s "checking whether to enable pcntl support... " >&6; } # Check whether --enable-pcntl was given. if test ${enable_pcntl+y} @@ -51655,22 +51395,22 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_PCNTL" != "no"; then for function in fork sigaction waitpid; do - as_ac_var=`printf "%s\n" "ac_cv_func_$function" | sed "$as_sed_sh"` + as_ac_var=`printf '%s\n' "ac_cv_func_$function" | sed "$as_sed_sh"` ac_fn_c_check_func "$LINENO" "$function" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes" then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "ext/pcntl: required function $function() not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -51681,91 +51421,91 @@ ac_fn_c_check_func "$LINENO" "forkx" "ac_cv_func_forkx" if test "x$ac_cv_func_forkx" = xyes then : - printf "%s\n" "#define HAVE_FORKX 1" >>confdefs.h + printf '%s\n' "#define HAVE_FORKX 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getcpuid" "ac_cv_func_getcpuid" if test "x$ac_cv_func_getcpuid" = xyes then : - printf "%s\n" "#define HAVE_GETCPUID 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETCPUID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpriority" "ac_cv_func_getpriority" if test "x$ac_cv_func_getpriority" = xyes then : - printf "%s\n" "#define HAVE_GETPRIORITY 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPRIORITY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pidfd_open" "ac_cv_func_pidfd_open" if test "x$ac_cv_func_pidfd_open" = xyes then : - printf "%s\n" "#define HAVE_PIDFD_OPEN 1" >>confdefs.h + printf '%s\n' "#define HAVE_PIDFD_OPEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pset_bind" "ac_cv_func_pset_bind" if test "x$ac_cv_func_pset_bind" = xyes then : - printf "%s\n" "#define HAVE_PSET_BIND 1" >>confdefs.h + printf '%s\n' "#define HAVE_PSET_BIND 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_set_qos_class_self_np" "ac_cv_func_pthread_set_qos_class_self_np" if test "x$ac_cv_func_pthread_set_qos_class_self_np" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_SET_QOS_CLASS_SELF_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_SET_QOS_CLASS_SELF_NP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "rfork" "ac_cv_func_rfork" if test "x$ac_cv_func_rfork" = xyes then : - printf "%s\n" "#define HAVE_RFORK 1" >>confdefs.h + printf '%s\n' "#define HAVE_RFORK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sched_setaffinity" "ac_cv_func_sched_setaffinity" if test "x$ac_cv_func_sched_setaffinity" = xyes then : - printf "%s\n" "#define HAVE_SCHED_SETAFFINITY 1" >>confdefs.h + printf '%s\n' "#define HAVE_SCHED_SETAFFINITY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority" if test "x$ac_cv_func_setpriority" = xyes then : - printf "%s\n" "#define HAVE_SETPRIORITY 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETPRIORITY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sigwaitinfo" "ac_cv_func_sigwaitinfo" if test "x$ac_cv_func_sigwaitinfo" = xyes then : - printf "%s\n" "#define HAVE_SIGWAITINFO 1" >>confdefs.h + printf '%s\n' "#define HAVE_SIGWAITINFO 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sigtimedwait" "ac_cv_func_sigtimedwait" if test "x$ac_cv_func_sigtimedwait" = xyes then : - printf "%s\n" "#define HAVE_SIGTIMEDWAIT 1" >>confdefs.h + printf '%s\n' "#define HAVE_SIGTIMEDWAIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "unshare" "ac_cv_func_unshare" if test "x$ac_cv_func_unshare" = xyes then : - printf "%s\n" "#define HAVE_UNSHARE 1" >>confdefs.h + printf '%s\n' "#define HAVE_UNSHARE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" if test "x$ac_cv_func_wait3" = xyes then : - printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h + printf '%s\n' "#define HAVE_WAIT3 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wait4" "ac_cv_func_wait4" if test "x$ac_cv_func_wait4" = xyes then : - printf "%s\n" "#define HAVE_WAIT4 1" >>confdefs.h + printf '%s\n' "#define HAVE_WAIT4 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "waitid" "ac_cv_func_waitid" if test "x$ac_cv_func_waitid" = xyes then : - printf "%s\n" "#define HAVE_WAITID 1" >>confdefs.h + printf '%s\n' "#define HAVE_WAITID 1" >>confdefs.h fi @@ -51776,14 +51516,14 @@ ac_fn_c_check_func "$LINENO" "WIFCONTINUED" "ac_cv_func_WIFCONTINUED" if test "x$ac_cv_func_WIFCONTINUED" = xyes then : - printf "%s\n" "#define HAVE_WIFCONTINUED 1" >>confdefs.h + printf '%s\n' "#define HAVE_WIFCONTINUED 1" >>confdefs.h else case e in #( e) ac_fn_check_decl "$LINENO" "WIFCONTINUED" "ac_cv_have_decl_WIFCONTINUED" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_WIFCONTINUED" = xyes then : - printf "%s\n" "#define HAVE_WIFCONTINUED 1" >>confdefs.h + printf '%s\n' "#define HAVE_WIFCONTINUED 1" >>confdefs.h fi ;; esac @@ -51792,7 +51532,7 @@ done ac_fn_check_decl "$LINENO" "WCONTINUED" "ac_cv_have_decl_WCONTINUED" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_WCONTINUED" = xyes then : ac_have_decl=1 @@ -51800,9 +51540,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_WCONTINUED $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_WCONTINUED $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "WEXITED" "ac_cv_have_decl_WEXITED" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_WEXITED" = xyes then : ac_have_decl=1 @@ -51810,9 +51550,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_WEXITED $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_WEXITED $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "WSTOPPED" "ac_cv_have_decl_WSTOPPED" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_WSTOPPED" = xyes then : ac_have_decl=1 @@ -51820,9 +51560,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_WSTOPPED $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_WSTOPPED $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "WNOWAIT" "ac_cv_have_decl_WNOWAIT" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_WNOWAIT" = xyes then : ac_have_decl=1 @@ -51830,9 +51570,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_WNOWAIT $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_WNOWAIT $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "P_ALL" "ac_cv_have_decl_P_ALL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_P_ALL" = xyes then : ac_have_decl=1 @@ -51840,9 +51580,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_P_ALL $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_P_ALL $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "P_PIDFD" "ac_cv_have_decl_P_PIDFD" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_P_PIDFD" = xyes then : ac_have_decl=1 @@ -51850,9 +51590,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_P_PIDFD $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_P_PIDFD $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "P_UID" "ac_cv_have_decl_P_UID" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_P_UID" = xyes then : ac_have_decl=1 @@ -51860,9 +51600,9 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_P_UID $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_P_UID $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "P_JAILID" "ac_cv_have_decl_P_JAILID" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_P_JAILID" = xyes then : ac_have_decl=1 @@ -51870,10 +51610,10 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_P_JAILID $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_P_JAILID $ac_have_decl" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sched_getcpu is supported" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if sched_getcpu is supported" >&5 printf %s "checking if sched_getcpu is supported... " >&6; } if test ${php_cv_func_sched_getcpu+y} then : @@ -51909,12 +51649,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_sched_getcpu" >&5 -printf "%s\n" "$php_cv_func_sched_getcpu" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_sched_getcpu" >&5 +printf '%s\n' "$php_cv_func_sched_getcpu" >&6; } if test "x$php_cv_func_sched_getcpu" = xyes then : -printf "%s\n" "#define HAVE_SCHED_GETCPU 1" >>confdefs.h +printf '%s\n' "#define HAVE_SCHED_GETCPU 1" >>confdefs.h fi @@ -52061,7 +51801,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PCNTL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PCNTL 1" >>confdefs.h fi fi @@ -52185,357 +51925,9 @@ -php_enable_pdo=yes - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable PDO support" >&5 -printf %s "checking whether to enable PDO support... " >&6; } -# Check whether --enable-pdo was given. -if test ${enable_pdo+y} -then : - enableval=$enable_pdo; PHP_PDO=$enableval -else case e in #( - e) - PHP_PDO=yes - test "$PHP_ENABLE_ALL" && PHP_PDO=$PHP_ENABLE_ALL - ;; -esac -fi - - - -ext_output="yes, shared" -ext_shared=yes -case $PHP_PDO in -shared,*) - PHP_PDO=$(echo "$PHP_PDO"|$SED 's/^shared,//') - ;; -shared) - PHP_PDO=yes - ;; -no) - ext_output=no - ext_shared=no - ;; -*) - ext_output=yes - ext_shared=no - ;; -esac - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } - - - - -if test "$PHP_PDO" != "no"; then - PHP_PDO=yes - - - ext_builddir=ext/pdo - ext_srcdir=$abs_srcdir/ext/pdo - ext_dir=ext/pdo - - ac_extra= - - if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" != "cli"; then - PHP_PDO_SHARED=no - - - case $ext_dir in - "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; - /*) ac_srcdir=$(echo "$ext_dir"|cut -c 2-)"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; - *) ac_srcdir="$abs_srcdir/$ext_dir/"; ac_bdir="$ext_dir/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; - esac - - - - b_c_pre=$php_c_pre - b_cxx_pre=$php_cxx_pre - b_c_meta=$php_c_meta - b_cxx_meta=$php_cxx_meta - b_c_post=$php_c_post - b_cxx_post=$php_cxx_post - b_lo=$php_lo - - - old_IFS=$IFS - for ac_src in pdo.c pdo_dbh.c pdo_stmt.c pdo_sql_parser.c pdo_sqlstate.c; do - - IFS=. - set $ac_src - ac_obj=$1 - IFS=$old_IFS - - PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo" - - case $ac_src in - *.c) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; - *.s) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; - *.S) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; - *.cpp|*.cc|*.cxx) ac_comp="$b_cxx_pre $ac_inc $b_cxx_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;; - esac - - ac_comp="$ac_comp -MMD -MF $ac_bdir$ac_obj.dep -MT $ac_bdir$ac_obj.lo" - - cat >>Makefile.objects<>Makefile.objects<>Makefile.objects<>confdefs.h - - fi - fi - - if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" = "cli"; then - PHP_PDO_SHARED=no - case "$PHP_SAPI" in - cgi|embed|phpdbg) - - - case $ext_dir in - "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; - /*) ac_srcdir=$(echo "$ext_dir"|cut -c 2-)"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; - *) ac_srcdir="$abs_srcdir/$ext_dir/"; ac_bdir="$ext_dir/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; - esac - - - - b_c_pre=$php_c_pre - b_cxx_pre=$php_cxx_pre - b_c_meta=$php_c_meta - b_cxx_meta=$php_cxx_meta - b_c_post=$php_c_post - b_cxx_post=$php_cxx_post - b_lo=$php_lo - - - old_IFS=$IFS - for ac_src in pdo.c pdo_dbh.c pdo_stmt.c pdo_sql_parser.c pdo_sqlstate.c; do - - IFS=. - set $ac_src - ac_obj=$1 - IFS=$old_IFS - - PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo" - - case $ac_src in - *.c) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; - *.s) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; - *.S) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; - *.cpp|*.cc|*.cxx) ac_comp="$b_cxx_pre $ac_inc $b_cxx_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;; - esac - - ac_comp="$ac_comp -MMD -MF $ac_bdir$ac_obj.dep -MT $ac_bdir$ac_obj.lo" - - cat >>Makefile.objects<>Makefile.objects<> Makefile.fragments - -fi - - - - - php_with_pdo_dblib=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO_DBLIB support via FreeTDS" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO_DBLIB support via FreeTDS" >&5 printf %s "checking for PDO_DBLIB support via FreeTDS... " >&6; } # Check whether --with-pdo-dblib was given. @@ -52573,8 +51965,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -52701,7 +52093,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dbsqlexec in -lsybdb" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dbsqlexec in -lsybdb" >&5 printf %s "checking for dbsqlexec in -lsybdb... " >&6; } if test ${ac_cv_lib_sybdb_dbsqlexec+y} then : @@ -52742,8 +52134,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sybdb_dbsqlexec" >&5 -printf "%s\n" "$ac_cv_lib_sybdb_dbsqlexec" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sybdb_dbsqlexec" >&5 +printf '%s\n' "$ac_cv_lib_sybdb_dbsqlexec" >&6; } if test "x$ac_cv_lib_sybdb_dbsqlexec" = xyes then : @@ -52756,8 +52148,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_sybdb_dbsqlexec - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot find FreeTDS in known installation directories. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -52948,7 +52340,7 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 printf %s "checking for PDO includes... " >&6; } if test ${pdo_cv_inc_path+y} then : @@ -52963,8 +52355,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 -printf "%s\n" "$pdo_cv_inc_path" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 +printf '%s\n' "$pdo_cv_inc_path" >&6; } if test -n "$pdo_cv_inc_path"; then : else @@ -53108,7 +52500,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PDO_DBLIB 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PDO_DBLIB 1" >>confdefs.h fi fi @@ -53257,7 +52649,7 @@ php_with_pdo_firebird=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Firebird support for PDO" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Firebird support for PDO" >&5 printf %s "checking for Firebird support for PDO... " >&6; } # Check whether --with-pdo-firebird was given. @@ -53295,8 +52687,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -53304,7 +52696,7 @@ if test "$PHP_PDO_FIREBIRD" != "no"; then # Extract the first word of "fb_config", so it can be a program name with args. set dummy fb_config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_FB_CONFIG+y} then : @@ -53327,7 +52719,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_FB_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -53341,23 +52733,23 @@ fi FB_CONFIG=$ac_cv_path_FB_CONFIG if test -n "$FB_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FB_CONFIG" >&5 -printf "%s\n" "$FB_CONFIG" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $FB_CONFIG" >&5 +printf '%s\n' "$FB_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test -x "$FB_CONFIG" && test "$PHP_PDO_FIREBIRD" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libfbconfig" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libfbconfig" >&5 printf %s "checking for libfbconfig... " >&6; } FB_CFLAGS=$($FB_CONFIG --cflags) FB_LIBDIR=$($FB_CONFIG --libs) FB_VERSION=$($FB_CONFIG --version) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: version $FB_VERSION" >&5 -printf "%s\n" "version $FB_VERSION" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: version $FB_VERSION" >&5 +printf '%s\n' "version $FB_VERSION" >&6; } as_arg_v1=$FB_VERSION as_arg_v2=3.0 awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null @@ -53661,7 +53053,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fb_get_master_interface in -lfbclient" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for fb_get_master_interface in -lfbclient" >&5 printf %s "checking for fb_get_master_interface in -lfbclient... " >&6; } if test ${ac_cv_lib_fbclient_fb_get_master_interface+y} then : @@ -53702,8 +53094,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fbclient_fb_get_master_interface" >&5 -printf "%s\n" "$ac_cv_lib_fbclient_fb_get_master_interface" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fbclient_fb_get_master_interface" >&5 +printf '%s\n' "$ac_cv_lib_fbclient_fb_get_master_interface" >&6; } if test "x$ac_cv_lib_fbclient_fb_get_master_interface" = xyes then : @@ -53716,8 +53108,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_fbclient_fb_get_master_interface - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "libfbclient not found. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -53866,7 +53258,7 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 printf %s "checking for PDO includes... " >&6; } if test ${pdo_cv_inc_path+y} then : @@ -53881,8 +53273,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 -printf "%s\n" "$pdo_cv_inc_path" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 +printf '%s\n' "$pdo_cv_inc_path" >&6; } if test -n "$pdo_cv_inc_path"; then : else @@ -54025,7 +53417,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PDO_FIREBIRD 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PDO_FIREBIRD 1" >>confdefs.h fi fi @@ -54184,7 +53576,7 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : @@ -54205,7 +53597,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -54217,11 +53609,11 @@ fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf '%s\n' "$CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -54234,7 +53626,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : @@ -54255,7 +53647,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -54267,11 +53659,11 @@ fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf '%s\n' "$ac_ct_CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -54283,8 +53675,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -54294,7 +53686,7 @@ fi fi # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -54304,7 +53696,7 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -54314,11 +53706,11 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : @@ -54350,8 +53742,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then @@ -54361,7 +53753,7 @@ fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : @@ -54429,8 +53821,8 @@ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf '%s\n' "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -54446,106 +53838,6 @@ CXXFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 ;; -esac -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 ;; -esac -fi -fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -54557,7 +53849,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} @@ -54624,8 +53916,8 @@ else ac_cv_prog_CXXCPP=$CXXCPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -printf "%s\n" "$CXXCPP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +printf '%s\n' "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -54673,8 +53965,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -54709,8 +54001,8 @@ for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do - cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 + cachevar=`printf '%s\n' "ax_cv_cxx_compile_cxx11_$switch" | sed "$as_sed_sh"` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval test \${$cachevar+y} then : @@ -55021,8 +54313,8 @@ esac fi eval ac_res=\$$cachevar - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then eval PHP_PDO_FIREBIRD_STDCXX="$switch" ac_success=yes @@ -55046,8 +54338,8 @@ fi fi if test x$ac_success = xno; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 -printf "%s\n" "$as_me: No compiler with C++11 support was found" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 +printf '%s\n' "$as_me: No compiler with C++11 support was found" >&6;} fi @@ -55157,7 +54449,7 @@ php_with_pdo_mysql=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL support for PDO" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for MySQL support for PDO" >&5 printf %s "checking for MySQL support for PDO... " >&6; } # Check whether --with-pdo-mysql was given. @@ -55195,14 +54487,14 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_PDO_MYSQL" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MySQL Unix socket location" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for MySQL Unix socket location" >&5 printf %s "checking for MySQL Unix socket location... " >&6; } case $PHP_MYSQL_SOCK in #( yes) : @@ -55226,29 +54518,29 @@ if ${MYSQL_SOCK:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } else case e in #( e) -printf "%s\n" "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$MYSQL_SOCK\"" >>confdefs.h +printf '%s\n' "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$MYSQL_SOCK\"" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MYSQL_SOCK" >&5 -printf "%s\n" "$MYSQL_SOCK" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MYSQL_SOCK" >&5 +printf '%s\n' "$MYSQL_SOCK" >&6; } ;; esac fi ;; #( no) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; #( + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; #( *) : -printf "%s\n" "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$PHP_MYSQL_SOCK\"" >>confdefs.h +printf '%s\n' "#define PHP_MYSQL_UNIX_SOCK_ADDR \"$PHP_MYSQL_SOCK\"" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PHP_MYSQL_SOCK" >&5 -printf "%s\n" "$PHP_MYSQL_SOCK" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PHP_MYSQL_SOCK" >&5 +printf '%s\n' "$PHP_MYSQL_SOCK" >&6; } ;; esac @@ -55257,12 +54549,12 @@ PHP_MYSQLND_ENABLED=yes -printf "%s\n" "#define PDO_USE_MYSQLND 1" >>confdefs.h +printf '%s\n' "#define PDO_USE_MYSQLND 1" >>confdefs.h ;; #( *) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mysql_config" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mysql_config" >&5 printf %s "checking for mysql_config... " >&6; } if test -f $PHP_PDO_MYSQL && test -x $PHP_PDO_MYSQL ; then PDO_MYSQL_CONFIG=$PHP_PDO_MYSQL @@ -55277,18 +54569,18 @@ fi if test -n "$PDO_MYSQL_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PDO_MYSQL_CONFIG" >&5 -printf "%s\n" "$PDO_MYSQL_CONFIG" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PDO_MYSQL_CONFIG" >&5 +printf '%s\n' "$PDO_MYSQL_CONFIG" >&6; } PDO_MYSQL_LIBS=$($PDO_MYSQL_CONFIG --libs | $SED -e "s/'//g") PDO_MYSQL_INCLUDE=$($PDO_MYSQL_CONFIG --cflags | $SED -e "s/'//g") PDO_MYSQL_SOCKET=$($PDO_MYSQL_CONFIG --socket) -printf "%s\n" "#define PDO_MYSQL_UNIX_ADDR \"$PDO_MYSQL_SOCKET\"" >>confdefs.h +printf '%s\n' "#define PDO_MYSQL_UNIX_ADDR \"$PDO_MYSQL_SOCKET\"" >>confdefs.h elif test -n "$PDO_MYSQL_DIR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -printf "%s\n" "not found" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mysql install under $PDO_MYSQL_DIR" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf '%s\n' "not found" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mysql install under $PDO_MYSQL_DIR" >&5 printf %s "checking for mysql install under $PDO_MYSQL_DIR... " >&6; } if test -r $PDO_MYSQL_DIR/include/mysql; then PDO_MYSQL_INC_DIR=$PDO_MYSQL_DIR/include/mysql @@ -55302,19 +54594,19 @@ fi if test -r "$PDO_MYSQL_LIB_DIR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libs under $PDO_MYSQL_LIB_DIR; seems promising" >&5 -printf "%s\n" "libs under $PDO_MYSQL_LIB_DIR; seems promising" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: libs under $PDO_MYSQL_LIB_DIR; seems promising" >&5 +printf '%s\n' "libs under $PDO_MYSQL_LIB_DIR; seems promising" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: can not find it" >&5 -printf "%s\n" "can not find it" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: can not find it" >&5 +printf '%s\n' "can not find it" >&6; } as_fn_error $? "Unable to find your mysql installation" "$LINENO" 5 fi PDO_MYSQL_INCLUDE=-I$PDO_MYSQL_INC_DIR PDO_MYSQL_LIBS="-L$PDO_MYSQL_LIB_DIR -lmysqlclient" else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -printf "%s\n" "not found" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf '%s\n' "not found" >&6; } as_fn_error $? "Unable to find your mysql installation" "$LINENO" 5 fi @@ -55477,7 +54769,7 @@ esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 printf %s "checking for PDO includes... " >&6; } if test ${pdo_cv_inc_path+y} then : @@ -55492,8 +54784,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 -printf "%s\n" "$pdo_cv_inc_path" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 +printf '%s\n' "$pdo_cv_inc_path" >&6; } if test -n "$pdo_cv_inc_path"; then : else @@ -55636,7 +54928,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PDO_MYSQL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PDO_MYSQL 1" >>confdefs.h fi fi @@ -55820,7 +55112,7 @@ php_with_pdo_odbc=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ODBC v3 support for PDO" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ODBC v3 support for PDO" >&5 printf %s "checking for ODBC v3 support for PDO... " >&6; } # Check whether --with-pdo-odbc was given. @@ -55858,8 +55150,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -55868,7 +55160,7 @@ if test "$PHP_PDO_ODBC" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 printf %s "checking for PDO includes... " >&6; } if test ${pdo_cv_inc_path+y} then : @@ -55883,8 +55175,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 -printf "%s\n" "$pdo_cv_inc_path" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 +printf '%s\n' "$pdo_cv_inc_path" >&6; } if test -n "$pdo_cv_inc_path"; then : else @@ -55892,7 +55184,7 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for selected PDO ODBC flavour" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for selected PDO ODBC flavour" >&5 printf %s "checking for selected PDO ODBC flavour... " >&6; } pdo_odbc_flavour="$(echo $PHP_PDO_ODBC | cut -d, -f1)" @@ -55936,21 +55228,21 @@ esac if test -n "$pdo_odbc_pkgconfig_module"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_odbc_flavour using pkg-config" >&5 -printf "%s\n" "$pdo_odbc_flavour using pkg-config" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_odbc_flavour using pkg-config" >&5 +printf '%s\n' "$pdo_odbc_flavour using pkg-config" >&6; } pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $pdo_odbc_pkgconfig_module" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $pdo_odbc_pkgconfig_module" >&5 printf %s "checking for $pdo_odbc_pkgconfig_module... " >&6; } if test -n "$PDO_ODBC_CFLAGS"; then pkg_cv_PDO_ODBC_CFLAGS="$PDO_ODBC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pdo_odbc_pkgconfig_module\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pdo_odbc_pkgconfig_module\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pdo_odbc_pkgconfig_module") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PDO_ODBC_CFLAGS=`$PKG_CONFIG --cflags "$pdo_odbc_pkgconfig_module" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -55964,10 +55256,10 @@ pkg_cv_PDO_ODBC_LIBS="$PDO_ODBC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pdo_odbc_pkgconfig_module\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pdo_odbc_pkgconfig_module\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pdo_odbc_pkgconfig_module") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PDO_ODBC_LIBS=`$PKG_CONFIG --libs "$pdo_odbc_pkgconfig_module" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -55981,8 +55273,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -56008,10 +55300,10 @@ and PDO_ODBC_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -56025,8 +55317,8 @@ else PDO_ODBC_CFLAGS=$pkg_cv_PDO_ODBC_CFLAGS PDO_ODBC_LIBS=$pkg_cv_PDO_ODBC_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi else @@ -56044,16 +55336,16 @@ esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_odbc_flavour + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_odbc_flavour libs $PDO_ODBC_LIBDIR, headers $PDO_ODBC_INCDIR" >&5 -printf "%s\n" "$pdo_odbc_flavour +printf '%s\n' "$pdo_odbc_flavour libs $PDO_ODBC_LIBDIR, headers $PDO_ODBC_INCDIR" >&6; } if test ! -d "$PDO_ODBC_LIBDIR" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: library dir $PDO_ODBC_LIBDIR does not exist" >&5 -printf "%s\n" "$as_me: WARNING: library dir $PDO_ODBC_LIBDIR does not exist" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: library dir $PDO_ODBC_LIBDIR does not exist" >&5 +printf '%s\n' "$as_me: WARNING: library dir $PDO_ODBC_LIBDIR does not exist" >&2;} fi PDO_ODBC_CFLAGS="$pdo_odbc_def_cflags -I$PDO_ODBC_INCDIR" @@ -56177,8 +55469,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$pdo_odbc_def_lib""_SQLBindCol" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SQLBindCol in -l$pdo_odbc_def_lib" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$pdo_odbc_def_lib""_SQLBindCol" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SQLBindCol in -l$pdo_odbc_def_lib" >&5 printf %s "checking for SQLBindCol in -l$pdo_odbc_def_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -56220,8 +55512,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -56345,8 +55637,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$pdo_odbc_def_lib""_SQLAllocHandle" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SQLAllocHandle in -l$pdo_odbc_def_lib" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$pdo_odbc_def_lib""_SQLAllocHandle" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SQLAllocHandle in -l$pdo_odbc_def_lib" >&5 printf %s "checking for SQLAllocHandle in -l$pdo_odbc_def_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -56388,8 +55680,8 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : @@ -56402,8 +55694,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_$pdo_odbc_def_lib_SQLAllocHandle - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? " Your ODBC library does not appear to be ODBC 3 compatible. You should consider using iODBC or unixODBC instead, and loading your @@ -56421,8 +55713,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_$pdo_odbc_def_lib_SQLBindCol - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Your ODBC library does not exist or there was an error. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -56589,7 +55881,7 @@ OLD_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $PDO_ODBC_CFLAGS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cli0cli.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cli0cli.h" >&5 printf %s "checking for cli0cli.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56607,19 +55899,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_CLI0CLI_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_CLI0CLI_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cli0core.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cli0core.h" >&5 printf %s "checking for cli0core.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56637,19 +55929,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_CLI0CORE_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_CLI0CORE_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cli0defs.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cli0defs.h" >&5 printf %s "checking for cli0defs.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56667,19 +55959,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_CLI0DEFS_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_CLI0DEFS_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cli0env.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cli0env.h" >&5 printf %s "checking for cli0env.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56697,19 +55989,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_CLI0ENV_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_CLI0ENV_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cli0ext.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for cli0ext.h" >&5 printf %s "checking for cli0ext.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56727,19 +56019,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_CLI0EXT_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_CLI0EXT_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iodbc.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iodbc.h" >&5 printf %s "checking for iodbc.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56757,19 +56049,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_IODBC_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_IODBC_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isql.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for isql.h" >&5 printf %s "checking for isql.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56787,19 +56079,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_ISQL_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_ISQL_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isqlext.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for isqlext.h" >&5 printf %s "checking for isqlext.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56817,19 +56109,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_ISQLEXT_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_ISQLEXT_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LibraryManager.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for LibraryManager.h" >&5 printf %s "checking for LibraryManager.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56847,19 +56139,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_LIBRARYMANAGER_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRARYMANAGER_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for odbc.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for odbc.h" >&5 printf %s "checking for odbc.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56877,19 +56169,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_ODBC_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_ODBC_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sql.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sql.h" >&5 printf %s "checking for sql.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56907,19 +56199,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_SQL_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQL_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlcli1.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlcli1.h" >&5 printf %s "checking for sqlcli1.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56937,19 +56229,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_SQLCLI1_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLCLI1_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlext.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlext.h" >&5 printf %s "checking for sqlext.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56967,19 +56259,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_SQLEXT_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLEXT_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqltypes.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqltypes.h" >&5 printf %s "checking for sqltypes.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -56997,19 +56289,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_SQLTYPES_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLTYPES_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlucode.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlucode.h" >&5 printf %s "checking for sqlucode.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -57027,19 +56319,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_SQLUCODE_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLUCODE_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlunix.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlunix.h" >&5 printf %s "checking for sqlunix.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -57057,19 +56349,19 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_SQLUNIX_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLUNIX_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for udbcext.h" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for udbcext.h" >&5 printf %s "checking for udbcext.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -57087,14 +56379,14 @@ php_pdo_odbc_have_header=yes -printf "%s\n" "#define HAVE_UDBCEXT_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_UDBCEXT_H 1" >>confdefs.h - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -57110,7 +56402,7 @@ fi -printf "%s\n" "#define PDO_ODBC_TYPE \"$pdo_odbc_flavour\"" >>confdefs.h +printf '%s\n' "#define PDO_ODBC_TYPE \"$pdo_odbc_flavour\"" >>confdefs.h @@ -57248,7 +56540,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PDO_ODBC 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PDO_ODBC 1" >>confdefs.h fi fi @@ -57396,7 +56688,7 @@ php_with_pdo_pgsql=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PostgreSQL support for PDO" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PostgreSQL support for PDO" >&5 printf %s "checking for PostgreSQL support for PDO... " >&6; } # Check whether --with-pdo-pgsql was given. @@ -57434,8 +56726,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -57452,17 +56744,17 @@ then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpq >= 10.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libpq >= 10.0" >&5 printf %s "checking for libpq >= 10.0... " >&6; } if test -n "$PGSQL_CFLAGS"; then pkg_cv_PGSQL_CFLAGS="$PGSQL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpq >= 10.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PGSQL_CFLAGS=`$PKG_CONFIG --cflags "libpq >= 10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -57476,10 +56768,10 @@ pkg_cv_PGSQL_LIBS="$PGSQL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpq >= 10.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PGSQL_LIBS=`$PKG_CONFIG --libs "libpq >= 10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -57493,8 +56785,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -57511,21 +56803,21 @@ found_pgsql=no elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } found_pgsql=no else PGSQL_CFLAGS=$pkg_cv_PGSQL_CFLAGS PGSQL_LIBS=$pkg_cv_PGSQL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_pgsql=yes fi fi if test "x$found_pgsql" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pg_config" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for pg_config" >&5 printf %s "checking for pg_config... " >&6; } for i in $pgsql_dir $pgsql_dir/bin /usr/local/pgsql/bin /usr/local/bin /usr/bin ""; do if test -x $i/pg_config @@ -57536,8 +56828,8 @@ if ${PG_CONFIG:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -printf "%s\n" "not found" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf '%s\n' "not found" >&6; } if ${pgsql_dir:+false} : then : pgsql_search_paths="/usr /usr/local /usr/local/pgsql" @@ -57563,8 +56855,8 @@ done else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PG_CONFIG" >&5 -printf "%s\n" "$PG_CONFIG" >&6; } + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PG_CONFIG" >&5 +printf '%s\n' "$PG_CONFIG" >&6; } PGSQL_INCLUDE=$($PG_CONFIG --includedir) PGSQL_LIBDIR=$($PG_CONFIG --libdir) ;; @@ -57856,7 +57148,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQencryptPasswordConn in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQencryptPasswordConn in -lpq" >&5 printf %s "checking for PQencryptPasswordConn in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQencryptPasswordConn+y} then : @@ -57897,8 +57189,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQencryptPasswordConn" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQencryptPasswordConn" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQencryptPasswordConn" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQencryptPasswordConn" >&6; } if test "x$ac_cv_lib_pq_PQencryptPasswordConn" = xyes then : @@ -57911,8 +57203,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_pq_PQencryptPasswordConn - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "PostgreSQL check failed: libpq 10.0 or later is required. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -57921,8 +57213,8 @@ else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot find libpq-fe.h or pq library (libpq). Please specify the correct PostgreSQL installation path with environment variables PGSQL_CFLAGS and PGSQL_LIBS or provide the PostgreSQL installation directory. @@ -57935,7 +57227,7 @@ -printf "%s\n" "#define HAVE_PDO_PGSQL 1" >>confdefs.h +printf '%s\n' "#define HAVE_PDO_PGSQL 1" >>confdefs.h @@ -58056,7 +57348,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQresultMemorySize in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQresultMemorySize in -lpq" >&5 printf %s "checking for PQresultMemorySize in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQresultMemorySize+y} then : @@ -58097,15 +57389,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQresultMemorySize" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQresultMemorySize" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQresultMemorySize" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQresultMemorySize" >&6; } if test "x$ac_cv_lib_pq_PQresultMemorySize" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PG_RESULT_MEMORY_SIZE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PG_RESULT_MEMORY_SIZE 1" >>confdefs.h else case e in #( @@ -58237,7 +57529,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQclosePrepared in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQclosePrepared in -lpq" >&5 printf %s "checking for PQclosePrepared in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQclosePrepared+y} then : @@ -58278,15 +57570,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQclosePrepared" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQclosePrepared" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQclosePrepared" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQclosePrepared" >&6; } if test "x$ac_cv_lib_pq_PQclosePrepared" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PQCLOSEPREPARED 1" >>confdefs.h +printf '%s\n' "#define HAVE_PQCLOSEPREPARED 1" >>confdefs.h else case e in #( @@ -58418,7 +57710,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQclosePortal in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQclosePortal in -lpq" >&5 printf %s "checking for PQclosePortal in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQclosePortal+y} then : @@ -58459,15 +57751,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQclosePortal" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQclosePortal" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQclosePortal" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQclosePortal" >&6; } if test "x$ac_cv_lib_pq_PQclosePortal" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PQCLOSEPORTAL 1" >>confdefs.h +printf '%s\n' "#define HAVE_PQCLOSEPORTAL 1" >>confdefs.h else case e in #( @@ -58482,7 +57774,7 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 printf %s "checking for PDO includes... " >&6; } if test ${pdo_cv_inc_path+y} then : @@ -58497,8 +57789,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 -printf "%s\n" "$pdo_cv_inc_path" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 +printf '%s\n' "$pdo_cv_inc_path" >&6; } if test -n "$pdo_cv_inc_path"; then : else @@ -58641,7 +57933,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PDO_PGSQL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PDO_PGSQL 1" >>confdefs.h fi fi @@ -58791,7 +58083,7 @@ php_with_pdo_sqlite=$PHP_PDO -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite 3 support for PDO" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite 3 support for PDO" >&5 printf %s "checking for sqlite 3 support for PDO... " >&6; } # Check whether --with-pdo-sqlite was given. @@ -58829,15 +58121,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_PDO_SQLITE" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PDO includes" >&5 printf %s "checking for PDO includes... " >&6; } if test ${pdo_cv_inc_path+y} then : @@ -58852,8 +58144,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 -printf "%s\n" "$pdo_cv_inc_path" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $pdo_cv_inc_path" >&5 +printf '%s\n' "$pdo_cv_inc_path" >&6; } if test -n "$pdo_cv_inc_path"; then : else @@ -58864,17 +58156,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= 3.7.7" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= 3.7.7" >&5 printf %s "checking for sqlite3 >= 3.7.7... " >&6; } if test -n "$SQLITE_CFLAGS"; then pkg_cv_SQLITE_CFLAGS="$SQLITE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7.7") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SQLITE_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.7.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -58888,10 +58180,10 @@ pkg_cv_SQLITE_LIBS="$SQLITE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7.7") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SQLITE_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.7.7" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -58905,8 +58197,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -58932,10 +58224,10 @@ and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -58949,8 +58241,8 @@ else SQLITE_CFLAGS=$pkg_cv_SQLITE_CFLAGS SQLITE_LIBS=$pkg_cv_SQLITE_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $SQLITE_CFLAGS; do @@ -59229,7 +58521,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_close_v2 in -lsqlite3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3_close_v2 in -lsqlite3" >&5 printf %s "checking for sqlite3_close_v2 in -lsqlite3... " >&6; } if test ${ac_cv_lib_sqlite3_sqlite3_close_v2+y} then : @@ -59270,15 +58562,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_close_v2" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_close_v2" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_close_v2" >&5 +printf '%s\n' "$ac_cv_lib_sqlite3_sqlite3_close_v2" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_close_v2" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SQLITE3_CLOSE_V2 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLITE3_CLOSE_V2 1" >>confdefs.h else case e in #( @@ -59410,7 +58702,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_table_name in -lsqlite3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_table_name in -lsqlite3" >&5 printf %s "checking for sqlite3_column_table_name in -lsqlite3... " >&6; } if test ${ac_cv_lib_sqlite3_sqlite3_column_table_name+y} then : @@ -59451,15 +58743,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_table_name" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_table_name" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_table_name" >&5 +printf '%s\n' "$ac_cv_lib_sqlite3_sqlite3_column_table_name" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_column_table_name" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SQLITE3_COLUMN_TABLE_NAME 1" >>confdefs.h +printf '%s\n' "#define HAVE_SQLITE3_COLUMN_TABLE_NAME 1" >>confdefs.h else case e in #( @@ -59591,7 +58883,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5 printf %s "checking for sqlite3_load_extension in -lsqlite3... " >&6; } if test ${ac_cv_lib_sqlite3_sqlite3_load_extension+y} then : @@ -59632,8 +58924,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5 +printf '%s\n' "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; } if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes then : @@ -59647,7 +58939,7 @@ ext_shared=$save_ext_shared unset ac_cv_lib_sqlite3_sqlite3_load_extension -printf "%s\n" "#define PDO_SQLITE_OMIT_LOAD_EXTENSION 1" >>confdefs.h +printf '%s\n' "#define PDO_SQLITE_OMIT_LOAD_EXTENSION 1" >>confdefs.h ;; esac @@ -59792,7 +59084,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PDO_SQLITE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PDO_SQLITE 1" >>confdefs.h fi fi @@ -59941,9 +59233,357 @@ +php_enable_pdo=yes + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable PDO support" >&5 +printf %s "checking whether to enable PDO support... " >&6; } +# Check whether --enable-pdo was given. +if test ${enable_pdo+y} +then : + enableval=$enable_pdo; PHP_PDO=$enableval +else case e in #( + e) + PHP_PDO=yes + test "$PHP_ENABLE_ALL" && PHP_PDO=$PHP_ENABLE_ALL + ;; +esac +fi + + + +ext_output="yes, shared" +ext_shared=yes +case $PHP_PDO in +shared,*) + PHP_PDO=$(echo "$PHP_PDO"|$SED 's/^shared,//') + ;; +shared) + PHP_PDO=yes + ;; +no) + ext_output=no + ext_shared=no + ;; +*) + ext_output=yes + ext_shared=no + ;; +esac + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } + + + + +if test "$PHP_PDO" != "no"; then + PHP_PDO=yes + + + ext_builddir=ext/pdo + ext_srcdir=$abs_srcdir/ext/pdo + ext_dir=ext/pdo + + ac_extra= + + if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" != "cli"; then + PHP_PDO_SHARED=no + + + case $ext_dir in + "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; + /*) ac_srcdir=$(echo "$ext_dir"|cut -c 2-)"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; + *) ac_srcdir="$abs_srcdir/$ext_dir/"; ac_bdir="$ext_dir/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; + esac + + + + b_c_pre=$php_c_pre + b_cxx_pre=$php_cxx_pre + b_c_meta=$php_c_meta + b_cxx_meta=$php_cxx_meta + b_c_post=$php_c_post + b_cxx_post=$php_cxx_post + b_lo=$php_lo + + + old_IFS=$IFS + for ac_src in pdo.c pdo_dbh.c pdo_stmt.c pdo_sql_parser.c pdo_sqlstate.c; do + + IFS=. + set $ac_src + ac_obj=$1 + IFS=$old_IFS + + PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo" + + case $ac_src in + *.c) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.s) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.S) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.cpp|*.cc|*.cxx) ac_comp="$b_cxx_pre $ac_inc $b_cxx_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;; + esac + + ac_comp="$ac_comp -MMD -MF $ac_bdir$ac_obj.dep -MT $ac_bdir$ac_obj.lo" + + cat >>Makefile.objects<>Makefile.objects<>Makefile.objects<>confdefs.h + + fi + fi + + if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" = "cli"; then + PHP_PDO_SHARED=no + case "$PHP_SAPI" in + cgi|embed|phpdbg) + + + case $ext_dir in + "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; + /*) ac_srcdir=$(echo "$ext_dir"|cut -c 2-)"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; + *) ac_srcdir="$abs_srcdir/$ext_dir/"; ac_bdir="$ext_dir/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; + esac + + + + b_c_pre=$php_c_pre + b_cxx_pre=$php_cxx_pre + b_c_meta=$php_c_meta + b_cxx_meta=$php_cxx_meta + b_c_post=$php_c_post + b_cxx_post=$php_cxx_post + b_lo=$php_lo + + + old_IFS=$IFS + for ac_src in pdo.c pdo_dbh.c pdo_stmt.c pdo_sql_parser.c pdo_sqlstate.c; do + + IFS=. + set $ac_src + ac_obj=$1 + IFS=$old_IFS + + PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo" + + case $ac_src in + *.c) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.s) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.S) ac_comp="$b_c_pre $ac_inc $b_c_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.cpp|*.cc|*.cxx) ac_comp="$b_cxx_pre $ac_inc $b_cxx_meta $ac_extra -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;; + esac + + ac_comp="$ac_comp -MMD -MF $ac_bdir$ac_obj.dep -MT $ac_bdir$ac_obj.lo" + + cat >>Makefile.objects<>Makefile.objects<> Makefile.fragments + +fi + + + + + php_with_pgsql=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PostgreSQL support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PostgreSQL support" >&5 printf %s "checking for PostgreSQL support... " >&6; } # Check whether --with-pgsql was given. @@ -59981,8 +59621,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -59999,17 +59639,17 @@ then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpq >= 10.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libpq >= 10.0" >&5 printf %s "checking for libpq >= 10.0... " >&6; } if test -n "$PGSQL_CFLAGS"; then pkg_cv_PGSQL_CFLAGS="$PGSQL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpq >= 10.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PGSQL_CFLAGS=`$PKG_CONFIG --cflags "libpq >= 10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -60023,10 +59663,10 @@ pkg_cv_PGSQL_LIBS="$PGSQL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpq >= 10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpq >= 10.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PGSQL_LIBS=`$PKG_CONFIG --libs "libpq >= 10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -60040,8 +59680,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -60058,21 +59698,21 @@ found_pgsql=no elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } found_pgsql=no else PGSQL_CFLAGS=$pkg_cv_PGSQL_CFLAGS PGSQL_LIBS=$pkg_cv_PGSQL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_pgsql=yes fi fi if test "x$found_pgsql" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pg_config" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for pg_config" >&5 printf %s "checking for pg_config... " >&6; } for i in $pgsql_dir $pgsql_dir/bin /usr/local/pgsql/bin /usr/local/bin /usr/bin ""; do if test -x $i/pg_config @@ -60083,8 +59723,8 @@ if ${PG_CONFIG:+false} : then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -printf "%s\n" "not found" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf '%s\n' "not found" >&6; } if ${pgsql_dir:+false} : then : pgsql_search_paths="/usr /usr/local /usr/local/pgsql" @@ -60110,8 +59750,8 @@ done else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PG_CONFIG" >&5 -printf "%s\n" "$PG_CONFIG" >&6; } + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PG_CONFIG" >&5 +printf '%s\n' "$PG_CONFIG" >&6; } PGSQL_INCLUDE=$($PG_CONFIG --includedir) PGSQL_LIBDIR=$($PG_CONFIG --libdir) ;; @@ -60403,7 +60043,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQencryptPasswordConn in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQencryptPasswordConn in -lpq" >&5 printf %s "checking for PQencryptPasswordConn in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQencryptPasswordConn+y} then : @@ -60444,8 +60084,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQencryptPasswordConn" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQencryptPasswordConn" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQencryptPasswordConn" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQencryptPasswordConn" >&6; } if test "x$ac_cv_lib_pq_PQencryptPasswordConn" = xyes then : @@ -60458,8 +60098,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_pq_PQencryptPasswordConn - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "PostgreSQL check failed: libpq 10.0 or later is required. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -60468,8 +60108,8 @@ else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot find libpq-fe.h or pq library (libpq). Please specify the correct PostgreSQL installation path with environment variables PGSQL_CFLAGS and PGSQL_LIBS or provide the PostgreSQL installation directory. @@ -60482,7 +60122,7 @@ -printf "%s\n" "#define HAVE_PGSQL 1" >>confdefs.h +printf '%s\n' "#define HAVE_PGSQL 1" >>confdefs.h @@ -60603,7 +60243,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQresultMemorySize in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQresultMemorySize in -lpq" >&5 printf %s "checking for PQresultMemorySize in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQresultMemorySize+y} then : @@ -60644,15 +60284,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQresultMemorySize" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQresultMemorySize" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQresultMemorySize" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQresultMemorySize" >&6; } if test "x$ac_cv_lib_pq_PQresultMemorySize" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PG_RESULT_MEMORY_SIZE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PG_RESULT_MEMORY_SIZE 1" >>confdefs.h else case e in #( @@ -60783,7 +60423,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQchangePassword in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQchangePassword in -lpq" >&5 printf %s "checking for PQchangePassword in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQchangePassword+y} then : @@ -60824,15 +60464,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQchangePassword" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQchangePassword" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQchangePassword" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQchangePassword" >&6; } if test "x$ac_cv_lib_pq_PQchangePassword" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PG_CHANGE_PASSWORD 1" >>confdefs.h +printf '%s\n' "#define HAVE_PG_CHANGE_PASSWORD 1" >>confdefs.h else case e in #( @@ -60963,7 +60603,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQsocketPoll in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQsocketPoll in -lpq" >&5 printf %s "checking for PQsocketPoll in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQsocketPoll+y} then : @@ -61004,15 +60644,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQsocketPoll" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQsocketPoll" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQsocketPoll" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQsocketPoll" >&6; } if test "x$ac_cv_lib_pq_PQsocketPoll" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PG_SOCKET_POLL 1" >>confdefs.h +printf '%s\n' "#define HAVE_PG_SOCKET_POLL 1" >>confdefs.h else case e in #( @@ -61031,7 +60671,7 @@ ac_fn_check_decl "$LINENO" "PGRES_TUPLES_CHUNK" "ac_cv_have_decl_PGRES_TUPLES_CHUNK" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_PGRES_TUPLES_CHUNK" = xyes then : ac_have_decl=1 @@ -61039,7 +60679,7 @@ e) ac_have_decl=0 ;; esac fi -printf "%s\n" "#define HAVE_DECL_PGRES_TUPLES_CHUNK $ac_have_decl" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_PGRES_TUPLES_CHUNK $ac_have_decl" >>confdefs.h if test $ac_have_decl = 1 then : @@ -61160,7 +60800,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PQsetChunkedRowsMode in -lpq" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for PQsetChunkedRowsMode in -lpq" >&5 printf %s "checking for PQsetChunkedRowsMode in -lpq... " >&6; } if test ${ac_cv_lib_pq_PQsetChunkedRowsMode+y} then : @@ -61201,15 +60841,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQsetChunkedRowsMode" >&5 -printf "%s\n" "$ac_cv_lib_pq_PQsetChunkedRowsMode" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQsetChunkedRowsMode" >&5 +printf '%s\n' "$ac_cv_lib_pq_PQsetChunkedRowsMode" >&6; } if test "x$ac_cv_lib_pq_PQsetChunkedRowsMode" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PG_SET_CHUNKED_ROWS_SIZE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PG_SET_CHUNKED_ROWS_SIZE 1" >>confdefs.h else case e in #( @@ -61225,7 +60865,7 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if PGVerbosity enum has PQERRORS_SQLSTATE" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if PGVerbosity enum has PQERRORS_SQLSTATE" >&5 printf %s "checking if PGVerbosity enum has PQERRORS_SQLSTATE... " >&6; } if test ${php_cv_enum_pgverbosity_pqerrors_sqlstate+y} then : @@ -61252,12 +60892,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_enum_pgverbosity_pqerrors_sqlstate" >&5 -printf "%s\n" "$php_cv_enum_pgverbosity_pqerrors_sqlstate" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_enum_pgverbosity_pqerrors_sqlstate" >&5 +printf '%s\n' "$php_cv_enum_pgverbosity_pqerrors_sqlstate" >&6; } if test "x$php_cv_enum_pgverbosity_pqerrors_sqlstate" = xyes then : -printf "%s\n" "#define HAVE_PQERRORS_SQLSTATE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PQERRORS_SQLSTATE 1" >>confdefs.h fi @@ -61398,7 +61038,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PGSQL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PGSQL 1" >>confdefs.h fi fi @@ -61543,7 +61183,7 @@ php_enable_phar=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for phar archive support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for phar archive support" >&5 printf %s "checking for phar archive support... " >&6; } # Check whether --enable-phar was given. if test ${enable_phar+y} @@ -61580,8 +61220,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -61722,7 +61362,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_PHAR 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_PHAR 1" >>confdefs.h fi fi @@ -61841,25 +61481,25 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for phar openssl support" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for phar openssl support" >&5 printf %s "checking for phar openssl support... " >&6; } if test "x$PHP_OPENSSL_SHARED" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (shared openssl)" >&5 -printf "%s\n" "no (shared openssl)" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no (shared openssl)" >&5 +printf '%s\n' "no (shared openssl)" >&6; } else case e in #( e) if test "x$PHP_OPENSSL" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } -printf "%s\n" "#define PHAR_HAVE_OPENSSL 1" >>confdefs.h +printf '%s\n' "#define PHAR_HAVE_OPENSSL 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi ;; esac @@ -61937,7 +61577,7 @@ php_enable_posix=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable POSIX-like functions" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable POSIX-like functions" >&5 printf %s "checking whether to enable POSIX-like functions... " >&6; } # Check whether --enable-posix was given. if test ${enable_posix+y} @@ -61974,15 +61614,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_POSIX" = "yes"; then -printf "%s\n" "#define HAVE_POSIX 1" >>confdefs.h +printf '%s\n' "#define HAVE_POSIX 1" >>confdefs.h ext_builddir=ext/posix @@ -62119,7 +61759,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_POSIX 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_POSIX 1" >>confdefs.h fi fi @@ -62241,85 +61881,85 @@ ac_fn_c_check_func "$LINENO" "ctermid" "ac_cv_func_ctermid" if test "x$ac_cv_func_ctermid" = xyes then : - printf "%s\n" "#define HAVE_CTERMID 1" >>confdefs.h + printf '%s\n' "#define HAVE_CTERMID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" if test "x$ac_cv_func_eaccess" = xyes then : - printf "%s\n" "#define HAVE_EACCESS 1" >>confdefs.h + printf '%s\n' "#define HAVE_EACCESS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getgrgid_r" "ac_cv_func_getgrgid_r" if test "x$ac_cv_func_getgrgid_r" = xyes then : - printf "%s\n" "#define HAVE_GETGRGID_R 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETGRGID_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" if test "x$ac_cv_func_getgroups" = xyes then : - printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETGROUPS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpgid" "ac_cv_func_getpgid" if test "x$ac_cv_func_getpgid" = xyes then : - printf "%s\n" "#define HAVE_GETPGID 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPGID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" if test "x$ac_cv_func_getrlimit" = xyes then : - printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETRLIMIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getsid" "ac_cv_func_getsid" if test "x$ac_cv_func_getsid" = xyes then : - printf "%s\n" "#define HAVE_GETSID 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETSID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups" if test "x$ac_cv_func_initgroups" = xyes then : - printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h + printf '%s\n' "#define HAVE_INITGROUPS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" if test "x$ac_cv_func_mkfifo" = xyes then : - printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h + printf '%s\n' "#define HAVE_MKFIFO 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mknod" "ac_cv_func_mknod" if test "x$ac_cv_func_mknod" = xyes then : - printf "%s\n" "#define HAVE_MKNOD 1" >>confdefs.h + printf '%s\n' "#define HAVE_MKNOD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" if test "x$ac_cv_func_setegid" = xyes then : - printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETEGID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" if test "x$ac_cv_func_seteuid" = xyes then : - printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETEUID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" if test "x$ac_cv_func_setrlimit" = xyes then : - printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETRLIMIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid" if test "x$ac_cv_func_setsid" = xyes then : - printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h + printf '%s\n' "#define HAVE_SETSID 1" >>confdefs.h fi @@ -62330,7 +61970,7 @@ ac_fn_c_check_func "$LINENO" "makedev" "ac_cv_func_makedev" if test "x$ac_cv_func_makedev" = xyes then : - printf "%s\n" "#define HAVE_MAKEDEV 1" >>confdefs.h + printf '%s\n' "#define HAVE_MAKEDEV 1" >>confdefs.h else case e in #( e) ac_fn_check_decl "$LINENO" "makedev" "ac_cv_have_decl_makedev" " @@ -62341,10 +61981,10 @@ # include #endif -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_makedev" = xyes then : - printf "%s\n" "#define HAVE_MAKEDEV 1" >>confdefs.h + printf '%s\n' "#define HAVE_MAKEDEV 1" >>confdefs.h fi ;; esac @@ -62359,20 +61999,20 @@ e) ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf" if test "x$ac_cv_func_pathconf" = xyes then : - printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h + printf '%s\n' "#define HAVE_PATHCONF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fpathconf" "ac_cv_func_fpathconf" if test "x$ac_cv_func_fpathconf" = xyes then : - printf "%s\n" "#define HAVE_FPATHCONF 1" >>confdefs.h + printf '%s\n' "#define HAVE_FPATHCONF 1" >>confdefs.h fi ;; esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working ttyname_r() implementation" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working ttyname_r() implementation" >&5 printf %s "checking for working ttyname_r() implementation... " >&6; } if test ${php_cv_func_ttyname_r+y} then : @@ -62418,16 +62058,16 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_ttyname_r" >&5 -printf "%s\n" "$php_cv_func_ttyname_r" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_ttyname_r" >&5 +printf '%s\n' "$php_cv_func_ttyname_r" >&6; } if test "x$php_cv_func_ttyname_r" = xyes then : -printf "%s\n" "#define HAVE_TTYNAME_R 1" >>confdefs.h +printf '%s\n' "#define HAVE_TTYNAME_R 1" >>confdefs.h else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: posix_ttyname() will be thread-unsafe" >&5 -printf "%s\n" "$as_me: posix_ttyname() will be thread-unsafe" >&6;} ;; + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: posix_ttyname() will be thread-unsafe" >&5 +printf '%s\n' "$as_me: posix_ttyname() will be thread-unsafe" >&6;} ;; esac fi @@ -62441,7 +62081,7 @@ if test "x$ac_cv_member_struct_utsname_domainname" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_UTSNAME_DOMAINNAME 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_UTSNAME_DOMAINNAME 1" >>confdefs.h fi @@ -62451,11 +62091,11 @@ -ac_fn_check_decl "$LINENO" "arc4random_buf" "ac_cv_have_decl_arc4random_buf" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +ac_fn_check_decl "$LINENO" "arc4random_buf" "ac_cv_have_decl_arc4random_buf" "$ac_includes_default" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_arc4random_buf" = xyes then : -printf "%s\n" "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h +printf '%s\n' "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h fi @@ -62466,7 +62106,7 @@ " if test "x$ac_cv_header_CommonCrypto_CommonRandom_h" = xyes then : - printf "%s\n" "#define HAVE_COMMONCRYPTO_COMMONRANDOM_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_COMMONCRYPTO_COMMONRANDOM_H 1" >>confdefs.h fi @@ -62474,7 +62114,7 @@ ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" if test "x$ac_cv_func_getrandom" = xyes then : - printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETRANDOM 1" >>confdefs.h fi @@ -62614,7 +62254,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_RANDOM 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_RANDOM 1" >>confdefs.h fi fi @@ -62756,7 +62396,7 @@ php_with_libedit=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libedit readline replacement" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libedit readline replacement" >&5 printf %s "checking for libedit readline replacement... " >&6; } # Check whether --with-libedit was given. @@ -62794,8 +62434,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -62804,7 +62444,7 @@ php_with_readline=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for readline support" >&5 printf %s "checking for readline support... " >&6; } # Check whether --with-readline was given. @@ -62842,8 +62482,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -62900,7 +62540,7 @@ PHP_READLINE_LIBS="" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 printf %s "checking for tgetent in -lncurses... " >&6; } if test ${ac_cv_lib_ncurses_tgetent+y} then : @@ -62941,8 +62581,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 -printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +printf '%s\n' "$ac_cv_lib_ncurses_tgetent" >&6; } if test "x$ac_cv_lib_ncurses_tgetent" = xyes then : @@ -62972,7 +62612,7 @@ PHP_READLINE_LIBS="$PHP_READLINE_LIBS -lncurses" else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 printf %s "checking for tgetent in -ltermcap... " >&6; } if test ${ac_cv_lib_termcap_tgetent+y} then : @@ -63013,8 +62653,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 -printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +printf '%s\n' "$ac_cv_lib_termcap_tgetent" >&6; } if test "x$ac_cv_lib_termcap_tgetent" = xyes then : @@ -63168,7 +62808,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 printf %s "checking for readline in -lreadline... " >&6; } if test ${ac_cv_lib_readline_readline+y} then : @@ -63209,8 +62849,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 -printf "%s\n" "$ac_cv_lib_readline_readline" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 +printf '%s\n' "$ac_cv_lib_readline_readline" >&6; } if test "x$ac_cv_lib_readline_readline" = xyes then : @@ -63327,8 +62967,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_readline_readline - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The readline library not found. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -63454,7 +63094,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_callback_read_char in -lreadline" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for rl_callback_read_char in -lreadline" >&5 printf %s "checking for rl_callback_read_char in -lreadline... " >&6; } if test ${ac_cv_lib_readline_rl_callback_read_char+y} then : @@ -63495,14 +63135,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_callback_read_char" >&5 -printf "%s\n" "$ac_cv_lib_readline_rl_callback_read_char" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_callback_read_char" >&5 +printf '%s\n' "$ac_cv_lib_readline_rl_callback_read_char" >&6; } if test "x$ac_cv_lib_readline_rl_callback_read_char" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared - printf "%s\n" "#define HAVE_RL_CALLBACK_READ_CHAR 1" >>confdefs.h + printf '%s\n' "#define HAVE_RL_CALLBACK_READ_CHAR 1" >>confdefs.h else case e in #( @@ -63634,7 +63274,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_on_new_line in -lreadline" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for rl_on_new_line in -lreadline" >&5 printf %s "checking for rl_on_new_line in -lreadline... " >&6; } if test ${ac_cv_lib_readline_rl_on_new_line+y} then : @@ -63675,14 +63315,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_on_new_line" >&5 -printf "%s\n" "$ac_cv_lib_readline_rl_on_new_line" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_on_new_line" >&5 +printf '%s\n' "$ac_cv_lib_readline_rl_on_new_line" >&6; } if test "x$ac_cv_lib_readline_rl_on_new_line" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared - printf "%s\n" "#define HAVE_RL_ON_NEW_LINE 1" >>confdefs.h + printf '%s\n' "#define HAVE_RL_ON_NEW_LINE 1" >>confdefs.h else case e in #( @@ -63814,7 +63454,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5 printf %s "checking for rl_completion_matches in -lreadline... " >&6; } if test ${ac_cv_lib_readline_rl_completion_matches+y} then : @@ -63855,14 +63495,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 -printf "%s\n" "$ac_cv_lib_readline_rl_completion_matches" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 +printf '%s\n' "$ac_cv_lib_readline_rl_completion_matches" >&6; } if test "x$ac_cv_lib_readline_rl_completion_matches" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared - printf "%s\n" "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h + printf '%s\n' "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h else case e in #( @@ -63887,13 +63527,13 @@ #include #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_rl_pending_input" = xyes then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? " Invalid readline installation detected. Try --with-libedit instead. @@ -63905,20 +63545,20 @@ #include #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_rl_erase_empty_line" = xyes then : - printf "%s\n" "#define HAVE_ERASE_EMPTY_LINE 1" >>confdefs.h + printf '%s\n' "#define HAVE_ERASE_EMPTY_LINE 1" >>confdefs.h fi CFLAGS=$CFLAGS_SAVE LDFLAGS=$LDFLAGS_SAVE LIBS=$LIBS_SAVE - printf "%s\n" "#define HAVE_HISTORY_LIST 1" >>confdefs.h + printf '%s\n' "#define HAVE_HISTORY_LIST 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBREADLINE 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBREADLINE 1" >>confdefs.h elif test "$PHP_LIBEDIT" != "no"; then @@ -63926,10 +63566,10 @@ then : else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The libedit directory argument is not supported anymore, rely on pkg-config. + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The libedit directory argument is not supported anymore, rely on pkg-config. Replace '--with-libedit=$PHP_LIBEDIT' with '--with-libedit' and use environment variables 'PKG_CONFIG_PATH', 'EDIT_LIBS', or 'EDIT_CFLAGS'." >&5 -printf "%s\n" "$as_me: WARNING: The libedit directory argument is not supported anymore, rely on pkg-config. +printf '%s\n' "$as_me: WARNING: The libedit directory argument is not supported anymore, rely on pkg-config. Replace '--with-libedit=$PHP_LIBEDIT' with '--with-libedit' and use environment variables 'PKG_CONFIG_PATH', 'EDIT_LIBS', or 'EDIT_CFLAGS'." >&2;} ;; esac @@ -63937,17 +63577,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libedit" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libedit" >&5 printf %s "checking for libedit... " >&6; } if test -n "$EDIT_CFLAGS"; then pkg_cv_EDIT_CFLAGS="$EDIT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 ($PKG_CONFIG --exists --print-errors "libedit") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EDIT_CFLAGS=`$PKG_CONFIG --cflags "libedit" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -63961,10 +63601,10 @@ pkg_cv_EDIT_LIBS="$EDIT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 ($PKG_CONFIG --exists --print-errors "libedit") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EDIT_LIBS=`$PKG_CONFIG --libs "libedit" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -63978,8 +63618,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -64005,10 +63645,10 @@ and EDIT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -64022,8 +63662,8 @@ else EDIT_CFLAGS=$pkg_cv_EDIT_CFLAGS EDIT_LIBS=$pkg_cv_EDIT_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -64182,7 +63822,7 @@ done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 printf %s "checking for tgetent in -lncurses... " >&6; } if test ${ac_cv_lib_ncurses_tgetent+y} then : @@ -64223,8 +63863,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 -printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +printf '%s\n' "$ac_cv_lib_ncurses_tgetent" >&6; } if test "x$ac_cv_lib_ncurses_tgetent" = xyes then : @@ -64251,7 +63891,7 @@ else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 printf %s "checking for tgetent in -ltermcap... " >&6; } if test ${ac_cv_lib_termcap_tgetent+y} then : @@ -64292,8 +63932,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 -printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +printf '%s\n' "$ac_cv_lib_termcap_tgetent" >&6; } if test "x$ac_cv_lib_termcap_tgetent" = xyes then : @@ -64443,7 +64083,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -ledit" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for readline in -ledit" >&5 printf %s "checking for readline in -ledit... " >&6; } if test ${ac_cv_lib_edit_readline+y} then : @@ -64484,8 +64124,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_readline" >&5 -printf "%s\n" "$ac_cv_lib_edit_readline" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_readline" >&5 +printf '%s\n' "$ac_cv_lib_edit_readline" >&6; } if test "x$ac_cv_lib_edit_readline" = xyes then : @@ -64498,8 +64138,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_edit_readline - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The edit library required by readline extension not found. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -64625,7 +64265,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_callback_read_char in -ledit" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for rl_callback_read_char in -ledit" >&5 printf %s "checking for rl_callback_read_char in -ledit... " >&6; } if test ${ac_cv_lib_edit_rl_callback_read_char+y} then : @@ -64666,15 +64306,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_rl_callback_read_char" >&5 -printf "%s\n" "$ac_cv_lib_edit_rl_callback_read_char" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_rl_callback_read_char" >&5 +printf '%s\n' "$ac_cv_lib_edit_rl_callback_read_char" >&6; } if test "x$ac_cv_lib_edit_rl_callback_read_char" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_RL_CALLBACK_READ_CHAR 1" >>confdefs.h +printf '%s\n' "#define HAVE_RL_CALLBACK_READ_CHAR 1" >>confdefs.h else case e in #( @@ -64806,7 +64446,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_on_new_line in -ledit" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for rl_on_new_line in -ledit" >&5 printf %s "checking for rl_on_new_line in -ledit... " >&6; } if test ${ac_cv_lib_edit_rl_on_new_line+y} then : @@ -64847,15 +64487,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_rl_on_new_line" >&5 -printf "%s\n" "$ac_cv_lib_edit_rl_on_new_line" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_rl_on_new_line" >&5 +printf '%s\n' "$ac_cv_lib_edit_rl_on_new_line" >&6; } if test "x$ac_cv_lib_edit_rl_on_new_line" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_RL_ON_NEW_LINE 1" >>confdefs.h +printf '%s\n' "#define HAVE_RL_ON_NEW_LINE 1" >>confdefs.h else case e in #( @@ -64987,7 +64627,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -ledit" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -ledit" >&5 printf %s "checking for rl_completion_matches in -ledit... " >&6; } if test ${ac_cv_lib_edit_rl_completion_matches+y} then : @@ -65028,15 +64668,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_rl_completion_matches" >&5 -printf "%s\n" "$ac_cv_lib_edit_rl_completion_matches" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_rl_completion_matches" >&5 +printf '%s\n' "$ac_cv_lib_edit_rl_completion_matches" >&6; } if test "x$ac_cv_lib_edit_rl_completion_matches" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h +printf '%s\n' "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h else case e in #( @@ -65168,7 +64808,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for history_list in -ledit" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for history_list in -ledit" >&5 printf %s "checking for history_list in -ledit... " >&6; } if test ${ac_cv_lib_edit_history_list+y} then : @@ -65209,15 +64849,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_history_list" >&5 -printf "%s\n" "$ac_cv_lib_edit_history_list" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_history_list" >&5 +printf '%s\n' "$ac_cv_lib_edit_history_list" >&6; } if test "x$ac_cv_lib_edit_history_list" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_HISTORY_LIST 1" >>confdefs.h +printf '%s\n' "#define HAVE_HISTORY_LIST 1" >>confdefs.h else case e in #( @@ -65236,18 +64876,18 @@ CFLAGS="$CFLAGS $EDIT_CFLAGS" LIBS="$LIBS $EDIT_LIBS" ac_fn_check_decl "$LINENO" "rl_erase_empty_line" "ac_cv_have_decl_rl_erase_empty_line" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_rl_erase_empty_line" = xyes then : -printf "%s\n" "#define HAVE_ERASE_EMPTY_LINE 1" >>confdefs.h +printf '%s\n' "#define HAVE_ERASE_EMPTY_LINE 1" >>confdefs.h fi CFLAGS=$CFLAGS_SAVE LIBS=$LIBS_SAVE -printf "%s\n" "#define HAVE_LIBEDIT 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBEDIT 1" >>confdefs.h fi @@ -65387,7 +65027,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_READLINE 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_READLINE 1" >>confdefs.h fi fi @@ -65648,7 +65288,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_REFLECTION 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_REFLECTION 1" >>confdefs.h fi fi @@ -65773,7 +65413,7 @@ php_enable_session=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable PHP sessions" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable PHP sessions" >&5 printf %s "checking whether to enable PHP sessions... " >&6; } # Check whether --enable-session was given. if test ${enable_session+y} @@ -65810,8 +65450,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -65819,7 +65459,7 @@ php_with_mm=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mm support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for mm support" >&5 printf %s "checking for mm support... " >&6; } # Check whether --with-mm was given. @@ -65836,15 +65476,15 @@ ext_output=$PHP_MM -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_SESSION" != "no"; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pwrite works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether pwrite works" >&5 printf %s "checking whether pwrite works... " >&6; } if test ${php_cv_func_pwrite+y} then : @@ -65941,8 +65581,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_pwrite" >&5 -printf "%s\n" "$php_cv_func_pwrite" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_pwrite" >&5 +printf '%s\n' "$php_cv_func_pwrite" >&6; } if test "x$php_cv_func_pwrite" = xno then : @@ -65950,12 +65590,12 @@ else case e in #( e) -printf "%s\n" "#define HAVE_PWRITE 1" >>confdefs.h +printf '%s\n' "#define HAVE_PWRITE 1" >>confdefs.h if test "x$php_cv_func_pwrite" = x64 then : -printf "%s\n" "#define PHP_PWRITE_64 1" >>confdefs.h +printf '%s\n' "#define PHP_PWRITE_64 1" >>confdefs.h fi ;; @@ -65963,7 +65603,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pread works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether pread works" >&5 printf %s "checking whether pread works... " >&6; } if test ${php_cv_func_pread+y} then : @@ -66062,8 +65702,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_pread" >&5 -printf "%s\n" "$php_cv_func_pread" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_pread" >&5 +printf '%s\n' "$php_cv_func_pread" >&6; } if test "x$php_cv_func_pread" = xno then : @@ -66071,12 +65711,12 @@ else case e in #( e) -printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h +printf '%s\n' "#define HAVE_PREAD 1" >>confdefs.h if test "x$php_cv_func_pread" = x64 then : -printf "%s\n" "#define PHP_PREAD_64 1" >>confdefs.h +printf '%s\n' "#define PHP_PREAD_64 1" >>confdefs.h fi ;; @@ -66218,7 +65858,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SESSION 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SESSION 1" >>confdefs.h fi fi @@ -66397,7 +66037,7 @@ -printf "%s\n" "#define HAVE_PHP_SESSION 1" >>confdefs.h +printf '%s\n' "#define HAVE_PHP_SESSION 1" >>confdefs.h if test "x$PHP_MM" = xno @@ -66582,7 +66222,7 @@ -printf "%s\n" "#define HAVE_LIBMM 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBMM 1" >>confdefs.h ;; esac @@ -66595,7 +66235,7 @@ php_enable_shmop=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable shmop support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable shmop support" >&5 printf %s "checking whether to enable shmop support... " >&6; } # Check whether --enable-shmop was given. if test ${enable_shmop+y} @@ -66632,15 +66272,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_SHMOP" != "no"; then -printf "%s\n" "#define HAVE_SHMOP 1" >>confdefs.h +printf '%s\n' "#define HAVE_SHMOP 1" >>confdefs.h ext_builddir=ext/shmop @@ -66777,7 +66417,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SHMOP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SHMOP 1" >>confdefs.h fi fi @@ -66903,7 +66543,7 @@ php_enable_simplexml=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable SimpleXML support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable SimpleXML support" >&5 printf %s "checking whether to enable SimpleXML support... " >&6; } # Check whether --enable-simplexml was given. if test ${enable_simplexml+y} @@ -66940,8 +66580,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -66950,17 +66590,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -66974,10 +66614,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -66991,8 +66631,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -67018,10 +66658,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -67035,8 +66675,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -67196,7 +66836,7 @@ -printf "%s\n" "#define HAVE_SIMPLEXML 1" >>confdefs.h +printf '%s\n' "#define HAVE_SIMPLEXML 1" >>confdefs.h ext_builddir=ext/simplexml @@ -67333,7 +66973,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SIMPLEXML 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SIMPLEXML 1" >>confdefs.h fi fi @@ -67519,7 +67159,7 @@ php_with_snmp=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SNMP support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SNMP support" >&5 printf %s "checking for SNMP support... " >&6; } # Check whether --with-snmp was given. @@ -67557,8 +67197,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -67569,17 +67209,17 @@ then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for netsnmp >= 5.3" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for netsnmp >= 5.3" >&5 printf %s "checking for netsnmp >= 5.3... " >&6; } if test -n "$SNMP_CFLAGS"; then pkg_cv_SNMP_CFLAGS="$SNMP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"netsnmp >= 5.3\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"netsnmp >= 5.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "netsnmp >= 5.3") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SNMP_CFLAGS=`$PKG_CONFIG --cflags "netsnmp >= 5.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -67593,10 +67233,10 @@ pkg_cv_SNMP_LIBS="$SNMP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"netsnmp >= 5.3\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"netsnmp >= 5.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "netsnmp >= 5.3") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SNMP_LIBS=`$PKG_CONFIG --libs "netsnmp >= 5.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -67610,8 +67250,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -67628,14 +67268,14 @@ : elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } : else SNMP_CFLAGS=$pkg_cv_SNMP_CFLAGS SNMP_LIBS=$pkg_cv_SNMP_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } snmp_found=yes fi fi @@ -67647,7 +67287,7 @@ then : # Extract the first word of "net-snmp-config", so it can be a program name with args. set dummy net-snmp-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_SNMP_CONFIG+y} then : @@ -67671,7 +67311,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_SNMP_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -67684,11 +67324,11 @@ fi SNMP_CONFIG=$ac_cv_path_SNMP_CONFIG if test -n "$SNMP_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SNMP_CONFIG" >&5 -printf "%s\n" "$SNMP_CONFIG" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $SNMP_CONFIG" >&5 +printf '%s\n' "$SNMP_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -68005,8 +67645,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$SNMP_LIBNAME""_init_snmp" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for init_snmp in -l$SNMP_LIBNAME" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$SNMP_LIBNAME""_init_snmp" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for init_snmp in -l$SNMP_LIBNAME" >&5 printf %s "checking for init_snmp in -l$SNMP_LIBNAME... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -68048,15 +67688,15 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SNMP 1" >>confdefs.h +printf '%s\n' "#define HAVE_SNMP 1" >>confdefs.h else case e in #( @@ -68064,8 +67704,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_$SNMP_LIBNAME_init_snmp - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "SNMP sanity check failed. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -68191,8 +67831,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$SNMP_LIBNAME""_shutdown_snmp_logging" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shutdown_snmp_logging in -l$SNMP_LIBNAME" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$SNMP_LIBNAME""_shutdown_snmp_logging" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shutdown_snmp_logging in -l$SNMP_LIBNAME" >&5 printf %s "checking for shutdown_snmp_logging in -l$SNMP_LIBNAME... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -68234,15 +67874,15 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SHUTDOWN_SNMP_LOGGING 1" >>confdefs.h +printf '%s\n' "#define HAVE_SHUTDOWN_SNMP_LOGGING 1" >>confdefs.h else case e in #( @@ -68265,11 +67905,11 @@ #include #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_usmHMAC192SHA256AuthProtocol" = xyes then : -printf "%s\n" "#define HAVE_SNMP_SHA256 1" >>confdefs.h +printf '%s\n' "#define HAVE_SNMP_SHA256 1" >>confdefs.h fi @@ -68277,11 +67917,11 @@ #include #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_usmHMAC384SHA512AuthProtocol" = xyes then : -printf "%s\n" "#define HAVE_SNMP_SHA512 1" >>confdefs.h +printf '%s\n' "#define HAVE_SNMP_SHA512 1" >>confdefs.h fi @@ -68423,7 +68063,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SNMP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SNMP 1" >>confdefs.h fi fi @@ -68571,7 +68211,7 @@ php_enable_soap=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable SOAP support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable SOAP support" >&5 printf %s "checking whether to enable SOAP support... " >&6; } # Check whether --enable-soap was given. if test ${enable_soap+y} @@ -68608,8 +68248,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -68618,17 +68258,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -68642,10 +68282,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -68659,8 +68299,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -68686,10 +68326,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -68703,8 +68343,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -68864,7 +68504,7 @@ -printf "%s\n" "#define HAVE_SOAP 1" >>confdefs.h +printf '%s\n' "#define HAVE_SOAP 1" >>confdefs.h ext_builddir=ext/soap @@ -69001,7 +68641,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SOAP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SOAP 1" >>confdefs.h fi fi @@ -69208,7 +68848,7 @@ php_enable_sockets=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable sockets support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable sockets support" >&5 printf %s "checking whether to enable sockets support... " >&6; } # Check whether --enable-sockets was given. if test ${enable_sockets+y} @@ -69245,8 +68885,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -69255,43 +68895,43 @@ ac_fn_c_check_func "$LINENO" "hstrerror" "ac_cv_func_hstrerror" if test "x$ac_cv_func_hstrerror" = xyes then : - printf "%s\n" "#define HAVE_HSTRERROR 1" >>confdefs.h + printf '%s\n' "#define HAVE_HSTRERROR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex" if test "x$ac_cv_func_if_nametoindex" = xyes then : - printf "%s\n" "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h + printf '%s\n' "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "if_indextoname" "ac_cv_func_if_indextoname" if test "x$ac_cv_func_if_indextoname" = xyes then : - printf "%s\n" "#define HAVE_IF_INDEXTONAME 1" >>confdefs.h + printf '%s\n' "#define HAVE_IF_INDEXTONAME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sockatmark" "ac_cv_func_sockatmark" if test "x$ac_cv_func_sockatmark" = xyes then : - printf "%s\n" "#define HAVE_SOCKATMARK 1" >>confdefs.h + printf '%s\n' "#define HAVE_SOCKATMARK 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" "$ac_includes_default" if test "x$ac_cv_header_sys_sockio_h" = xyes then : - printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/filter.h" "ac_cv_header_linux_filter_h" "$ac_includes_default" if test "x$ac_cv_header_linux_filter_h" = xyes then : - printf "%s\n" "#define HAVE_LINUX_FILTER_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_LINUX_FILTER_H 1" >>confdefs.h fi -printf "%s\n" "#define HAVE_SOCKETS 1" >>confdefs.h +printf '%s\n' "#define HAVE_SOCKETS 1" >>confdefs.h ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_family" "ac_cv_member_struct_sockaddr_storage_ss_family" "#include @@ -69299,7 +68939,7 @@ if test "x$ac_cv_member_struct_sockaddr_storage_ss_family" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1" >>confdefs.h fi @@ -69315,7 +68955,7 @@ if test "x$ac_cv_type_struct_ucred" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_UCRED 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_UCRED 1" >>confdefs.h fi @@ -69326,7 +68966,7 @@ if test "x$ac_cv_type_struct_cmsgcred" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_CMSGCRED 1" >>confdefs.h +printf '%s\n' "#define HAVE_STRUCT_CMSGCRED 1" >>confdefs.h fi @@ -69475,7 +69115,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SOCKETS 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SOCKETS 1" >>confdefs.h fi fi @@ -69618,7 +69258,7 @@ php_with_sodium=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sodium support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for sodium support" >&5 printf %s "checking for sodium support... " >&6; } # Check whether --with-sodium was given. @@ -69656,8 +69296,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -69665,17 +69305,17 @@ if test "$PHP_SODIUM" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsodium >= 1.0.8" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libsodium >= 1.0.8" >&5 printf %s "checking for libsodium >= 1.0.8... " >&6; } if test -n "$LIBSODIUM_CFLAGS"; then pkg_cv_LIBSODIUM_CFLAGS="$LIBSODIUM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsodium >= 1.0.8\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsodium >= 1.0.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsodium >= 1.0.8") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSODIUM_CFLAGS=`$PKG_CONFIG --cflags "libsodium >= 1.0.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -69689,10 +69329,10 @@ pkg_cv_LIBSODIUM_LIBS="$LIBSODIUM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsodium >= 1.0.8\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsodium >= 1.0.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsodium >= 1.0.8") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSODIUM_LIBS=`$PKG_CONFIG --libs "libsodium >= 1.0.8" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -69706,8 +69346,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -69733,10 +69373,10 @@ and LIBSODIUM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -69750,8 +69390,8 @@ else LIBSODIUM_CFLAGS=$pkg_cv_LIBSODIUM_CFLAGS LIBSODIUM_LIBS=$pkg_cv_LIBSODIUM_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -69912,7 +69552,7 @@ -printf "%s\n" "#define HAVE_LIBSODIUMLIB 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSODIUMLIB 1" >>confdefs.h SODIUM_COMPILER_FLAGS=$LIBSODIUM_CFLAGS @@ -69921,7 +69561,7 @@ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : @@ -69931,32 +69571,25 @@ then : else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi ;; + e) ac_cv_sizeof_long=0 ;; esac fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf '%s\n' "$ac_cv_sizeof_long" >&6; } -printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h +printf '%s\n' "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h if test "$ac_cv_sizeof_long" -eq 4 then : SODIUM_COMPILER_FLAGS="$SODIUM_COMPILER_FLAGS -Wno-type-limits" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-logical-op" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-logical-op" >&5 printf %s "checking whether the C compiler accepts -Wno-logical-op... " >&6; } if test ${ax_cv_check_cflags__Werror__Wno_logical_op+y} then : @@ -69987,8 +69620,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_logical_op" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wno_logical_op" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_logical_op" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wno_logical_op" >&6; } if test "x$ax_cv_check_cflags__Werror__Wno_logical_op" = xyes then : SODIUM_COMPILER_FLAGS="$SODIUM_COMPILER_FLAGS -Wno-logical-op" @@ -70135,7 +69768,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SODIUM 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SODIUM 1" >>confdefs.h fi fi @@ -70413,7 +70046,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SPL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SPL 1" >>confdefs.h fi fi @@ -70609,7 +70242,7 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether flush should be called explicitly after a buffered io" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether flush should be called explicitly after a buffered io" >&5 printf %s "checking whether flush should be called explicitly after a buffered io... " >&6; } if test ${php_cv_have_flush_io+y} then : @@ -70695,19 +70328,19 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_flush_io" >&5 -printf "%s\n" "$php_cv_have_flush_io" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_flush_io" >&5 +printf '%s\n' "$php_cv_have_flush_io" >&6; } if test "x$php_cv_have_flush_io" = xyes then : -printf "%s\n" "#define HAVE_FLUSHIO 1" >>confdefs.h +printf '%s\n' "#define HAVE_FLUSHIO 1" >>confdefs.h fi php_with_external_libcrypt=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for external libcrypt or libxcrypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for external libcrypt or libxcrypt" >&5 printf %s "checking for external libcrypt or libxcrypt... " >&6; } # Check whether --with-external-libcrypt was given. @@ -70724,8 +70357,8 @@ ext_output=$PHP_EXTERNAL_LIBCRYPT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -70736,13 +70369,13 @@ if test "x$PHP_EXTERNAL_LIBCRYPT" = xno then : - printf "%s\n" "#define PHP_USE_PHP_CRYPT_R 1" >>confdefs.h + printf '%s\n' "#define PHP_USE_PHP_CRYPT_R 1" >>confdefs.h php_ext_standard_sources=" crypt_blowfish.c crypt_freesec.c crypt_sha256.c crypt_sha512.c php_crypt_r.c " else case e in #( e) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 printf %s "checking for library containing crypt... " >&6; } if test ${ac_cv_search_crypt+y} then : @@ -70800,25 +70433,25 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5 -printf "%s\n" "$ac_cv_search_crypt" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5 +printf '%s\n' "$ac_cv_search_crypt" >&6; } ac_res=$ac_cv_search_crypt if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -printf "%s\n" "#define HAVE_CRYPT 1" >>confdefs.h +printf '%s\n' "#define HAVE_CRYPT 1" >>confdefs.h else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot use external libcrypt as crypt() is missing. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5 printf %s "checking for library containing crypt_r... " >&6; } if test ${ac_cv_search_crypt_r+y} then : @@ -70876,25 +70509,25 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5 -printf "%s\n" "$ac_cv_search_crypt_r" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5 +printf '%s\n' "$ac_cv_search_crypt_r" >&6; } ac_res=$ac_cv_search_crypt_r if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -printf "%s\n" "#define HAVE_CRYPT_R 1" >>confdefs.h +printf '%s\n' "#define HAVE_CRYPT_R 1" >>confdefs.h else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot use external libcrypt as crypt_r() is missing. See 'config.log' for more details" "$LINENO" 5; } ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which data struct is used by crypt_r" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking which data struct is used by crypt_r" >&5 printf %s "checking which data struct is used by crypt_r... " >&6; } if test ${php_cv_crypt_r_style+y} then : @@ -71007,20 +70640,20 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_crypt_r_style" >&5 -printf "%s\n" "$php_cv_crypt_r_style" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_crypt_r_style" >&5 +printf '%s\n' "$php_cv_crypt_r_style" >&6; } if test "x$php_cv_crypt_r_style" = xcryptd then : -printf "%s\n" "#define CRYPT_R_CRYPTD 1" >>confdefs.h +printf '%s\n' "#define CRYPT_R_CRYPTD 1" >>confdefs.h fi case $php_cv_crypt_r_style in #( struct_crypt_data|struct_crypt_data_gnu_source) : -printf "%s\n" "#define CRYPT_R_STRUCT_CRYPT_DATA 1" >>confdefs.h +printf '%s\n' "#define CRYPT_R_STRUCT_CRYPT_DATA 1" >>confdefs.h ;; #( *) : ;; @@ -71029,14 +70662,14 @@ if test "x$php_cv_crypt_r_style" = xstruct_crypt_data_gnu_source then : -printf "%s\n" "#define CRYPT_R_GNU_SOURCE 1" >>confdefs.h +printf '%s\n' "#define CRYPT_R_GNU_SOURCE 1" >>confdefs.h fi if test "x$php_cv_crypt_r_style" = xnone then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Unable to detect data struct used by crypt_r. See 'config.log' for more details" "$LINENO" 5; } fi @@ -71044,12 +70677,12 @@ ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default" if test "x$ac_cv_header_crypt_h" = xyes then : - printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_CRYPT_H 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard DES crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard DES crypt" >&5 printf %s "checking for standard DES crypt... " >&6; } if test ${ac_cv_crypt_des+y} then : @@ -71092,10 +70725,10 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_des" >&5 -printf "%s\n" "$ac_cv_crypt_des" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_des" >&5 +printf '%s\n' "$ac_cv_crypt_des" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for extended DES crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for extended DES crypt" >&5 printf %s "checking for extended DES crypt... " >&6; } if test ${ac_cv_crypt_ext_des+y} then : @@ -71138,10 +70771,10 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_ext_des" >&5 -printf "%s\n" "$ac_cv_crypt_ext_des" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_ext_des" >&5 +printf '%s\n' "$ac_cv_crypt_ext_des" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MD5 crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for MD5 crypt" >&5 printf %s "checking for MD5 crypt... " >&6; } if test ${ac_cv_crypt_md5+y} then : @@ -71194,10 +70827,10 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_md5" >&5 -printf "%s\n" "$ac_cv_crypt_md5" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_md5" >&5 +printf '%s\n' "$ac_cv_crypt_md5" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Blowfish crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Blowfish crypt" >&5 printf %s "checking for Blowfish crypt... " >&6; } if test ${ac_cv_crypt_blowfish+y} then : @@ -71248,10 +70881,10 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_blowfish" >&5 -printf "%s\n" "$ac_cv_crypt_blowfish" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_blowfish" >&5 +printf '%s\n' "$ac_cv_crypt_blowfish" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SHA512 crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SHA512 crypt" >&5 printf %s "checking for SHA512 crypt... " >&6; } if test ${ac_cv_crypt_sha512+y} then : @@ -71300,10 +70933,10 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_sha512" >&5 -printf "%s\n" "$ac_cv_crypt_sha512" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_sha512" >&5 +printf '%s\n' "$ac_cv_crypt_sha512" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SHA256 crypt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SHA256 crypt" >&5 printf %s "checking for SHA256 crypt... " >&6; } if test ${ac_cv_crypt_sha256+y} then : @@ -71352,17 +70985,17 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_sha256" >&5 -printf "%s\n" "$ac_cv_crypt_sha256" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crypt_sha256" >&5 +printf '%s\n' "$ac_cv_crypt_sha256" >&6; } if test "$ac_cv_crypt_blowfish" = "no" || test "$ac_cv_crypt_des" = "no" || test "$ac_cv_crypt_ext_des" = "no" || test "$ac_cv_crypt_md5" = "no" || test "$ac_cv_crypt_sha512" = "no" || test "$ac_cv_crypt_sha256" = "no"; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot use external libcrypt as some algo are missing. See 'config.log' for more details" "$LINENO" 5; } fi - printf "%s\n" "#define PHP_USE_PHP_CRYPT_R 0" >>confdefs.h + printf '%s\n' "#define PHP_USE_PHP_CRYPT_R 0" >>confdefs.h ;; esac @@ -71372,19 +71005,19 @@ then : case $host_alias in #( *linux*) : - printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h + printf '%s\n' "#define HAVE_FNMATCH 1" >>confdefs.h ;; #( *) : ;; esac else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working POSIX fnmatch" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working POSIX fnmatch" >&5 printf %s "checking for working POSIX fnmatch... " >&6; } if test ${ac_cv_func_fnmatch_works+y} then : printf %s "(cached) " >&6 else case e in #( - e) # Some versions of Solaris, SCO, and the GNU C Library + e) # Some versions of Solaris and the GNU C Library # have a broken or incompatible fnmatch. # So we run a test program. If we are cross-compiling, take no chance. # Thanks to John Oleynick, François Pinard, and Paul Eggert for this test. @@ -71427,12 +71060,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fnmatch_works" >&5 -printf "%s\n" "$ac_cv_func_fnmatch_works" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fnmatch_works" >&5 +printf '%s\n' "$ac_cv_func_fnmatch_works" >&6; } if test $ac_cv_func_fnmatch_works = yes then : -printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_FNMATCH 1" >>confdefs.h fi @@ -71443,12 +71076,12 @@ for ac_func in fork CreateProcess do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` + as_ac_var=`printf '%s\n' "ac_cv_func_$ac_func" | sed "$as_sed_sh"` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +#define `printf '%s\n' "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF php_can_support_proc_open=yes; break; else case e in #( @@ -71457,16 +71090,16 @@ fi done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if your OS can spawn processes with inherited handles" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if your OS can spawn processes with inherited handles" >&5 printf %s "checking if your OS can spawn processes with inherited handles... " >&6; } if test "x$php_can_support_proc_open" = xyes then : -printf "%s\n" "#define PHP_CAN_SUPPORT_PROC_OPEN 1" >>confdefs.h +printf '%s\n' "#define PHP_CAN_SUPPORT_PROC_OPEN 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_can_support_proc_open" >&5 -printf "%s\n" "$php_can_support_proc_open" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_can_support_proc_open" >&5 +printf '%s\n' "$php_can_support_proc_open" >&6; } PHP_ENABLE_CHROOT_FUNC=no case "$PHP_SAPI" in @@ -71493,7 +71126,7 @@ if test "x$PHP_ENABLE_CHROOT_FUNC" = xyes then : -printf "%s\n" "#define ENABLE_CHROOT_FUNC 1" >>confdefs.h +printf '%s\n' "#define ENABLE_CHROOT_FUNC 1" >>confdefs.h fi @@ -71523,7 +71156,7 @@ case $found in yes) -printf "%s\n" "#define HAVE_RES_NSEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_NSEARCH 1" >>confdefs.h ac_cv_func_res_nsearch=yes ;; @@ -71533,7 +71166,7 @@ unset ac_cv_lib_resolv_res_nsearch unset ac_cv_lib_resolv___res_nsearch unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_nsearch in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for res_nsearch in -lresolv" >&5 printf %s "checking for res_nsearch in -lresolv... " >&6; } if test ${ac_cv_lib_resolv_res_nsearch+y} then : @@ -71574,14 +71207,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_nsearch" >&5 -printf "%s\n" "$ac_cv_lib_resolv_res_nsearch" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_nsearch" >&5 +printf '%s\n' "$ac_cv_lib_resolv_res_nsearch" >&6; } if test "x$ac_cv_lib_resolv_res_nsearch" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __res_nsearch in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __res_nsearch in -lresolv" >&5 printf %s "checking for __res_nsearch in -lresolv... " >&6; } if test ${ac_cv_lib_resolv___res_nsearch+y} then : @@ -71622,8 +71255,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_nsearch" >&5 -printf "%s\n" "$ac_cv_lib_resolv___res_nsearch" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_nsearch" >&5 +printf '%s\n' "$ac_cv_lib_resolv___res_nsearch" >&6; } if test "x$ac_cv_lib_resolv___res_nsearch" = xyes then : found=yes @@ -71684,10 +71317,10 @@ -printf "%s\n" "#define HAVE_RES_NSEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_NSEARCH 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRESOLV 1" >>confdefs.h ac_cv_func_res_nsearch=yes else @@ -71696,7 +71329,7 @@ unset ac_cv_lib_socket_res_nsearch unset ac_cv_lib_socket___res_nsearch unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_nsearch in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for res_nsearch in -lsocket" >&5 printf %s "checking for res_nsearch in -lsocket... " >&6; } if test ${ac_cv_lib_socket_res_nsearch+y} then : @@ -71737,14 +71370,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_res_nsearch" >&5 -printf "%s\n" "$ac_cv_lib_socket_res_nsearch" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_res_nsearch" >&5 +printf '%s\n' "$ac_cv_lib_socket_res_nsearch" >&6; } if test "x$ac_cv_lib_socket_res_nsearch" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __res_nsearch in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __res_nsearch in -lsocket" >&5 printf %s "checking for __res_nsearch in -lsocket... " >&6; } if test ${ac_cv_lib_socket___res_nsearch+y} then : @@ -71785,8 +71418,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___res_nsearch" >&5 -printf "%s\n" "$ac_cv_lib_socket___res_nsearch" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___res_nsearch" >&5 +printf '%s\n' "$ac_cv_lib_socket___res_nsearch" >&6; } if test "x$ac_cv_lib_socket___res_nsearch" = xyes then : found=yes @@ -71847,10 +71480,10 @@ -printf "%s\n" "#define HAVE_RES_NSEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_NSEARCH 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSOCKET 1" >>confdefs.h ac_cv_func_res_nsearch=yes else @@ -71892,7 +71525,7 @@ case $found in yes) -printf "%s\n" "#define HAVE_RES_NDESTROY 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_NDESTROY 1" >>confdefs.h ac_cv_func_res_ndestroy=yes ;; @@ -71902,7 +71535,7 @@ unset ac_cv_lib_resolv_res_ndestroy unset ac_cv_lib_resolv___res_ndestroy unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_ndestroy in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for res_ndestroy in -lresolv" >&5 printf %s "checking for res_ndestroy in -lresolv... " >&6; } if test ${ac_cv_lib_resolv_res_ndestroy+y} then : @@ -71943,14 +71576,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_ndestroy" >&5 -printf "%s\n" "$ac_cv_lib_resolv_res_ndestroy" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_ndestroy" >&5 +printf '%s\n' "$ac_cv_lib_resolv_res_ndestroy" >&6; } if test "x$ac_cv_lib_resolv_res_ndestroy" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __res_ndestroy in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __res_ndestroy in -lresolv" >&5 printf %s "checking for __res_ndestroy in -lresolv... " >&6; } if test ${ac_cv_lib_resolv___res_ndestroy+y} then : @@ -71991,8 +71624,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_ndestroy" >&5 -printf "%s\n" "$ac_cv_lib_resolv___res_ndestroy" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_ndestroy" >&5 +printf '%s\n' "$ac_cv_lib_resolv___res_ndestroy" >&6; } if test "x$ac_cv_lib_resolv___res_ndestroy" = xyes then : found=yes @@ -72053,10 +71686,10 @@ -printf "%s\n" "#define HAVE_RES_NDESTROY 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_NDESTROY 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRESOLV 1" >>confdefs.h ac_cv_func_res_ndestroy=yes else @@ -72065,7 +71698,7 @@ unset ac_cv_lib_socket_res_ndestroy unset ac_cv_lib_socket___res_ndestroy unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_ndestroy in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for res_ndestroy in -lsocket" >&5 printf %s "checking for res_ndestroy in -lsocket... " >&6; } if test ${ac_cv_lib_socket_res_ndestroy+y} then : @@ -72106,14 +71739,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_res_ndestroy" >&5 -printf "%s\n" "$ac_cv_lib_socket_res_ndestroy" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_res_ndestroy" >&5 +printf '%s\n' "$ac_cv_lib_socket_res_ndestroy" >&6; } if test "x$ac_cv_lib_socket_res_ndestroy" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __res_ndestroy in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __res_ndestroy in -lsocket" >&5 printf %s "checking for __res_ndestroy in -lsocket... " >&6; } if test ${ac_cv_lib_socket___res_ndestroy+y} then : @@ -72154,8 +71787,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___res_ndestroy" >&5 -printf "%s\n" "$ac_cv_lib_socket___res_ndestroy" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___res_ndestroy" >&5 +printf '%s\n' "$ac_cv_lib_socket___res_ndestroy" >&6; } if test "x$ac_cv_lib_socket___res_ndestroy" = xyes then : found=yes @@ -72216,10 +71849,10 @@ -printf "%s\n" "#define HAVE_RES_NDESTROY 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_NDESTROY 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSOCKET 1" >>confdefs.h ac_cv_func_res_ndestroy=yes else @@ -72261,7 +71894,7 @@ case $found in yes) -printf "%s\n" "#define HAVE_DNS_SEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_DNS_SEARCH 1" >>confdefs.h ac_cv_func_dns_search=yes ;; @@ -72271,7 +71904,7 @@ unset ac_cv_lib_resolv_dns_search unset ac_cv_lib_resolv___dns_search unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dns_search in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dns_search in -lresolv" >&5 printf %s "checking for dns_search in -lresolv... " >&6; } if test ${ac_cv_lib_resolv_dns_search+y} then : @@ -72312,14 +71945,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_dns_search" >&5 -printf "%s\n" "$ac_cv_lib_resolv_dns_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_dns_search" >&5 +printf '%s\n' "$ac_cv_lib_resolv_dns_search" >&6; } if test "x$ac_cv_lib_resolv_dns_search" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __dns_search in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __dns_search in -lresolv" >&5 printf %s "checking for __dns_search in -lresolv... " >&6; } if test ${ac_cv_lib_resolv___dns_search+y} then : @@ -72360,8 +71993,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dns_search" >&5 -printf "%s\n" "$ac_cv_lib_resolv___dns_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dns_search" >&5 +printf '%s\n' "$ac_cv_lib_resolv___dns_search" >&6; } if test "x$ac_cv_lib_resolv___dns_search" = xyes then : found=yes @@ -72422,10 +72055,10 @@ -printf "%s\n" "#define HAVE_DNS_SEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_DNS_SEARCH 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRESOLV 1" >>confdefs.h ac_cv_func_dns_search=yes else @@ -72434,7 +72067,7 @@ unset ac_cv_lib_socket_dns_search unset ac_cv_lib_socket___dns_search unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dns_search in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dns_search in -lsocket" >&5 printf %s "checking for dns_search in -lsocket... " >&6; } if test ${ac_cv_lib_socket_dns_search+y} then : @@ -72475,14 +72108,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_dns_search" >&5 -printf "%s\n" "$ac_cv_lib_socket_dns_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_dns_search" >&5 +printf '%s\n' "$ac_cv_lib_socket_dns_search" >&6; } if test "x$ac_cv_lib_socket_dns_search" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __dns_search in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __dns_search in -lsocket" >&5 printf %s "checking for __dns_search in -lsocket... " >&6; } if test ${ac_cv_lib_socket___dns_search+y} then : @@ -72523,8 +72156,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___dns_search" >&5 -printf "%s\n" "$ac_cv_lib_socket___dns_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___dns_search" >&5 +printf '%s\n' "$ac_cv_lib_socket___dns_search" >&6; } if test "x$ac_cv_lib_socket___dns_search" = xyes then : found=yes @@ -72585,10 +72218,10 @@ -printf "%s\n" "#define HAVE_DNS_SEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_DNS_SEARCH 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSOCKET 1" >>confdefs.h ac_cv_func_dns_search=yes else @@ -72630,7 +72263,7 @@ case $found in yes) -printf "%s\n" "#define HAVE_DN_EXPAND 1" >>confdefs.h +printf '%s\n' "#define HAVE_DN_EXPAND 1" >>confdefs.h ac_cv_func_dn_expand=yes ;; @@ -72640,7 +72273,7 @@ unset ac_cv_lib_resolv_dn_expand unset ac_cv_lib_resolv___dn_expand unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dn_expand in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dn_expand in -lresolv" >&5 printf %s "checking for dn_expand in -lresolv... " >&6; } if test ${ac_cv_lib_resolv_dn_expand+y} then : @@ -72681,14 +72314,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_dn_expand" >&5 -printf "%s\n" "$ac_cv_lib_resolv_dn_expand" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_dn_expand" >&5 +printf '%s\n' "$ac_cv_lib_resolv_dn_expand" >&6; } if test "x$ac_cv_lib_resolv_dn_expand" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __dn_expand in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __dn_expand in -lresolv" >&5 printf %s "checking for __dn_expand in -lresolv... " >&6; } if test ${ac_cv_lib_resolv___dn_expand+y} then : @@ -72729,8 +72362,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dn_expand" >&5 -printf "%s\n" "$ac_cv_lib_resolv___dn_expand" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dn_expand" >&5 +printf '%s\n' "$ac_cv_lib_resolv___dn_expand" >&6; } if test "x$ac_cv_lib_resolv___dn_expand" = xyes then : found=yes @@ -72791,10 +72424,10 @@ -printf "%s\n" "#define HAVE_DN_EXPAND 1" >>confdefs.h +printf '%s\n' "#define HAVE_DN_EXPAND 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRESOLV 1" >>confdefs.h ac_cv_func_dn_expand=yes else @@ -72803,7 +72436,7 @@ unset ac_cv_lib_socket_dn_expand unset ac_cv_lib_socket___dn_expand unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dn_expand in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dn_expand in -lsocket" >&5 printf %s "checking for dn_expand in -lsocket... " >&6; } if test ${ac_cv_lib_socket_dn_expand+y} then : @@ -72844,14 +72477,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_dn_expand" >&5 -printf "%s\n" "$ac_cv_lib_socket_dn_expand" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_dn_expand" >&5 +printf '%s\n' "$ac_cv_lib_socket_dn_expand" >&6; } if test "x$ac_cv_lib_socket_dn_expand" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __dn_expand in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __dn_expand in -lsocket" >&5 printf %s "checking for __dn_expand in -lsocket... " >&6; } if test ${ac_cv_lib_socket___dn_expand+y} then : @@ -72892,8 +72525,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___dn_expand" >&5 -printf "%s\n" "$ac_cv_lib_socket___dn_expand" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___dn_expand" >&5 +printf '%s\n' "$ac_cv_lib_socket___dn_expand" >&6; } if test "x$ac_cv_lib_socket___dn_expand" = xyes then : found=yes @@ -72954,10 +72587,10 @@ -printf "%s\n" "#define HAVE_DN_EXPAND 1" >>confdefs.h +printf '%s\n' "#define HAVE_DN_EXPAND 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSOCKET 1" >>confdefs.h ac_cv_func_dn_expand=yes else @@ -72999,7 +72632,7 @@ case $found in yes) -printf "%s\n" "#define HAVE_DN_SKIPNAME 1" >>confdefs.h +printf '%s\n' "#define HAVE_DN_SKIPNAME 1" >>confdefs.h ac_cv_func_dn_skipname=yes ;; @@ -73009,7 +72642,7 @@ unset ac_cv_lib_resolv_dn_skipname unset ac_cv_lib_resolv___dn_skipname unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dn_skipname in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dn_skipname in -lresolv" >&5 printf %s "checking for dn_skipname in -lresolv... " >&6; } if test ${ac_cv_lib_resolv_dn_skipname+y} then : @@ -73050,14 +72683,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_dn_skipname" >&5 -printf "%s\n" "$ac_cv_lib_resolv_dn_skipname" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_dn_skipname" >&5 +printf '%s\n' "$ac_cv_lib_resolv_dn_skipname" >&6; } if test "x$ac_cv_lib_resolv_dn_skipname" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __dn_skipname in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __dn_skipname in -lresolv" >&5 printf %s "checking for __dn_skipname in -lresolv... " >&6; } if test ${ac_cv_lib_resolv___dn_skipname+y} then : @@ -73098,8 +72731,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dn_skipname" >&5 -printf "%s\n" "$ac_cv_lib_resolv___dn_skipname" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___dn_skipname" >&5 +printf '%s\n' "$ac_cv_lib_resolv___dn_skipname" >&6; } if test "x$ac_cv_lib_resolv___dn_skipname" = xyes then : found=yes @@ -73160,10 +72793,10 @@ -printf "%s\n" "#define HAVE_DN_SKIPNAME 1" >>confdefs.h +printf '%s\n' "#define HAVE_DN_SKIPNAME 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRESOLV 1" >>confdefs.h ac_cv_func_dn_skipname=yes else @@ -73172,7 +72805,7 @@ unset ac_cv_lib_socket_dn_skipname unset ac_cv_lib_socket___dn_skipname unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dn_skipname in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dn_skipname in -lsocket" >&5 printf %s "checking for dn_skipname in -lsocket... " >&6; } if test ${ac_cv_lib_socket_dn_skipname+y} then : @@ -73213,14 +72846,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_dn_skipname" >&5 -printf "%s\n" "$ac_cv_lib_socket_dn_skipname" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_dn_skipname" >&5 +printf '%s\n' "$ac_cv_lib_socket_dn_skipname" >&6; } if test "x$ac_cv_lib_socket_dn_skipname" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __dn_skipname in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __dn_skipname in -lsocket" >&5 printf %s "checking for __dn_skipname in -lsocket... " >&6; } if test ${ac_cv_lib_socket___dn_skipname+y} then : @@ -73261,8 +72894,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___dn_skipname" >&5 -printf "%s\n" "$ac_cv_lib_socket___dn_skipname" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___dn_skipname" >&5 +printf '%s\n' "$ac_cv_lib_socket___dn_skipname" >&6; } if test "x$ac_cv_lib_socket___dn_skipname" = xyes then : found=yes @@ -73323,10 +72956,10 @@ -printf "%s\n" "#define HAVE_DN_SKIPNAME 1" >>confdefs.h +printf '%s\n' "#define HAVE_DN_SKIPNAME 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSOCKET 1" >>confdefs.h ac_cv_func_dn_skipname=yes else @@ -73370,7 +73003,7 @@ case $found in yes) -printf "%s\n" "#define HAVE_RES_SEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_SEARCH 1" >>confdefs.h ac_cv_func_res_search=yes ;; @@ -73380,7 +73013,7 @@ unset ac_cv_lib_resolv_res_search unset ac_cv_lib_resolv___res_search unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_search in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for res_search in -lresolv" >&5 printf %s "checking for res_search in -lresolv... " >&6; } if test ${ac_cv_lib_resolv_res_search+y} then : @@ -73421,14 +73054,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_search" >&5 -printf "%s\n" "$ac_cv_lib_resolv_res_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_search" >&5 +printf '%s\n' "$ac_cv_lib_resolv_res_search" >&6; } if test "x$ac_cv_lib_resolv_res_search" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __res_search in -lresolv" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __res_search in -lresolv" >&5 printf %s "checking for __res_search in -lresolv... " >&6; } if test ${ac_cv_lib_resolv___res_search+y} then : @@ -73469,8 +73102,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_search" >&5 -printf "%s\n" "$ac_cv_lib_resolv___res_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv___res_search" >&5 +printf '%s\n' "$ac_cv_lib_resolv___res_search" >&6; } if test "x$ac_cv_lib_resolv___res_search" = xyes then : found=yes @@ -73531,10 +73164,10 @@ -printf "%s\n" "#define HAVE_RES_SEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_SEARCH 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBRESOLV 1" >>confdefs.h ac_cv_func_res_search=yes else @@ -73543,7 +73176,7 @@ unset ac_cv_lib_socket_res_search unset ac_cv_lib_socket___res_search unset found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_search in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for res_search in -lsocket" >&5 printf %s "checking for res_search in -lsocket... " >&6; } if test ${ac_cv_lib_socket_res_search+y} then : @@ -73584,14 +73217,14 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_res_search" >&5 -printf "%s\n" "$ac_cv_lib_socket_res_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_res_search" >&5 +printf '%s\n' "$ac_cv_lib_socket_res_search" >&6; } if test "x$ac_cv_lib_socket_res_search" = xyes then : found=yes else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __res_search in -lsocket" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for __res_search in -lsocket" >&5 printf %s "checking for __res_search in -lsocket... " >&6; } if test ${ac_cv_lib_socket___res_search+y} then : @@ -73632,8 +73265,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___res_search" >&5 -printf "%s\n" "$ac_cv_lib_socket___res_search" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket___res_search" >&5 +printf '%s\n' "$ac_cv_lib_socket___res_search" >&6; } if test "x$ac_cv_lib_socket___res_search" = xyes then : found=yes @@ -73694,10 +73327,10 @@ -printf "%s\n" "#define HAVE_RES_SEARCH 1" >>confdefs.h +printf '%s\n' "#define HAVE_RES_SEARCH 1" >>confdefs.h -printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBSOCKET 1" >>confdefs.h ac_cv_func_res_search=yes else @@ -73714,33 +73347,39 @@ esac +ac_fn_c_check_func "$LINENO" "posix_spawn_file_actions_addchdir" "ac_cv_func_posix_spawn_file_actions_addchdir" +if test "x$ac_cv_func_posix_spawn_file_actions_addchdir" = xyes +then : + printf '%s\n' "#define HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR 1" >>confdefs.h + +fi ac_fn_c_check_func "$LINENO" "posix_spawn_file_actions_addchdir_np" "ac_cv_func_posix_spawn_file_actions_addchdir_np" if test "x$ac_cv_func_posix_spawn_file_actions_addchdir_np" = xyes then : - printf "%s\n" "#define HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "elf_aux_info" "ac_cv_func_elf_aux_info" if test "x$ac_cv_func_elf_aux_info" = xyes then : - printf "%s\n" "#define HAVE_ELF_AUX_INFO 1" >>confdefs.h + printf '%s\n' "#define HAVE_ELF_AUX_INFO 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "strptime" "ac_cv_have_decl_strptime" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_strptime" = xyes then : -printf "%s\n" "#define HAVE_DECL_STRPTIME 1" >>confdefs.h +printf '%s\n' "#define HAVE_DECL_STRPTIME 1" >>confdefs.h fi php_with_password_argon2=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Argon2 support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Argon2 support" >&5 printf %s "checking for Argon2 support... " >&6; } # Check whether --with-password-argon2 was given. @@ -73778,8 +73417,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -73791,17 +73430,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libargon2" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libargon2" >&5 printf %s "checking for libargon2... " >&6; } if test -n "$ARGON2_CFLAGS"; then pkg_cv_ARGON2_CFLAGS="$ARGON2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libargon2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libargon2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libargon2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ARGON2_CFLAGS=`$PKG_CONFIG --cflags "libargon2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -73815,10 +73454,10 @@ pkg_cv_ARGON2_LIBS="$ARGON2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libargon2\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libargon2\""; } >&5 ($PKG_CONFIG --exists --print-errors "libargon2") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ARGON2_LIBS=`$PKG_CONFIG --libs "libargon2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -73832,8 +73471,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -73859,10 +73498,10 @@ and ARGON2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -73876,8 +73515,8 @@ else ARGON2_CFLAGS=$pkg_cv_ARGON2_CFLAGS ARGON2_LIBS=$pkg_cv_ARGON2_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -74019,7 +73658,7 @@ -printf "%s\n" "#define HAVE_ARGON2LIB 1" >>confdefs.h +printf '%s\n' "#define HAVE_ARGON2LIB 1" >>confdefs.h ;; esac @@ -74032,12 +73671,12 @@ " if test "x$ac_cv_header_net_if_h" = xyes then : - printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_NET_IF_H 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable getifaddrs" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for usable getifaddrs" >&5 printf %s "checking for usable getifaddrs... " >&6; } if test ${php_cv_func_getifaddrs+y} then : @@ -74073,12 +73712,12 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_getifaddrs" >&5 -printf "%s\n" "$php_cv_func_getifaddrs" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_func_getifaddrs" >&5 +printf '%s\n' "$php_cv_func_getifaddrs" >&6; } if test "x$php_cv_func_getifaddrs" = xyes then : -printf "%s\n" "#define HAVE_GETIFADDRS 1" >>confdefs.h +printf '%s\n' "#define HAVE_GETIFADDRS 1" >>confdefs.h fi @@ -74217,7 +73856,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_STANDARD 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_STANDARD 1" >>confdefs.h fi fi @@ -74366,7 +74005,7 @@ php_enable_sysvmsg=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable System V IPC support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable System V IPC support" >&5 printf %s "checking whether to enable System V IPC support... " >&6; } # Check whether --enable-sysvmsg was given. if test ${enable_sysvmsg+y} @@ -74403,8 +74042,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -74415,8 +74054,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Cannot enable System V IPC support. Required header file not found. See 'config.log' for more details" "$LINENO" 5; } ;; @@ -74425,7 +74064,7 @@ -printf "%s\n" "#define HAVE_SYSVMSG 1" >>confdefs.h +printf '%s\n' "#define HAVE_SYSVMSG 1" >>confdefs.h ext_builddir=ext/sysvmsg @@ -74562,7 +74201,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SYSVMSG 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SYSVMSG 1" >>confdefs.h fi fi @@ -74688,7 +74327,7 @@ php_enable_sysvsem=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable System V semaphore support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable System V semaphore support" >&5 printf %s "checking whether to enable System V semaphore support... " >&6; } # Check whether --enable-sysvsem was given. if test ${enable_sysvsem+y} @@ -74725,8 +74364,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -74867,7 +74506,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SYSVSEM 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SYSVSEM 1" >>confdefs.h fi fi @@ -74986,7 +74625,7 @@ fi -printf "%s\n" "#define HAVE_SYSVSEM 1" >>confdefs.h +printf '%s\n' "#define HAVE_SYSVSEM 1" >>confdefs.h ac_fn_c_check_type "$LINENO" "union semun" "ac_cv_type_union_semun" " #include @@ -74997,7 +74636,7 @@ if test "x$ac_cv_type_union_semun" = xyes then : -printf "%s\n" "#define HAVE_UNION_SEMUN 1" >>confdefs.h +printf '%s\n' "#define HAVE_UNION_SEMUN 1" >>confdefs.h fi @@ -75010,7 +74649,7 @@ php_enable_sysvshm=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable System V shared memory support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable System V shared memory support" >&5 printf %s "checking whether to enable System V shared memory support... " >&6; } # Check whether --enable-sysvshm was given. if test ${enable_sysvshm+y} @@ -75047,15 +74686,15 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } if test "$PHP_SYSVSHM" != "no"; then -printf "%s\n" "#define HAVE_SYSVSHM 1" >>confdefs.h +printf '%s\n' "#define HAVE_SYSVSHM 1" >>confdefs.h ext_builddir=ext/sysvshm @@ -75192,7 +74831,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_SYSVSHM 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_SYSVSHM 1" >>confdefs.h fi fi @@ -75318,7 +74957,7 @@ php_with_tidy=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TIDY support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for TIDY support" >&5 printf %s "checking for TIDY support... " >&6; } # Check whether --with-tidy was given. @@ -75356,8 +74995,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -75401,7 +75040,7 @@ if test -f "$TIDY_INCDIR/tidybuffio.h" then : -printf "%s\n" "#define HAVE_TIDYBUFFIO_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDYBUFFIO_H 1" >>confdefs.h fi @@ -75409,11 +75048,11 @@ if test "x$TIDY_LIB_NAME" = xtidyp then : -printf "%s\n" "#define HAVE_TIDYP_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDYP_H 1" >>confdefs.h else case e in #( e) -printf "%s\n" "#define HAVE_TIDY_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDY_H 1" >>confdefs.h ;; esac fi @@ -75536,8 +75175,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$TIDY_LIB_NAME""_tidyOptGetDoc" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tidyOptGetDoc in -l$TIDY_LIB_NAME" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$TIDY_LIB_NAME""_tidyOptGetDoc" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tidyOptGetDoc in -l$TIDY_LIB_NAME" >&5 printf %s "checking for tidyOptGetDoc in -l$TIDY_LIB_NAME... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -75579,15 +75218,15 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_TIDYOPTGETDOC 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDYOPTGETDOC 1" >>confdefs.h else case e in #( @@ -75713,7 +75352,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tidyOptGetDoc in -ltidy5" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tidyOptGetDoc in -ltidy5" >&5 printf %s "checking for tidyOptGetDoc in -ltidy5... " >&6; } if test ${ac_cv_lib_tidy5_tidyOptGetDoc+y} then : @@ -75754,15 +75393,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tidy5_tidyOptGetDoc" >&5 -printf "%s\n" "$ac_cv_lib_tidy5_tidyOptGetDoc" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tidy5_tidyOptGetDoc" >&5 +printf '%s\n' "$ac_cv_lib_tidy5_tidyOptGetDoc" >&6; } if test "x$ac_cv_lib_tidy5_tidyOptGetDoc" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared TIDY_LIB_NAME=tidy5 - printf "%s\n" "#define HAVE_TIDYOPTGETDOC 1" >>confdefs.h + printf '%s\n' "#define HAVE_TIDYOPTGETDOC 1" >>confdefs.h else case e in #( @@ -75898,8 +75537,8 @@ esac done - as_ac_Lib=`printf "%s\n" "ac_cv_lib_$TIDY_LIB_NAME""_tidyReleaseDate" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tidyReleaseDate in -l$TIDY_LIB_NAME" >&5 + as_ac_Lib=`printf '%s\n' "ac_cv_lib_$TIDY_LIB_NAME""_tidyReleaseDate" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tidyReleaseDate in -l$TIDY_LIB_NAME" >&5 printf %s "checking for tidyReleaseDate in -l$TIDY_LIB_NAME... " >&6; } if eval test \${$as_ac_Lib+y} then : @@ -75941,15 +75580,15 @@ esac fi eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_TIDYRELEASEDATE 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDYRELEASEDATE 1" >>confdefs.h else case e in #( @@ -76106,7 +75745,7 @@ old_CPPFLAGS=$CPPFLAGS CPPFLAGS=-I$TIDY_INCDIR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tidyOptGetCategory" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for tidyOptGetCategory" >&5 printf %s "checking for tidyOptGetCategory... " >&6; } if test ${php_ac_cv_have_tidyoptgetcategory+y} then : @@ -76140,12 +75779,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_ac_cv_have_tidyoptgetcategory" >&5 -printf "%s\n" "$php_ac_cv_have_tidyoptgetcategory" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_ac_cv_have_tidyoptgetcategory" >&5 +printf '%s\n' "$php_ac_cv_have_tidyoptgetcategory" >&6; } if test "x$php_ac_cv_have_tidyoptgetcategory" = xyes then : -printf "%s\n" "#define HAVE_TIDYOPTGETCATEGORY 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDYOPTGETCATEGORY 1" >>confdefs.h fi @@ -76286,7 +75925,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_TIDY 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_TIDY 1" >>confdefs.h fi fi @@ -76408,7 +76047,7 @@ PHP_VAR_SUBST="$PHP_VAR_SUBST TIDY_SHARED_LIBADD" -printf "%s\n" "#define HAVE_TIDY 1" >>confdefs.h +printf '%s\n' "#define HAVE_TIDY 1" >>confdefs.h fi @@ -76418,7 +76057,7 @@ php_enable_tokenizer=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable tokenizer support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable tokenizer support" >&5 printf %s "checking whether to enable tokenizer support... " >&6; } # Check whether --enable-tokenizer was given. if test ${enable_tokenizer+y} @@ -76455,8 +76094,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -76597,7 +76236,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_TOKENIZER 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_TOKENIZER 1" >>confdefs.h fi fi @@ -76728,7 +76367,7 @@ php_enable_xml=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable XML support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable XML support" >&5 printf %s "checking whether to enable XML support... " >&6; } # Check whether --enable-xml was given. if test ${enable_xml+y} @@ -76765,8 +76404,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -76774,7 +76413,7 @@ php_with_expat=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with Expat support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with Expat support" >&5 printf %s "checking whether to build with Expat support... " >&6; } # Check whether --with-expat was given. @@ -76791,8 +76430,8 @@ ext_output=$PHP_EXPAT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -76803,17 +76442,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -76827,10 +76466,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -76844,8 +76483,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -76871,10 +76510,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -76888,8 +76527,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -77053,17 +76692,17 @@ e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for expat" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for expat" >&5 printf %s "checking for expat... " >&6; } if test -n "$EXPAT_CFLAGS"; then pkg_cv_EXPAT_CFLAGS="$EXPAT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5 ($PKG_CONFIG --exists --print-errors "expat") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EXPAT_CFLAGS=`$PKG_CONFIG --cflags "expat" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -77077,10 +76716,10 @@ pkg_cv_EXPAT_LIBS="$EXPAT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"expat\""; } >&5 ($PKG_CONFIG --exists --print-errors "expat") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EXPAT_LIBS=`$PKG_CONFIG --libs "expat" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -77094,8 +76733,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -77121,10 +76760,10 @@ and EXPAT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -77138,8 +76777,8 @@ else EXPAT_CFLAGS=$pkg_cv_EXPAT_CFLAGS EXPAT_LIBS=$pkg_cv_EXPAT_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -77298,7 +76937,7 @@ done -printf "%s\n" "#define HAVE_LIBEXPAT 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBEXPAT 1" >>confdefs.h ;; esac @@ -77439,7 +77078,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_XML 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_XML 1" >>confdefs.h fi fi @@ -77604,7 +77243,7 @@ -printf "%s\n" "#define HAVE_XML 1" >>confdefs.h +printf '%s\n' "#define HAVE_XML 1" >>confdefs.h fi @@ -77614,7 +77253,7 @@ php_enable_xmlreader=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable XMLReader support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable XMLReader support" >&5 printf %s "checking whether to enable XMLReader support... " >&6; } # Check whether --enable-xmlreader was given. if test ${enable_xmlreader+y} @@ -77651,8 +77290,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -77661,17 +77300,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -77685,10 +77324,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -77702,8 +77341,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -77729,10 +77368,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -77746,8 +77385,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -77907,7 +77546,7 @@ -printf "%s\n" "#define HAVE_XMLREADER 1" >>confdefs.h +printf '%s\n' "#define HAVE_XMLREADER 1" >>confdefs.h ext_builddir=ext/xmlreader @@ -78044,7 +77683,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_XMLREADER 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_XMLREADER 1" >>confdefs.h fi fi @@ -78213,7 +77852,7 @@ php_enable_xmlwriter=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable XMLWriter support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable XMLWriter support" >&5 printf %s "checking whether to enable XMLWriter support... " >&6; } # Check whether --enable-xmlwriter was given. if test ${enable_xmlwriter+y} @@ -78250,8 +77889,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -78260,17 +77899,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 >= 2.9.4" >&5 printf %s "checking for libxml-2.0 >= 2.9.4... " >&6; } if test -n "$LIBXML_CFLAGS"; then pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -78284,10 +77923,10 @@ pkg_cv_LIBXML_LIBS="$LIBXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.9.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.9.4") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.9.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -78301,8 +77940,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -78328,10 +77967,10 @@ and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -78345,8 +77984,8 @@ else LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS LIBXML_LIBS=$pkg_cv_LIBXML_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -78506,7 +78145,7 @@ -printf "%s\n" "#define HAVE_XMLWRITER 1" >>confdefs.h +printf '%s\n' "#define HAVE_XMLWRITER 1" >>confdefs.h ext_builddir=ext/xmlwriter @@ -78643,7 +78282,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_XMLWRITER 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_XMLWRITER 1" >>confdefs.h fi fi @@ -78793,7 +78432,7 @@ php_with_xsl=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with XSL support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build with XSL support" >&5 printf %s "checking whether to build with XSL support... " >&6; } # Check whether --with-xsl was given. @@ -78831,8 +78470,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -78840,17 +78479,17 @@ if test "$PHP_XSL" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxslt >= 1.1.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libxslt >= 1.1.0" >&5 printf %s "checking for libxslt >= 1.1.0... " >&6; } if test -n "$XSL_CFLAGS"; then pkg_cv_XSL_CFLAGS="$XSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxslt >= 1.1.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxslt >= 1.1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxslt >= 1.1.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XSL_CFLAGS=`$PKG_CONFIG --cflags "libxslt >= 1.1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -78864,10 +78503,10 @@ pkg_cv_XSL_LIBS="$XSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxslt >= 1.1.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxslt >= 1.1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxslt >= 1.1.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XSL_LIBS=`$PKG_CONFIG --libs "libxslt >= 1.1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -78881,8 +78520,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -78908,10 +78547,10 @@ and XSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -78925,8 +78564,8 @@ else XSL_CFLAGS=$pkg_cv_XSL_CFLAGS XSL_LIBS=$pkg_cv_XSL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -79088,17 +78727,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libexslt" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libexslt" >&5 printf %s "checking for libexslt... " >&6; } if test -n "$EXSLT_CFLAGS"; then pkg_cv_EXSLT_CFLAGS="$EXSLT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexslt\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexslt\""; } >&5 ($PKG_CONFIG --exists --print-errors "libexslt") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EXSLT_CFLAGS=`$PKG_CONFIG --cflags "libexslt" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -79112,10 +78751,10 @@ pkg_cv_EXSLT_LIBS="$EXSLT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexslt\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexslt\""; } >&5 ($PKG_CONFIG --exists --print-errors "libexslt") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EXSLT_LIBS=`$PKG_CONFIG --libs "libexslt" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -79129,8 +78768,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -79147,14 +78786,14 @@ : elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } : else EXSLT_CFLAGS=$pkg_cv_EXSLT_CFLAGS EXSLT_LIBS=$pkg_cv_EXSLT_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $EXSLT_CFLAGS; do @@ -79312,13 +78951,13 @@ done -printf "%s\n" "#define HAVE_XSL_EXSLT 1" >>confdefs.h +printf '%s\n' "#define HAVE_XSL_EXSLT 1" >>confdefs.h fi -printf "%s\n" "#define HAVE_XSL 1" >>confdefs.h +printf '%s\n' "#define HAVE_XSL 1" >>confdefs.h ext_builddir=ext/xsl @@ -79455,7 +79094,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_XSL 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_XSL 1" >>confdefs.h fi fi @@ -79622,7 +79261,7 @@ php_enable_zend_test=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable zend_test extension" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable zend_test extension" >&5 printf %s "checking whether to enable zend_test extension... " >&6; } # Check whether --enable-zend-test was given. if test ${enable_zend_test+y} @@ -79659,8 +79298,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -79801,7 +79440,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_ZEND_TEST 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_ZEND_TEST 1" >>confdefs.h fi fi @@ -79927,7 +79566,7 @@ php_with_zip=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip archive read/write support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip archive read/write support" >&5 printf %s "checking for zip archive read/write support... " >&6; } # Check whether --with-zip was given. @@ -79965,8 +79604,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -79974,17 +79613,17 @@ if test "$PHP_ZIP" != "no"; then pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0" >&5 printf %s "checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0... " >&6; } if test -n "$LIBZIP_CFLAGS"; then pkg_cv_LIBZIP_CFLAGS="$LIBZIP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBZIP_CFLAGS=`$PKG_CONFIG --cflags "libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -79998,10 +79637,10 @@ pkg_cv_LIBZIP_LIBS="$LIBZIP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBZIP_LIBS=`$PKG_CONFIG --libs "libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -80015,8 +79654,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -80042,10 +79681,10 @@ and LIBZIP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -80059,8 +79698,8 @@ else LIBZIP_CFLAGS=$pkg_cv_LIBZIP_CFLAGS LIBZIP_LIBS=$pkg_cv_LIBZIP_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } fi @@ -80338,7 +79977,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip_file_set_mtime in -lzip" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip_file_set_mtime in -lzip" >&5 printf %s "checking for zip_file_set_mtime in -lzip... " >&6; } if test ${ac_cv_lib_zip_zip_file_set_mtime+y} then : @@ -80379,15 +80018,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_file_set_mtime" >&5 -printf "%s\n" "$ac_cv_lib_zip_zip_file_set_mtime" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_file_set_mtime" >&5 +printf '%s\n' "$ac_cv_lib_zip_zip_file_set_mtime" >&6; } if test "x$ac_cv_lib_zip_zip_file_set_mtime" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_SET_MTIME 1" >>confdefs.h +printf '%s\n' "#define HAVE_SET_MTIME 1" >>confdefs.h else case e in #( @@ -80395,8 +80034,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_zip_zip_file_set_mtime - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libzip >= 1.0.0 needed for setting mtime" >&5 -printf "%s\n" "$as_me: WARNING: Libzip >= 1.0.0 needed for setting mtime" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: Libzip >= 1.0.0 needed for setting mtime" >&5 +printf '%s\n' "$as_me: WARNING: Libzip >= 1.0.0 needed for setting mtime" >&2;} ;; esac fi @@ -80520,7 +80159,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip_file_set_encryption in -lzip" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip_file_set_encryption in -lzip" >&5 printf %s "checking for zip_file_set_encryption in -lzip... " >&6; } if test ${ac_cv_lib_zip_zip_file_set_encryption+y} then : @@ -80561,15 +80200,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_file_set_encryption" >&5 -printf "%s\n" "$ac_cv_lib_zip_zip_file_set_encryption" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_file_set_encryption" >&5 +printf '%s\n' "$ac_cv_lib_zip_zip_file_set_encryption" >&6; } if test "x$ac_cv_lib_zip_zip_file_set_encryption" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_ENCRYPTION 1" >>confdefs.h +printf '%s\n' "#define HAVE_ENCRYPTION 1" >>confdefs.h else case e in #( @@ -80577,8 +80216,8 @@ LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared unset ac_cv_lib_zip_zip_file_set_encryption - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libzip >= 1.2.0 needed for encryption support" >&5 -printf "%s\n" "$as_me: WARNING: Libzip >= 1.2.0 needed for encryption support" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: Libzip >= 1.2.0 needed for encryption support" >&5 +printf '%s\n' "$as_me: WARNING: Libzip >= 1.2.0 needed for encryption support" >&2;} ;; esac fi @@ -80702,7 +80341,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip_libzip_version in -lzip" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip_libzip_version in -lzip" >&5 printf %s "checking for zip_libzip_version in -lzip... " >&6; } if test ${ac_cv_lib_zip_zip_libzip_version+y} then : @@ -80743,15 +80382,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_libzip_version" >&5 -printf "%s\n" "$ac_cv_lib_zip_zip_libzip_version" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_libzip_version" >&5 +printf '%s\n' "$ac_cv_lib_zip_zip_libzip_version" >&6; } if test "x$ac_cv_lib_zip_zip_libzip_version" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_LIBZIP_VERSION 1" >>confdefs.h +printf '%s\n' "#define HAVE_LIBZIP_VERSION 1" >>confdefs.h else case e in #( @@ -80883,7 +80522,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip_register_progress_callback_with_state in -lzip" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip_register_progress_callback_with_state in -lzip" >&5 printf %s "checking for zip_register_progress_callback_with_state in -lzip... " >&6; } if test ${ac_cv_lib_zip_zip_register_progress_callback_with_state+y} then : @@ -80924,15 +80563,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_register_progress_callback_with_state" >&5 -printf "%s\n" "$ac_cv_lib_zip_zip_register_progress_callback_with_state" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_register_progress_callback_with_state" >&5 +printf '%s\n' "$ac_cv_lib_zip_zip_register_progress_callback_with_state" >&6; } if test "x$ac_cv_lib_zip_zip_register_progress_callback_with_state" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_PROGRESS_CALLBACK 1" >>confdefs.h +printf '%s\n' "#define HAVE_PROGRESS_CALLBACK 1" >>confdefs.h else case e in #( @@ -81064,7 +80703,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip_register_cancel_callback_with_state in -lzip" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip_register_cancel_callback_with_state in -lzip" >&5 printf %s "checking for zip_register_cancel_callback_with_state in -lzip... " >&6; } if test ${ac_cv_lib_zip_zip_register_cancel_callback_with_state+y} then : @@ -81105,15 +80744,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_register_cancel_callback_with_state" >&5 -printf "%s\n" "$ac_cv_lib_zip_zip_register_cancel_callback_with_state" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_register_cancel_callback_with_state" >&5 +printf '%s\n' "$ac_cv_lib_zip_zip_register_cancel_callback_with_state" >&6; } if test "x$ac_cv_lib_zip_zip_register_cancel_callback_with_state" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_CANCEL_CALLBACK 1" >>confdefs.h +printf '%s\n' "#define HAVE_CANCEL_CALLBACK 1" >>confdefs.h else case e in #( @@ -81245,7 +80884,7 @@ esac done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zip_compression_method_supported in -lzip" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zip_compression_method_supported in -lzip" >&5 printf %s "checking for zip_compression_method_supported in -lzip... " >&6; } if test ${ac_cv_lib_zip_zip_compression_method_supported+y} then : @@ -81286,15 +80925,15 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_compression_method_supported" >&5 -printf "%s\n" "$ac_cv_lib_zip_zip_compression_method_supported" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zip_zip_compression_method_supported" >&5 +printf '%s\n' "$ac_cv_lib_zip_zip_compression_method_supported" >&6; } if test "x$ac_cv_lib_zip_zip_compression_method_supported" = xyes then : LDFLAGS=$save_old_LDFLAGS ext_shared=$save_ext_shared -printf "%s\n" "#define HAVE_METHOD_SUPPORTED 1" >>confdefs.h +printf '%s\n' "#define HAVE_METHOD_SUPPORTED 1" >>confdefs.h else case e in #( @@ -81309,7 +80948,7 @@ -printf "%s\n" "#define HAVE_ZIP 1" >>confdefs.h +printf '%s\n' "#define HAVE_ZIP 1" >>confdefs.h @@ -81447,7 +81086,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_ZIP 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_ZIP 1" >>confdefs.h fi fi @@ -81596,7 +81235,7 @@ php_enable_mysqlnd=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable mysqlnd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable mysqlnd" >&5 printf %s "checking whether to enable mysqlnd... " >&6; } # Check whether --enable-mysqlnd was given. if test ${enable_mysqlnd+y} @@ -81633,8 +81272,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -81647,7 +81286,7 @@ php_with_mysqlnd_ssl=$PHP_OPENSSL -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable extended SSL support in mysqlnd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable extended SSL support in mysqlnd" >&5 printf %s "checking whether to enable extended SSL support in mysqlnd... " >&6; } # Check whether --with-mysqlnd-ssl was given. @@ -81664,8 +81303,8 @@ ext_output=$PHP_MYSQLND_SSL -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -81673,7 +81312,7 @@ php_enable_mysqlnd_compression_support=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable compressed protocol support in mysqlnd" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable compressed protocol support in mysqlnd" >&5 printf %s "checking whether to enable compressed protocol support in mysqlnd... " >&6; } # Check whether --enable-mysqlnd-compression-support was given. if test ${enable_mysqlnd_compression_support+y} @@ -81689,8 +81328,8 @@ ext_output=$PHP_MYSQLND_COMPRESSION_SUPPORT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -81702,17 +81341,17 @@ else case e in #( e) pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.11" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.11" >&5 printf %s "checking for zlib >= 1.2.11... " >&6; } if test -n "$ZLIB_CFLAGS"; then pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -81726,10 +81365,10 @@ pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.11") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -81743,8 +81382,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -81770,10 +81409,10 @@ and ZLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -81787,8 +81426,8 @@ else ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS ZLIB_LIBS=$pkg_cv_ZLIB_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } for ac_i in $ZLIB_CFLAGS; do case $ac_i in @@ -81945,14 +81584,14 @@ done -printf "%s\n" "#define MYSQLND_COMPRESSION_ENABLED 1" >>confdefs.h +printf '%s\n' "#define MYSQLND_COMPRESSION_ENABLED 1" >>confdefs.h fi ;; esac fi -printf "%s\n" "#define MYSQLND_SSL_SUPPORTED 1" >>confdefs.h +printf '%s\n' "#define MYSQLND_SSL_SUPPORTED 1" >>confdefs.h @@ -82090,7 +81729,7 @@ EOF -printf "%s\n" "#define COMPILE_DL_MYSQLND 1" >>confdefs.h +printf '%s\n' "#define COMPILE_DL_MYSQLND 1" >>confdefs.h fi fi @@ -82218,17 +81857,17 @@ pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.1" >&5 printf %s "checking for openssl >= 1.1.1... " >&6; } if test -n "$OPENSSL_CFLAGS"; then pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -82242,10 +81881,10 @@ pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl >= 1.1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl >= 1.1.1") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 1.1.1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -82259,8 +81898,8 @@ if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -82286,10 +81925,10 @@ and OPENSSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -82303,8 +81942,8 @@ else OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } found_openssl=yes fi @@ -82466,7 +82105,7 @@ -printf "%s\n" "#define MYSQLND_HAVE_SSL 1" >>confdefs.h +printf '%s\n' "#define MYSQLND_HAVE_SSL 1" >>confdefs.h am_i_shared=$PHP_MYSQLND_SHARED @@ -82518,7 +82157,7 @@ case $host_alias in #( i[3456]86-*-linux-* | x86_64-*-linux-*) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking linker support for -zcommon-page-size=2097152" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking linker support for -zcommon-page-size=2097152" >&5 printf %s "checking linker support for -zcommon-page-size=2097152... " >&6; } if test ${php_cv_have_common_page_size+y} then : @@ -82557,13 +82196,13 @@ LDFLAGS=$save_LDFLAGS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_common_page_size" >&5 -printf "%s\n" "$php_cv_have_common_page_size" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_common_page_size" >&5 +printf '%s\n' "$php_cv_have_common_page_size" >&6; } if test "x$php_cv_have_common_page_size" = xyes then : EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152" else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking linker support for -zmax-page-size=2097152" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking linker support for -zmax-page-size=2097152" >&5 printf %s "checking linker support for -zmax-page-size=2097152... " >&6; } if test ${php_cv_have_max_page_size+y} then : @@ -82602,8 +82241,8 @@ LDFLAGS=$save_LDFLAGS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_max_page_size" >&5 -printf "%s\n" "$php_cv_have_max_page_size" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_max_page_size" >&5 +printf '%s\n' "$php_cv_have_max_page_size" >&6; } if test "x$php_cv_have_max_page_size" = xyes then : EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM -Wl,-zmax-page-size=2097152" @@ -82653,10 +82292,10 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring PEAR${T_ME}" >&5 -printf "%s\n" "${T_MD}Configuring PEAR${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring PEAR${T_ME}" >&5 +printf '%s\n' "${T_MD}Configuring PEAR${T_ME}" >&6; } if test "x$PHP_CLI" = xno @@ -82667,7 +82306,7 @@ php_with_pear=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to install PEAR" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to install PEAR" >&5 printf %s "checking whether to install PEAR... " >&6; } # Check whether --with-pear was given. @@ -82705,8 +82344,8 @@ -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 -printf "%s\n" "$ext_output" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +printf '%s\n' "$ext_output" >&6; } @@ -82716,8 +82355,8 @@ else case e in #( e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The --with-pear option is deprecated" >&5 -printf "%s\n" "$as_me: WARNING: The --with-pear option is deprecated" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The --with-pear option is deprecated" >&5 +printf '%s\n' "$as_me: WARNING: The --with-pear option is deprecated" >&2;} if test "x$PHP_XML" = xno then : @@ -82762,10 +82401,10 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring Zend${T_ME}" >&5 -printf "%s\n" "${T_MD}Configuring Zend${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring Zend${T_ME}" >&5 +printf '%s\n' "${T_MD}Configuring Zend${T_ME}" >&6; } # Check whether --enable-fiber-asm was given. @@ -82882,7 +82521,7 @@ fiber_asm="no" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether syscall to create shadow stack exists" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether syscall to create shadow stack exists" >&5 printf %s "checking whether syscall to create shadow stack exists... " >&6; } if test ${php_cv_have_shadow_stack_syscall+y} then : @@ -82923,8 +82562,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_shadow_stack_syscall" >&5 -printf "%s\n" "$php_cv_have_shadow_stack_syscall" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_shadow_stack_syscall" >&5 +printf '%s\n' "$php_cv_have_shadow_stack_syscall" >&6; } if test "x$php_cv_have_shadow_stack_syscall" = xyes then : fiber_asm_cflag="-DSHADOW_STACK_SYSCALL=1" @@ -82934,7 +82573,7 @@ fi if test "$fiber_asm" = 'yes'; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fiber switching context" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for fiber switching context" >&5 printf %s "checking for fiber switching context... " >&6; } @@ -82982,24 +82621,24 @@ done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $fiber_asm_file" >&5 -printf "%s\n" "$fiber_asm_file" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $fiber_asm_file" >&5 +printf '%s\n' "$fiber_asm_file" >&6; } else if test "x$fiber_os" = xmac then : -printf "%s\n" "#define _XOPEN_SOURCE 1" >>confdefs.h +printf '%s\n' "#define _XOPEN_SOURCE 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "ucontext.h" "ac_cv_header_ucontext_h" "$ac_includes_default" if test "x$ac_cv_header_ucontext_h" = xyes then : -printf "%s\n" "#define ZEND_FIBER_UCONTEXT 1" >>confdefs.h +printf '%s\n' "#define ZEND_FIBER_UCONTEXT 1" >>confdefs.h else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "fibers not available on this platform See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -83010,7 +82649,7 @@ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" if test "x$ac_cv_header_dlfcn_h" = xyes then : - printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_DLFCN_H 1" >>confdefs.h fi @@ -83019,13 +82658,13 @@ ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "$ac_includes_default" if test "x$ac_cv_header_cpuid_h" = xyes then : - printf "%s\n" "#define HAVE_CPUID_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_CPUID_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "libproc.h" "ac_cv_header_libproc_h" "$ac_includes_default" if test "x$ac_cv_header_libproc_h" = xyes then : - printf "%s\n" "#define HAVE_LIBPROC_H 1" >>confdefs.h + printf '%s\n' "#define HAVE_LIBPROC_H 1" >>confdefs.h fi @@ -83033,55 +82672,55 @@ ac_fn_c_check_func "$LINENO" "getpid" "ac_cv_func_getpid" if test "x$ac_cv_func_getpid" = xyes then : - printf "%s\n" "#define HAVE_GETPID 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETPID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gettid" "ac_cv_func_gettid" if test "x$ac_cv_func_gettid" = xyes then : - printf "%s\n" "#define HAVE_GETTID 1" >>confdefs.h + printf '%s\n' "#define HAVE_GETTID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill" if test "x$ac_cv_func_kill" = xyes then : - printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h + printf '%s\n' "#define HAVE_KILL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap" if test "x$ac_cv_func_mremap" = xyes then : - printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h + printf '%s\n' "#define HAVE_MREMAP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_attr_get_np" "ac_cv_func_pthread_attr_get_np" if test "x$ac_cv_func_pthread_attr_get_np" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_ATTR_GET_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_ATTR_GET_NP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_attr_getstack" "ac_cv_func_pthread_attr_getstack" if test "x$ac_cv_func_pthread_attr_getstack" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_ATTR_GETSTACK 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_ATTR_GETSTACK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_get_stackaddr_np" "ac_cv_func_pthread_get_stackaddr_np" if test "x$ac_cv_func_pthread_get_stackaddr_np" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_GET_STACKADDR_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_GET_STACKADDR_NP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_getattr_np" "ac_cv_func_pthread_getattr_np" if test "x$ac_cv_func_pthread_getattr_np" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_GETATTR_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_GETATTR_NP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pthread_stackseg_np" "ac_cv_func_pthread_stackseg_np" if test "x$ac_cv_func_pthread_stackseg_np" = xyes then : - printf "%s\n" "#define HAVE_PTHREAD_STACKSEG_NP 1" >>confdefs.h + printf '%s\n' "#define HAVE_PTHREAD_STACKSEG_NP 1" >>confdefs.h fi @@ -83092,13 +82731,13 @@ else case e in #( e) ac_fn_check_decl "$LINENO" "sigsetjmp" "ac_cv_have_decl_sigsetjmp" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" if test "x$ac_cv_have_decl_sigsetjmp" = xyes then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Required sigsetjmp not found. See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -83107,7 +82746,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the stack grows downwards" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the stack grows downwards" >&5 printf %s "checking whether the stack grows downwards... " >&6; } if test ${php_cv_have_stack_limit+y} then : @@ -83166,16 +82805,16 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_stack_limit" >&5 -printf "%s\n" "$php_cv_have_stack_limit" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_stack_limit" >&5 +printf '%s\n' "$php_cv_have_stack_limit" >&6; } if test "x$php_cv_have_stack_limit" = xyes then : -printf "%s\n" "#define ZEND_CHECK_STACK_LIMIT 1" >>confdefs.h +printf '%s\n' "#define ZEND_CHECK_STACK_LIMIT 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable _FPU_SETCW" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for usable _FPU_SETCW" >&5 printf %s "checking for usable _FPU_SETCW... " >&6; } if test ${php_cv_have__fpu_setcw+y} then : @@ -83214,16 +82853,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__fpu_setcw" >&5 -printf "%s\n" "$php_cv_have__fpu_setcw" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__fpu_setcw" >&5 +printf '%s\n' "$php_cv_have__fpu_setcw" >&6; } if test "x$php_cv_have__fpu_setcw" = xyes then : -printf "%s\n" "#define HAVE__FPU_SETCW 1" >>confdefs.h +printf '%s\n' "#define HAVE__FPU_SETCW 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable fpsetprec" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for usable fpsetprec" >&5 printf %s "checking for usable fpsetprec... " >&6; } if test ${php_cv_have_fpsetprec+y} then : @@ -83261,16 +82900,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_fpsetprec" >&5 -printf "%s\n" "$php_cv_have_fpsetprec" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_fpsetprec" >&5 +printf '%s\n' "$php_cv_have_fpsetprec" >&6; } if test "x$php_cv_have_fpsetprec" = xyes then : -printf "%s\n" "#define HAVE_FPSETPREC 1" >>confdefs.h +printf '%s\n' "#define HAVE_FPSETPREC 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable _controlfp" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for usable _controlfp" >&5 printf %s "checking for usable _controlfp... " >&6; } if test ${php_cv_have__controlfp+y} then : @@ -83308,16 +82947,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__controlfp" >&5 -printf "%s\n" "$php_cv_have__controlfp" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__controlfp" >&5 +printf '%s\n' "$php_cv_have__controlfp" >&6; } if test "x$php_cv_have__controlfp" = xyes then : -printf "%s\n" "#define HAVE__CONTROLFP 1" >>confdefs.h +printf '%s\n' "#define HAVE__CONTROLFP 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable _controlfp_s" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for usable _controlfp_s" >&5 printf %s "checking for usable _controlfp_s... " >&6; } if test ${php_cv_have__controlfp_s+y} then : @@ -83356,16 +82995,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__controlfp_s" >&5 -printf "%s\n" "$php_cv_have__controlfp_s" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have__controlfp_s" >&5 +printf '%s\n' "$php_cv_have__controlfp_s" >&6; } if test "x$php_cv_have__controlfp_s" = xyes then : -printf "%s\n" "#define HAVE__CONTROLFP_S 1" >>confdefs.h +printf '%s\n' "#define HAVE__CONTROLFP_S 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether FPU control word can be manipulated by inline assembler" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether FPU control word can be manipulated by inline assembler" >&5 printf %s "checking whether FPU control word can be manipulated by inline assembler... " >&6; } if test ${php_cv_have_fpu_inline_asm_x86+y} then : @@ -83404,16 +83043,16 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_fpu_inline_asm_x86" >&5 -printf "%s\n" "$php_cv_have_fpu_inline_asm_x86" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_fpu_inline_asm_x86" >&5 +printf '%s\n' "$php_cv_have_fpu_inline_asm_x86" >&6; } if test "x$php_cv_have_fpu_inline_asm_x86" = xyes then : -printf "%s\n" "#define HAVE_FPU_INLINE_ASM_X86 1" >>confdefs.h +printf '%s\n' "#define HAVE_FPU_INLINE_ASM_X86 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dlsym() requires a leading underscore in symbol names" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether dlsym() requires a leading underscore in symbol names" >&5 printf %s "checking whether dlsym() requires a leading underscore in symbol names... " >&6; } if test "$cross_compiling" = yes; then : @@ -83421,7 +83060,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in - x$lt_dlno_uscore) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + x$lt_dlno_uscore) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; x$lt_dlneed_uscore) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } -printf "%s\n" "#define DLSYM_NEEDS_UNDERSCORE 1" >>confdefs.h +printf '%s\n' "#define DLSYM_NEEDS_UNDERSCORE 1" >>confdefs.h ;; - x$lt_dlunknown|x*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; + x$lt_dlunknown|x*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac else : # compilation failed - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi fi rm -fr conftest* @@ -83524,7 +83163,7 @@ then : else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether system supports global register variables" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system supports global register variables" >&5 printf %s "checking whether system supports global register variables... " >&6; } if test ${php_cv_have_global_register_vars+y} then : @@ -83591,12 +83230,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_global_register_vars" >&5 -printf "%s\n" "$php_cv_have_global_register_vars" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have_global_register_vars" >&5 +printf '%s\n' "$php_cv_have_global_register_vars" >&6; } if test "x$php_cv_have_global_register_vars" = xyes then : -printf "%s\n" "#define HAVE_GCC_GLOBAL_REGS 1" >>confdefs.h +printf '%s\n' "#define HAVE_GCC_GLOBAL_REGS 1" >>confdefs.h else case e in #( e) ZEND_GCC_GLOBAL_REGS=no ;; @@ -83605,12 +83244,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable global register variables support" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable global register variables support" >&5 printf %s "checking whether to enable global register variables support... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZEND_GCC_GLOBAL_REGS" >&5 -printf "%s\n" "$ZEND_GCC_GLOBAL_REGS" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ZEND_GCC_GLOBAL_REGS" >&5 +printf '%s\n' "$ZEND_GCC_GLOBAL_REGS" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __cpuid_count is available" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether __cpuid_count is available" >&5 printf %s "checking whether __cpuid_count is available... " >&6; } if test ${php_cv_have___cpuid_count+y} then : @@ -83640,44 +83279,44 @@ conftest$ac_exeext conftest.$ac_ext ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___cpuid_count" >&5 -printf "%s\n" "$php_cv_have___cpuid_count" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_have___cpuid_count" >&5 +printf '%s\n' "$php_cv_have___cpuid_count" >&6; } if test "x$php_cv_have___cpuid_count" = xyes then : -printf "%s\n" "#define HAVE_CPUID_COUNT 1" >>confdefs.h +printf '%s\n' "#define HAVE_CPUID_COUNT 1" >>confdefs.h fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable thread safety" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable thread safety" >&5 printf %s "checking whether to enable thread safety... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZEND_ZTS" >&5 -printf "%s\n" "$ZEND_ZTS" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ZEND_ZTS" >&5 +printf '%s\n' "$ZEND_ZTS" >&6; } if test "x$ZEND_ZTS" = xyes then : -printf "%s\n" "#define ZTS 1" >>confdefs.h +printf '%s\n' "#define ZTS 1" >>confdefs.h as_fn_append CFLAGS " -DZTS" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend debugging" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend debugging" >&5 printf %s "checking whether to enable Zend debugging... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZEND_DEBUG" >&5 -printf "%s\n" "$ZEND_DEBUG" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ZEND_DEBUG" >&5 +printf '%s\n' "$ZEND_DEBUG" >&6; } if test "x$ZEND_DEBUG" = xyes then : - printf "%s\n" "#define ZEND_DEBUG 1" >>confdefs.h + printf '%s\n' "#define ZEND_DEBUG 1" >>confdefs.h echo " $CFLAGS" | grep ' -g' >/dev/null || CFLAGS="$CFLAGS -g" else case e in #( - e) printf "%s\n" "#define ZEND_DEBUG 0" >>confdefs.h + e) printf '%s\n' "#define ZEND_DEBUG 0" >>confdefs.h ;; esac fi @@ -83687,7 +83326,7 @@ CFLAGS="-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare $CFLAGS" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-clobbered" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wno-clobbered" >&5 printf %s "checking whether the C compiler accepts -Wno-clobbered... " >&6; } if test ${ax_cv_check_cflags__Werror__Wno_clobbered+y} then : @@ -83718,8 +83357,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_clobbered" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wno_clobbered" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wno_clobbered" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wno_clobbered" >&6; } if test "x$ax_cv_check_cflags__Werror__Wno_clobbered" = xyes then : CFLAGS="-Wno-clobbered $CFLAGS" @@ -83728,7 +83367,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wimplicit-fallthrough=1" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wimplicit-fallthrough=1" >&5 printf %s "checking whether the C compiler accepts -Wimplicit-fallthrough=1... " >&6; } if test ${ax_cv_check_cflags__Werror__Wimplicit_fallthrough_1+y} then : @@ -83759,8 +83398,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wimplicit_fallthrough_1" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wimplicit_fallthrough_1" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wimplicit_fallthrough_1" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wimplicit_fallthrough_1" >&6; } if test "x$ax_cv_check_cflags__Werror__Wimplicit_fallthrough_1" = xyes then : CFLAGS="$CFLAGS -Wimplicit-fallthrough=1" @@ -83769,7 +83408,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wduplicated-cond" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wduplicated-cond" >&5 printf %s "checking whether the C compiler accepts -Wduplicated-cond... " >&6; } if test ${ax_cv_check_cflags__Werror__Wduplicated_cond+y} then : @@ -83800,8 +83439,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wduplicated_cond" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wduplicated_cond" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wduplicated_cond" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wduplicated_cond" >&6; } if test "x$ax_cv_check_cflags__Werror__Wduplicated_cond" = xyes then : CFLAGS="-Wduplicated-cond $CFLAGS" @@ -83810,7 +83449,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wlogical-op" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wlogical-op" >&5 printf %s "checking whether the C compiler accepts -Wlogical-op... " >&6; } if test ${ax_cv_check_cflags__Werror__Wlogical_op+y} then : @@ -83841,8 +83480,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wlogical_op" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wlogical_op" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wlogical_op" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wlogical_op" >&6; } if test "x$ax_cv_check_cflags__Werror__Wlogical_op" = xyes then : CFLAGS="-Wlogical-op $CFLAGS" @@ -83851,7 +83490,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wformat-truncation" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wformat-truncation" >&5 printf %s "checking whether the C compiler accepts -Wformat-truncation... " >&6; } if test ${ax_cv_check_cflags__Werror__Wformat_truncation+y} then : @@ -83882,8 +83521,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wformat_truncation" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wformat_truncation" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wformat_truncation" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wformat_truncation" >&6; } if test "x$ax_cv_check_cflags__Werror__Wformat_truncation" = xyes then : CFLAGS="-Wformat-truncation $CFLAGS" @@ -83892,7 +83531,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wstrict-prototypes" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -Wstrict-prototypes" >&5 printf %s "checking whether the C compiler accepts -Wstrict-prototypes... " >&6; } if test ${ax_cv_check_cflags__Werror__Wstrict_prototypes+y} then : @@ -83923,8 +83562,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wstrict_prototypes" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wstrict_prototypes" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wstrict_prototypes" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__Wstrict_prototypes" >&6; } if test "x$ax_cv_check_cflags__Werror__Wstrict_prototypes" = xyes then : CFLAGS="-Wstrict-prototypes $CFLAGS" @@ -83933,7 +83572,7 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fno-common" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fno-common" >&5 printf %s "checking whether the C compiler accepts -fno-common... " >&6; } if test ${ax_cv_check_cflags__Werror__fno_common+y} then : @@ -83964,8 +83603,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fno_common" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__fno_common" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fno_common" >&5 +printf '%s\n' "$ax_cv_check_cflags__Werror__fno_common" >&6; } if test "x$ax_cv_check_cflags__Werror__fno_common" = xyes then : CFLAGS="-fno-common $CFLAGS" @@ -83975,7 +83614,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Zend memory manager alignment and log values" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Zend memory manager alignment and log values" >&5 printf %s "checking for Zend memory manager alignment and log values... " >&6; } if test ${php_cv_align_mm+y} then : @@ -84037,12 +83676,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_align_mm" >&5 -printf "%s\n" "$php_cv_align_mm" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_align_mm" >&5 +printf '%s\n' "$php_cv_align_mm" >&6; } if test "x$php_cv_align_mm" = xfailed then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "ZEND_MM alignment defines failed. See 'config.log' for more details" "$LINENO" 5; } else case e in #( @@ -84050,13 +83689,13 @@ zend_mm_alignment_log2=$(echo $php_cv_align_mm | cut -d ' ' -f 2) zend_mm_8byte_realign=$(echo $php_cv_align_mm | cut -d ' ' -f 3) -printf "%s\n" "#define ZEND_MM_ALIGNMENT $zend_mm_alignment" >>confdefs.h +printf '%s\n' "#define ZEND_MM_ALIGNMENT $zend_mm_alignment" >>confdefs.h -printf "%s\n" "#define ZEND_MM_ALIGNMENT_LOG2 $zend_mm_alignment_log2" >>confdefs.h +printf '%s\n' "#define ZEND_MM_ALIGNMENT_LOG2 $zend_mm_alignment_log2" >>confdefs.h -printf "%s\n" "#define ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT $zend_mm_8byte_realign" >>confdefs.h +printf '%s\n' "#define ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT $zend_mm_8byte_realign" >>confdefs.h ;; esac @@ -84078,7 +83717,7 @@ ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" if test "x$ac_cv_func_sigaction" = xyes then : - printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h + printf '%s\n' "#define HAVE_SIGACTION 1" >>confdefs.h else case e in #( e) ZEND_SIGNALS=no ;; @@ -84089,15 +83728,15 @@ if test "x$ZEND_SIGNALS" = xyes then : -printf "%s\n" "#define ZEND_SIGNALS 1" >>confdefs.h +printf '%s\n' "#define ZEND_SIGNALS 1" >>confdefs.h as_fn_append CFLAGS " -DZEND_SIGNALS" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend signal handling" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend signal handling" >&5 printf %s "checking whether to enable Zend signal handling... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZEND_SIGNALS" >&5 -printf "%s\n" "$ZEND_SIGNALS" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ZEND_SIGNALS" >&5 +printf '%s\n' "$ZEND_SIGNALS" >&6; } # Check whether --enable-zend-max-execution-timers was given. if test ${enable_zend_max_execution_timers+y} @@ -84118,7 +83757,7 @@ if test "x$ZEND_MAX_EXECUTION_TIMERS" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing timer_create" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing timer_create" >&5 printf %s "checking for library containing timer_create... " >&6; } if test ${ac_cv_search_timer_create+y} then : @@ -84176,8 +83815,8 @@ LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_timer_create" >&5 -printf "%s\n" "$ac_cv_search_timer_create" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_timer_create" >&5 +printf '%s\n' "$ac_cv_search_timer_create" >&6; } ac_res=$ac_cv_search_timer_create if test "$ac_res" != no then : @@ -84193,15 +83832,15 @@ if test "x$ZEND_MAX_EXECUTION_TIMERS" = xyes then : -printf "%s\n" "#define ZEND_MAX_EXECUTION_TIMERS 1" >>confdefs.h +printf '%s\n' "#define ZEND_MAX_EXECUTION_TIMERS 1" >>confdefs.h as_fn_append CFLAGS " -DZEND_MAX_EXECUTION_TIMERS" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend max execution timers" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to enable Zend max execution timers" >&5 printf %s "checking whether to enable Zend max execution timers... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZEND_MAX_EXECUTION_TIMERS" >&5 -printf "%s\n" "$ZEND_MAX_EXECUTION_TIMERS" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ZEND_MAX_EXECUTION_TIMERS" >&5 +printf '%s\n' "$ZEND_MAX_EXECUTION_TIMERS" >&6; } @@ -84493,7 +84132,7 @@ # Double any \ or $. # By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` if test "x$prefix" = xNONE @@ -84673,12 +84312,12 @@ PHP_UNAME=$(uname -a | xargs) fi -printf "%s\n" "#define PHP_UNAME \"$PHP_UNAME\"" >>confdefs.h +printf '%s\n' "#define PHP_UNAME \"$PHP_UNAME\"" >>confdefs.h PHP_OS=$(uname | xargs) -printf "%s\n" "#define PHP_OS \"$PHP_OS\"" >>confdefs.h +printf '%s\n' "#define PHP_OS \"$PHP_OS\"" >>confdefs.h @@ -84687,7 +84326,7 @@ PHP_BUILD_SYSTEM=$PHP_UNAME fi -printf "%s\n" "#define PHP_BUILD_SYSTEM \"$PHP_BUILD_SYSTEM\"" >>confdefs.h +printf '%s\n' "#define PHP_BUILD_SYSTEM \"$PHP_BUILD_SYSTEM\"" >>confdefs.h @@ -84696,7 +84335,7 @@ else case e in #( e) -printf "%s\n" "#define PHP_BUILD_PROVIDER \"$PHP_BUILD_PROVIDER\"" >>confdefs.h +printf '%s\n' "#define PHP_BUILD_PROVIDER \"$PHP_BUILD_PROVIDER\"" >>confdefs.h ;; esac fi @@ -84707,7 +84346,7 @@ else case e in #( e) -printf "%s\n" "#define PHP_BUILD_COMPILER \"$PHP_BUILD_COMPILER\"" >>confdefs.h +printf '%s\n' "#define PHP_BUILD_COMPILER \"$PHP_BUILD_COMPILER\"" >>confdefs.h ;; esac fi @@ -84718,7 +84357,7 @@ else case e in #( e) -printf "%s\n" "#define PHP_BUILD_ARCH \"$PHP_BUILD_ARCH\"" >>confdefs.h +printf '%s\n' "#define PHP_BUILD_ARCH \"$PHP_BUILD_ARCH\"" >>confdefs.h ;; esac fi @@ -84909,7 +84548,7 @@ if test "x$PHP_MEMORY_SANITIZER" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=memory -fsanitize-memory-track-origins" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=memory -fsanitize-memory-track-origins" >&5 printf %s "checking whether the C compiler accepts -fsanitize=memory -fsanitize-memory-track-origins... " >&6; } if test ${ax_cv_check_cflags___fsanitize_memory__fsanitize_memory_track_origins+y} then : @@ -84940,8 +84579,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_memory__fsanitize_memory_track_origins" >&5 -printf "%s\n" "$ax_cv_check_cflags___fsanitize_memory__fsanitize_memory_track_origins" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_memory__fsanitize_memory_track_origins" >&5 +printf '%s\n' "$ax_cv_check_cflags___fsanitize_memory__fsanitize_memory_track_origins" >&6; } if test "x$ax_cv_check_cflags___fsanitize_memory__fsanitize_memory_track_origins" = xyes then : @@ -84968,7 +84607,7 @@ esac fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=address" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=address" >&5 printf %s "checking whether the C compiler accepts -fsanitize=address... " >&6; } if test ${ax_cv_check_cflags___fsanitize_address+y} then : @@ -84999,8 +84638,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_address" >&5 -printf "%s\n" "$ax_cv_check_cflags___fsanitize_address" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_address" >&5 +printf '%s\n' "$ax_cv_check_cflags___fsanitize_address" >&6; } if test "x$ax_cv_check_cflags___fsanitize_address" = xyes then : @@ -85017,7 +84656,7 @@ if test "x$PHP_UNDEFINED_SANITIZER" = xyes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=undefined" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fsanitize=undefined" >&5 printf %s "checking whether the C compiler accepts -fsanitize=undefined... " >&6; } if test ${ax_cv_check_cflags___fsanitize_undefined+y} then : @@ -85048,14 +84687,14 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_undefined" >&5 -printf "%s\n" "$ax_cv_check_cflags___fsanitize_undefined" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_undefined" >&5 +printf '%s\n' "$ax_cv_check_cflags___fsanitize_undefined" >&6; } if test "x$ax_cv_check_cflags___fsanitize_undefined" = xyes then : CFLAGS="$CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" CXXFLAGS="$CXXFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fno-sanitize=object-size" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts -fno-sanitize=object-size" >&5 printf %s "checking whether the C compiler accepts -fno-sanitize=object-size... " >&6; } if test ${ax_cv_check_cflags___fno_sanitize_object_size+y} then : @@ -85086,8 +84725,8 @@ CFLAGS=$ax_check_save_flags ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_sanitize_object_size" >&5 -printf "%s\n" "$ax_cv_check_cflags___fno_sanitize_object_size" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_sanitize_object_size" >&5 +printf '%s\n' "$ax_cv_check_cflags___fno_sanitize_object_size" >&6; } if test "x$ax_cv_check_cflags___fno_sanitize_object_size" = xyes then : @@ -85102,7 +84741,7 @@ OLD_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -fno-sanitize-recover=undefined" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to add -fno-sanitize=function" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to add -fno-sanitize=function" >&5 printf %s "checking whether to add -fno-sanitize=function... " >&6; } if test ${php_cv_ubsan_no_function+y} then : @@ -85137,8 +84776,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $php_cv_ubsan_no_function" >&5 -printf "%s\n" "$php_cv_ubsan_no_function" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $php_cv_ubsan_no_function" >&5 +printf '%s\n' "$php_cv_ubsan_no_function" >&6; } CFLAGS=$OLD_CFLAGS if test "x$php_cv_ubsan_no_function" = xyes then : @@ -85171,10 +84810,10 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring libtool${T_ME}" >&5 -printf "%s\n" "${T_MD}Configuring libtool${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Configuring libtool${T_ME}" >&5 +printf '%s\n' "${T_MD}Configuring libtool${T_ME}" >&6; } AR_FLAGS=cr @@ -85259,7 +84898,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${lt_cv_path_SED+y} then : @@ -85315,8 +84954,8 @@ fi SED=$lt_cv_path_SED -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 -printf "%s\n" "$SED" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +printf '%s\n' "$SED" >&6; } # Check whether --with-gnu-ld was given. @@ -85331,7 +84970,7 @@ ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) @@ -85361,10 +85000,10 @@ ;; esac elif test "$with_gnu_ld" = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} @@ -85400,14 +85039,14 @@ LD="$lt_cv_path_LD" if test -n "$LD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -printf "%s\n" "$LD" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf '%s\n' "$LD" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : @@ -85424,12 +85063,12 @@ esac ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +printf '%s\n' "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : @@ -85438,8 +85077,8 @@ e) lt_cv_ld_reload_flag='-r' ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf '%s\n' "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -85456,7 +85095,7 @@ ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD-compatible nm" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for BSD-compatible nm" >&5 printf %s "checking for BSD-compatible nm... " >&6; } if test ${lt_cv_path_NM+y} then : @@ -85507,11 +85146,11 @@ fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -printf "%s\n" "$lt_cv_path_NM" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf '%s\n' "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : @@ -85699,8 +85338,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf '%s\n' "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -85730,7 +85369,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) @@ -85745,11 +85384,11 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 85748 "configure"' > conftest.$ac_ext + echo '#line 85387 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in @@ -85787,7 +85426,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) @@ -85843,7 +85482,7 @@ # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : @@ -85883,8 +85522,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf '%s\n' "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" @@ -85896,7 +85535,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) @@ -85930,7 +85569,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} @@ -85997,8 +85636,8 @@ else ac_cv_prog_CXXCPP=$CXXCPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -printf "%s\n" "$CXXCPP" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +printf '%s\n' "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -86046,8 +85685,8 @@ then : else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac @@ -86064,7 +85703,7 @@ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : @@ -86178,11 +85817,11 @@ fi if test -n $lt_cv_sys_max_cmd_len ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf '%s\n' "$lt_cv_sys_max_cmd_len" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 -printf "%s\n" "none" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf '%s\n' "none" >&6; } fi @@ -86190,7 +85829,7 @@ # Check for command to grab the raw symbol name followed by C symbol from nm. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : @@ -86299,14 +85938,14 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then @@ -86361,7 +86000,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi @@ -86397,14 +86036,14 @@ lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -printf "%s\n" "failed" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf '%s\n' "failed" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf '%s\n' "ok" >&6; } fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : @@ -86421,8 +86060,8 @@ rmdir .libs 2>/dev/null ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -printf "%s\n" "$lt_cv_objdir" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf '%s\n' "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir @@ -86473,7 +86112,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : @@ -86494,7 +86133,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -86506,11 +86145,11 @@ fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -printf "%s\n" "$AR" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -86519,7 +86158,7 @@ ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : @@ -86540,7 +86179,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -86552,11 +86191,11 @@ fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -printf "%s\n" "$ac_ct_AR" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test "x$ac_ct_AR" = x; then @@ -86564,8 +86203,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -86577,7 +86216,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : @@ -86598,7 +86237,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -86610,11 +86249,11 @@ fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -printf "%s\n" "$RANLIB" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -86623,7 +86262,7 @@ ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : @@ -86644,7 +86283,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -86656,11 +86295,11 @@ fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -printf "%s\n" "$ac_ct_RANLIB" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -86668,8 +86307,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -86681,7 +86320,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : @@ -86702,7 +86341,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -86714,11 +86353,11 @@ fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -printf "%s\n" "$STRIP" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -86727,7 +86366,7 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : @@ -86748,7 +86387,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -86760,11 +86399,11 @@ fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -printf "%s\n" "$ac_ct_STRIP" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -86772,8 +86411,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -86836,7 +86475,7 @@ case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : @@ -86891,16 +86530,16 @@ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -printf "%s\n" "$MAGIC_CMD" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf '%s\n' "$MAGIC_CMD" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : @@ -86955,11 +86594,11 @@ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -printf "%s\n" "$MAGIC_CMD" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf '%s\n' "$MAGIC_CMD" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi else @@ -86977,7 +86616,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : @@ -86998,7 +86637,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -87010,11 +86649,11 @@ fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -printf "%s\n" "$DSYMUTIL" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf '%s\n' "$DSYMUTIL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -87023,7 +86662,7 @@ ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : @@ -87044,7 +86683,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -87056,11 +86695,11 @@ fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf '%s\n' "$ac_ct_DSYMUTIL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -87068,8 +86707,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -87081,7 +86720,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : @@ -87102,7 +86741,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -87114,11 +86753,11 @@ fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -printf "%s\n" "$NMEDIT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf '%s\n' "$NMEDIT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi @@ -87127,7 +86766,7 @@ ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : @@ -87148,7 +86787,7 @@ for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -87160,11 +86799,11 @@ fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -printf "%s\n" "$ac_ct_NMEDIT" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf '%s\n' "$ac_ct_NMEDIT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -87172,8 +86811,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -87183,7 +86822,7 @@ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : @@ -87206,9 +86845,9 @@ fi ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf '%s\n' "$lt_cv_apple_cc_single_mod" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : @@ -87220,7 +86859,7 @@ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then lt_cv_ld_exported_symbols_list=yes rm -rf conftest* @@ -87243,8 +86882,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf '%s\n' "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -87363,7 +87002,7 @@ lt_prog_compiler_no_builtin_flag=' -fno-builtin' -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : @@ -87382,11 +87021,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:87385: $lt_compile\"" >&5) + (eval echo "\"configure:87024: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:87389: \$? = $ac_status" >&5 + echo "configure:87028: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -87400,8 +87039,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf '%s\n' "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -87415,7 +87054,7 @@ lt_prog_compiler_pic= lt_prog_compiler_static= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then @@ -87655,15 +87294,15 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -printf "%s\n" "$lt_prog_compiler_pic" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +printf '%s\n' "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : @@ -87682,11 +87321,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:87685: $lt_compile\"" >&5) + (eval echo "\"configure:87324: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:87689: \$? = $ac_status" >&5 + echo "configure:87328: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -87700,8 +87339,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf '%s\n' "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in @@ -87728,7 +87367,7 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : @@ -87758,8 +87397,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf '%s\n' "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : @@ -87768,7 +87407,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : @@ -87790,11 +87429,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:87793: $lt_compile\"" >&5) + (eval echo "\"configure:87432: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "configure:87797: \$? = $ac_status" >&5 + echo "configure:87436: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -87817,14 +87456,14 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf '%s\n' "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* @@ -87832,18 +87471,18 @@ touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -printf "%s\n" "$hard_links" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf '%s\n' "$hard_links" >&6; } if test "$hard_links" = no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf '%s\n' "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= @@ -88255,7 +87894,7 @@ # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then lt_aix_libpath_sed=' @@ -88297,7 +87936,7 @@ # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then lt_aix_libpath_sed=' @@ -88771,8 +88410,8 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -printf "%s\n" "$ld_shlibs" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf '%s\n' "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # @@ -88792,7 +88431,7 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -88800,7 +88439,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest @@ -88818,7 +88457,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc=no @@ -88830,15 +88469,15 @@ cat conftest.err 1>&5 fi $rm conftest* - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 -printf "%s\n" "$archive_cmds_need_lc" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +printf '%s\n' "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' @@ -89447,8 +89086,8 @@ dynamic_linker=no ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -printf "%s\n" "$dynamic_linker" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf '%s\n' "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test ${lt_cv_sys_lib_search_path_spec+y} @@ -89475,7 +89114,7 @@ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ @@ -89500,8 +89139,8 @@ # directories. hardcode_action=unsupported fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -printf "%s\n" "$hardcode_action" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf '%s\n' "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported @@ -89514,13 +89153,13 @@ striplib= old_striplib= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -89528,16 +89167,16 @@ if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi ;; *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; esac fi @@ -89569,7 +89208,7 @@ darwin*) # if libdl is installed we need to link against it - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : @@ -89610,8 +89249,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf '%s\n' "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" @@ -89632,7 +89271,7 @@ then : lt_cv_dlopen="shl_load" else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : @@ -89673,8 +89312,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf '%s\n' "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" @@ -89684,7 +89323,7 @@ then : lt_cv_dlopen="dlopen" else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : @@ -89725,13 +89364,13 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf '%s\n' "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : @@ -89772,13 +89411,13 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf '%s\n' "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : @@ -89819,8 +89458,8 @@ LIBS=$ac_check_lib_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf '%s\n' "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" @@ -89866,7 +89505,7 @@ save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : @@ -89878,7 +89517,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -89960,12 +89599,12 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -printf "%s\n" "$lt_cv_dlopen_self" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf '%s\n' "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : @@ -89977,7 +89616,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -90059,8 +89698,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf '%s\n' "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" @@ -90082,12 +89721,12 @@ # Report which library types will actually be built -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -printf "%s\n" "$can_build_shared" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf '%s\n' "$can_build_shared" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no @@ -90108,15 +89747,15 @@ fi ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -printf "%s\n" "$enable_shared" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf '%s\n' "$enable_shared" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -printf "%s\n" "$enable_static" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf '%s\n' "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -90209,9 +89848,9 @@ cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: creating $ofile" >&5 -printf "%s\n" " +printf '%s\n' " creating $ofile" >&6; } cat <<__EOF__ >> "$cfgfile" @@ -90625,18 +90264,18 @@ if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: output file '$ofile' does not exist" >&5 -printf "%s\n" "$as_me: WARNING: output file '$ofile' does not exist" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: output file '$ofile' does not exist" >&5 +printf '%s\n' "$as_me: WARNING: output file '$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: output file '$ofile' does not look like a libtool script" >&5 -printf "%s\n" "$as_me: WARNING: output file '$ofile' does not look like a libtool script" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: output file '$ofile' does not look like a libtool script" >&5 +printf '%s\n' "$as_me: WARNING: output file '$ofile' does not look like a libtool script" >&2;} else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using 'LTCC=$LTCC', extracted from '$ofile'" >&5 -printf "%s\n" "$as_me: WARNING: using 'LTCC=$LTCC', extracted from '$ofile'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using 'LTCC=$LTCC', extracted from '$ofile'" >&5 +printf '%s\n' "$as_me: WARNING: using 'LTCC=$LTCC', extracted from '$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then @@ -90803,7 +90442,7 @@ ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) @@ -90833,10 +90472,10 @@ ;; esac elif test "$with_gnu_ld" = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} @@ -90872,14 +90511,14 @@ LD="$lt_cv_path_LD" if test -n "$LD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -printf "%s\n" "$LD" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf '%s\n' "$LD" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : @@ -90896,8 +90535,8 @@ esac ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +printf '%s\n' "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -90947,7 +90586,7 @@ fi # PORTME: fill in a description of your system's C++ link characteristics -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in @@ -91046,7 +90685,7 @@ # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then lt_aix_libpath_sed=' @@ -91089,7 +90728,7 @@ # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then lt_aix_libpath_sed=' @@ -91845,8 +91484,8 @@ ld_shlibs_CXX=no ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -printf "%s\n" "$ld_shlibs_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +printf '%s\n' "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" @@ -91869,7 +91508,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. @@ -92025,7 +91664,7 @@ lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. @@ -92315,15 +91954,15 @@ esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 -printf "%s\n" "$lt_prog_compiler_pic_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +printf '%s\n' "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : @@ -92342,11 +91981,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:92345: $lt_compile\"" >&5) + (eval echo "\"configure:91984: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:92349: \$? = $ac_status" >&5 + echo "configure:91988: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -92360,8 +91999,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +printf '%s\n' "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in @@ -92388,7 +92027,7 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : @@ -92418,8 +92057,8 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +printf '%s\n' "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : @@ -92428,7 +92067,7 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : @@ -92450,11 +92089,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:92453: $lt_compile\"" >&5) + (eval echo "\"configure:92092: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "configure:92457: \$? = $ac_status" >&5 + echo "configure:92096: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -92477,14 +92116,14 @@ ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +printf '%s\n' "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* @@ -92492,18 +92131,18 @@ touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -printf "%s\n" "$hard_links" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf '%s\n' "$hard_links" >&6; } if test "$hard_links" = no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf '%s\n' "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' @@ -92529,8 +92168,8 @@ esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -printf "%s\n" "$ld_shlibs_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +printf '%s\n' "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # @@ -92550,7 +92189,7 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -92558,7 +92197,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest @@ -92576,7 +92215,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc_CXX=no @@ -92588,15 +92227,15 @@ cat conftest.err 1>&5 fi $rm conftest* - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 -printf "%s\n" "$archive_cmds_need_lc_CXX" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +printf '%s\n' "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' @@ -93153,8 +92792,8 @@ dynamic_linker=no ;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -printf "%s\n" "$dynamic_linker" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf '%s\n' "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test ${lt_cv_sys_lib_search_path_spec+y} @@ -93181,7 +92820,7 @@ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ @@ -93206,8 +92845,8 @@ # directories. hardcode_action_CXX=unsupported fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -printf "%s\n" "$hardcode_action_CXX" >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +printf '%s\n' "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported @@ -93719,10 +93358,10 @@ - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Generating files${T_ME}" >&5 -printf "%s\n" "${T_MD}Generating files${T_ME}" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf '%s\n' "" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${T_MD}Generating files${T_ME}" >&5 +printf '%s\n' "${T_MD}Generating files${T_ME}" >&6; } CXXFLAGS_CLEAN=$CXXFLAGS @@ -94176,7 +93815,7 @@ -printf "%s\n" "#define HAVE_BUILD_DEFS_H 1" >>confdefs.h +printf '%s\n' "#define HAVE_BUILD_DEFS_H 1" >>confdefs.h as_fn_append BUILD_DIR " main main/streams scripts scripts/man1 TSRM Zend Zend/asm Zend/Optimizer" @@ -94214,44 +93853,7 @@ _ACEOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | +ac_cache_dump | sed ' /^ac_cv_env_/b end t clear @@ -94263,8 +93865,8 @@ if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -94278,8 +93880,8 @@ fi fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -94296,7 +93898,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -94314,13 +93916,13 @@ PHP_VAR_SUBST="$PHP_VAR_SUBST phplibdir" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating build directories" >&5 -printf "%s\n" "$as_me: creating build directories" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating build directories" >&5 +printf '%s\n' "$as_me: creating build directories" >&6;} $php_shtool mkdir -p $BUILD_DIR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating Makefile" >&5 -printf "%s\n" "$as_me: creating Makefile" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating Makefile" >&5 +printf '%s\n' "$as_me: creating Makefile" >&6;} cat >Makefile <&5 -printf "%s\n" "$as_me: patching main/php_config.h.in" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: patching main/php_config.h.in" >&5 +printf '%s\n' "$as_me: patching main/php_config.h.in" >&6;} $SED -e 's/^#undef PACKAGE_[^ ]*/\/\* & \*\//g' < $srcdir/main/php_config.h.in \ > $srcdir/main/php_config.h.in.tmp && mv $srcdir/main/php_config.h.in.tmp $srcdir/main/php_config.h.in : "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in #( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; #( + */*) : + ;; #( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -94363,7 +93973,7 @@ SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -94375,7 +93985,7 @@ emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. + # contradicts POSIX and common usage. Disable this. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( @@ -94462,7 +94072,7 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi @@ -94478,9 +94088,9 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - printf "%s\n" "$as_me: error: $2" >&2 + printf '%s\n' "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -94575,7 +94185,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | +printf '%s\n' X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -94597,29 +94207,6 @@ as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -94661,7 +94248,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -94670,7 +94257,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | +printf '%s\n' X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -94723,19 +94310,19 @@ exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## _ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PHP $as_me 8.4.26, which was -generated by GNU Autoconf 2.72. Invocation command line was +This file was extended by PHP $as_me 8.4.27, which was +generated by GNU Autoconf 2.73. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -94757,7 +94344,7 @@ esac -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -94765,7 +94352,7 @@ _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files @@ -94798,25 +94385,29 @@ PHP home page: ." _ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -PHP config.status 8.4.26 -configured by $0, generated by GNU Autoconf 2.72, +PHP config.status 8.4.27 +configured by $0, generated by GNU Autoconf 2.73, with options \\"\$ac_cs_config\\" -Copyright (C) 2023 Free Software Foundation, Inc. +Copyright (C) 2026 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' -test -n "\$AWK" || AWK=awk +test -n "\$AWK" || { + awk '' >$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 @@ -94844,15 +94435,15 @@ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; + printf '%s\n' "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; + printf '%s\n' "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -94860,7 +94451,7 @@ --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -94869,7 +94460,7 @@ as_fn_error $? "ambiguous option: '$1' Try '$0 --help' for more information.";; --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; + printf '%s\n' "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -94893,29 +94484,29 @@ fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - printf "%s\n" "$ac_log" + printf '%s\n' "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # @@ -94933,7 +94524,7 @@ _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -95034,13 +94625,13 @@ echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then @@ -95051,7 +94642,7 @@ done rm -f conf$$subs.sh -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' @@ -95096,9 +94687,9 @@ N s/\n// } -' >>$CONFIG_STATUS || ac_write_fail=1 +' >>"$CONFIG_STATUS" || ac_write_fail=1 rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 @@ -95127,7 +94718,7 @@ _ACAWK _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else @@ -95159,7 +94750,7 @@ }' fi -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. @@ -95230,9 +94821,9 @@ b cont ' >$CONFIG_STATUS || ac_write_fail=1 +"/g' >>"$CONFIG_STATUS" || ac_write_fail=1 -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } @@ -95250,8 +94841,12 @@ macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] + print prefix "define", macro suffix next } else { # Replace #undef with comments. This is necessary, for example, @@ -95266,7 +94861,7 @@ { print } _ACAWK _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" @@ -95310,7 +94905,7 @@ esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -95318,17 +94913,17 @@ # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | + ac_sed_conf_input=`printf '%s\n' "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -95345,7 +94940,7 @@ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | +printf '%s\n' X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -95369,9 +94964,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -95407,7 +95002,7 @@ _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= @@ -95424,10 +95019,10 @@ case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g @@ -95441,11 +95036,11 @@ # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t @@ -95467,9 +95062,9 @@ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -95485,27 +95080,27 @@ # if test x"$ac_file" != x-; then { - printf "%s\n" "/* $configure_input */" >&1 \ + printf '%s\n' "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - printf "%s\n" "/* $configure_input */" >&1 \ + printf '%s\n' "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; - :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -95517,7 +95112,7 @@ else case e in #( e) if test "x$APACHE_THREADED_MPM" = xno then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: +--------------------------------------------------------------------+ | *** WARNING *** | | | @@ -95526,7 +95121,7 @@ | PHP with --enable-zts | +--------------------------------------------------------------------+ " >&5 -printf "%s\n" "$as_me: WARNING: +printf '%s\n' "$as_me: WARNING: +--------------------------------------------------------------------+ | *** WARNING *** | | | @@ -95566,7 +95161,7 @@ as_fn_exit 0 _ACEOF -ac_clean_files=$ac_clean_files_save +ac_clean_CONFIG_STATUS= test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 @@ -95582,19 +95177,26 @@ # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: + case $CONFIG_STATUS in #( + -*) : + ac_no_opts=-- ;; #( + *) : + ac_no_opts= ;; +esac ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff -Nru php8.4-8.4.26/configure.ac php8.4-8.4.27/configure.ac --- php8.4-8.4.26/configure.ac 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/configure.ac 2026-10-19 14:38:59.000000000 +0000 @@ -17,7 +17,7 @@ dnl ---------------------------------------------------------------------------- AC_PREREQ([2.68]) -AC_INIT([PHP],[8.4.26],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) +AC_INIT([PHP],[8.4.27],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) AC_CONFIG_SRCDIR([main/php_version.h]) AC_CONFIG_AUX_DIR([build]) AC_PRESERVE_HELP_ORDER diff -Nru php8.4-8.4.26/debian/changelog php8.4-8.4.27/debian/changelog --- php8.4-8.4.26/debian/changelog 2026-09-24 17:16:18.000000000 +0000 +++ php8.4-8.4.27/debian/changelog 2026-10-21 07:53:46.000000000 +0000 @@ -1,3 +1,11 @@ +php8.4 (8.4.27-1~deb13u1) trixie-security; urgency=high + + * New upstream version 8.4.27 + + (CVE-2026-109618, CVE-2026-109619): Avoid state corruption via + bailout. + + -- Ondřej Surý Wed, 21 Oct 2026 09:53:46 +0200 + php8.4 (8.4.26-1~deb13u1) trixie-security; urgency=high * New upstream version 8.4.26 diff -Nru php8.4-8.4.26/ext/bcmath/bcmath.c php8.4-8.4.27/ext/bcmath/bcmath.c --- php8.4-8.4.26/ext/bcmath/bcmath.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/bcmath/bcmath.c 2026-10-19 14:38:59.000000000 +0000 @@ -1048,6 +1048,9 @@ } *ret = bc_add(n1, n2, *scale); (*ret)->n_scale = MIN(*scale, (*ret)->n_scale); + if (bc_is_zero(*ret)) { + (*ret)->n_sign = PLUS; + } bc_rm_trailing_zeros(*ret); } @@ -1060,6 +1063,9 @@ } *ret = bc_sub(n1, n2, *scale); (*ret)->n_scale = MIN(*scale, (*ret)->n_scale); + if (bc_is_zero(*ret)) { + (*ret)->n_sign = PLUS; + } bc_rm_trailing_zeros(*ret); } @@ -1076,6 +1082,9 @@ } *ret = bc_multiply(n1, n2, *scale); (*ret)->n_scale = MIN(*scale, (*ret)->n_scale); + if (bc_is_zero(*ret)) { + (*ret)->n_sign = PLUS; + } bc_rm_trailing_zeros(*ret); return SUCCESS; } diff -Nru php8.4-8.4.26/ext/bcmath/libbcmath/src/div.c php8.4-8.4.27/ext/bcmath/libbcmath/src/div.c --- php8.4-8.4.26/ext/bcmath/libbcmath/src/div.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/bcmath/libbcmath/src/div.c 2026-10-19 14:38:59.000000000 +0000 @@ -349,8 +349,12 @@ *quot = bc_new_num_nonzeroed(numerator->n_len, quot_scale); char *qptr = (*quot)->n_value; memcpy(qptr, numerator->n_value, numerator->n_len + quot_scale); - (*quot)->n_sign = numerator->n_sign == divisor->n_sign ? PLUS : MINUS; _bc_rm_leading_zeros(*quot); + if (bc_is_zero(*quot)) { + (*quot)->n_sign = PLUS; + } else { + (*quot)->n_sign = numerator->n_sign == divisor->n_sign ? PLUS : MINUS; + } return true; } @@ -475,7 +479,11 @@ for (size_t i = 0; i < numerator_bottom_extension; i++) { *qptr++ = 0; } - (*quot)->n_sign = numerator->n_sign == divisor->n_sign ? PLUS : MINUS; + if (bc_is_zero(*quot)) { + (*quot)->n_sign = PLUS; + } else { + (*quot)->n_sign = numerator->n_sign == divisor->n_sign ? PLUS : MINUS; + } return true; } diff -Nru php8.4-8.4.26/ext/bcmath/libbcmath/src/raise.c php8.4-8.4.27/ext/bcmath/libbcmath/src/raise.c --- php8.4-8.4.26/ext/bcmath/libbcmath/src/raise.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/bcmath/libbcmath/src/raise.c 2026-10-19 14:38:59.000000000 +0000 @@ -102,6 +102,9 @@ bc_free_num (result); *result = temp; (*result)->n_scale = MIN(scale, (*result)->n_scale); + if (bc_is_zero(*result)) { + (*result)->n_sign = PLUS; + } } bc_free_num (&power); return true; diff -Nru php8.4-8.4.26/ext/bcmath/tests/gh17398.phpt php8.4-8.4.27/ext/bcmath/tests/gh17398.phpt --- php8.4-8.4.26/ext/bcmath/tests/gh17398.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/bcmath/tests/gh17398.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -7,4 +7,6 @@ bcmul('0', '0', 2147483647); ?> --EXPECTF-- -Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d +Hard memory limit of 268435456 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d + +Termsig=9 diff -Nru php8.4-8.4.26/ext/bcmath/tests/number/methods/calc_methods_zero_result_sign.phpt php8.4-8.4.27/ext/bcmath/tests/number/methods/calc_methods_zero_result_sign.phpt --- php8.4-8.4.26/ext/bcmath/tests/number/methods/calc_methods_zero_result_sign.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/bcmath/tests/number/methods/calc_methods_zero_result_sign.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +BcMath\Number calc methods return an unsigned zero when the result truncates to zero +--EXTENSIONS-- +bcmath +--FILE-- +$method($arg, $scale); + echo "{$num} {$method} {$arg}: {$ret} ", $ret <=> 0, ' ', var_export($ret == 0, true), "\n"; +} + +[$quot, $rem] = (new BcMath\Number('-0.001'))->divmod('1', 0); +echo "-0.001 divmod 1: {$quot} ", $quot <=> 0, ' ', var_export($quot == 0, true), "\n"; +?> +--EXPECT-- +-0.001 div 1: 0 0 true +0.001 div -1: 0 0 true +-0.001 div 10: 0.00 0 true +-0.001 div 0.1: 0.0 0 true +-0.001 add -0.001: 0 0 true +-0.001 sub 0.001: 0 0 true +-0.001 mul 1: 0 0 true +-0.1 pow 3: 0.00 0 true +-0.001 divmod 1: 0 0 true diff -Nru php8.4-8.4.26/ext/bz2/bz2.c php8.4-8.4.27/ext/bz2/bz2.c --- php8.4-8.4.26/ext/bz2/bz2.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/bz2/bz2.c 2026-10-19 14:38:59.000000000 +0000 @@ -59,7 +59,7 @@ struct php_bz2_stream_data_t { BZFILE *bz_file; - php_stream *stream; + zend_resource *stream_res; }; /* {{{ BZip2 stream implementation */ @@ -131,8 +131,15 @@ BZ2_bzclose(self->bz_file); } - if (self->stream) { - php_stream_free(self->stream, PHP_STREAM_FREE_CLOSE | (close_handle == 0 ? PHP_STREAM_FREE_PRESERVE_HANDLE : 0)); + /* The inner stream may have been closed by the user, only its resource is held */ + if (self->stream_res) { + php_stream *inner = zend_fetch_resource2( + self->stream_res, NULL, php_file_le_stream(), php_file_le_pstream()); + if (inner) { + php_stream_free(inner, PHP_STREAM_FREE_CLOSE | (close_handle == 0 ? PHP_STREAM_FREE_PRESERVE_HANDLE : 0)); + } else { + zend_list_delete(self->stream_res); + } } efree(self); @@ -158,6 +165,23 @@ }; /* {{{ Bzip2 stream openers */ + +/* bzlib closes the descriptor it is given, so it gets a duplicate */ +static BZFILE *php_bz2_bzdopen(php_socket_t fd, const char *mode) +{ + int dup_fd = dup((int) fd); + if (dup_fd == -1) { + return NULL; + } + + BZFILE *bz = BZ2_bzdopen(dup_fd, mode); + if (!bz) { + close(dup_fd); + } + + return bz; +} + PHP_BZ2_API php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, const char *mode, php_stream *innerstream STREAMS_DC) { @@ -165,8 +189,9 @@ self = emalloc(sizeof(*self)); - self->stream = innerstream; + self->stream_res = NULL; if (innerstream) { + self->stream_res = innerstream->res; GC_ADDREF(innerstream->res); } self->bz_file = bz; @@ -223,7 +248,7 @@ if (stream) { php_socket_t fd; if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void **) &fd, REPORT_ERRORS)) { - bz_file = BZ2_bzdopen((int)fd, mode); + bz_file = php_bz2_bzdopen(fd, mode); } } @@ -399,7 +424,10 @@ RETURN_FALSE; } - bz = BZ2_bzdopen((int)fd, mode); + bz = php_bz2_bzdopen(fd, mode); + if (!bz) { + RETURN_FALSE; + } stream = php_stream_bz2open_from_BZFILE(bz, mode, stream); } else { @@ -469,7 +497,10 @@ dest_len = (unsigned int) chunk_len; /* Allocate the destination buffer */ - dest = zend_string_alloc(dest_len, 0); + dest = zend_string_falloc(dest_len, 0, /* fallible */ true); + if (!dest) { + RETURN_OOM(); + } /* Handle the optional arguments */ if (argc > 1) { @@ -498,7 +529,7 @@ PHP_FUNCTION(bzdecompress) { char *source; - zend_string *dest; + zend_string *dest = NULL, *tmp; size_t source_len; int error; bool small = 0; @@ -520,7 +551,10 @@ bzs.avail_in = source_len; /* in most cases bz2 offers at least 2:1 compression, so we use that as our base */ - dest = zend_string_safe_alloc(source_len, 2, 1, 0); + dest = zend_string_safe_falloc(source_len, 2, 1, 0, /* fallible */ true); + if (!dest) { + goto failure; + } bzs.avail_out = source_len * 2; bzs.next_out = ZSTR_VAL(dest); @@ -532,7 +566,11 @@ /* no reason to continue if we're going to drop it anyway */ break; } - dest = zend_string_safe_realloc(dest, 1, bzs.avail_out+1, (size_t) size, 0); + tmp = zend_string_safe_frealloc(dest, 1, bzs.avail_out+1, (size_t) size, 0, /* fallible */ true); + if (!tmp) { + goto failure; + } + dest = tmp; bzs.next_out = ZSTR_VAL(dest) + size; } @@ -543,7 +581,11 @@ zend_string_efree(dest); RETVAL_LONG(BZ_MEM_ERROR); } else { - dest = zend_string_safe_realloc(dest, 1, (size_t)size, 1, 0); + tmp = zend_string_safe_frealloc(dest, 1, (size_t)size, 1, 0, /* fallible */ true); + if (!tmp) { + goto failure; + } + dest = tmp; ZSTR_LEN(dest) = (size_t)size; ZSTR_VAL(dest)[(size_t)size] = '\0'; RETVAL_STR(dest); @@ -554,6 +596,13 @@ } BZ2_bzDecompressEnd(&bzs); + return; + +failure: + if (dest) { + zend_string_efree(dest); + } + BZ2_bzDecompressEnd(&bzs); } /* }}} */ diff -Nru php8.4-8.4.26/ext/bz2/bz2_filter.c php8.4-8.4.27/ext/bz2/bz2_filter.c --- php8.4-8.4.26/ext/bz2/bz2_filter.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/bz2/bz2_filter.c 2026-10-19 14:38:59.000000000 +0000 @@ -90,6 +90,10 @@ bucket = php_stream_bucket_make_writeable(buckets_in->head); while (bin < bucket->buflen) { + /* Output is unbounded relative to the input. */ + if (ZEND_HAS_OOM()) { + break; + } if (data->status == PHP_BZ2_UNINITIALIZED) { status = BZ2_bzDecompressInit(streamp, 0, data->small_footprint); @@ -155,7 +159,7 @@ if ((data->status == PHP_BZ2_RUNNING) && (flags & PSFS_FLAG_FLUSH_CLOSE)) { /* Spit it out! */ status = BZ_OK; - while (status == BZ_OK) { + while (status == BZ_OK && !ZEND_HAS_OOM()) { status = BZ2_bzDecompress(&(data->strm)); if (data->strm.avail_out < data->outbuf_len) { size_t bucketlen = data->outbuf_len - data->strm.avail_out; diff -Nru php8.4-8.4.26/ext/bz2/tests/bzopen_resource_fclose.phpt php8.4-8.4.27/ext/bz2/tests/bzopen_resource_fclose.phpt --- php8.4-8.4.26/ext/bz2/tests/bzopen_resource_fclose.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/bz2/tests/bzopen_resource_fclose.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,41 @@ +--TEST-- +bzopen() on a stream resource: the inner stream may be closed first +--EXTENSIONS-- +bz2 +--FILE-- + +--EXPECT-- +int(700) +bool(true) +bool(true) +bool(true) +int(0) +bool(true) +bool(true) diff -Nru php8.4-8.4.26/ext/bz2/tests/oom_bzcompress.phpt php8.4-8.4.27/ext/bz2/tests/oom_bzcompress.phpt --- php8.4-8.4.26/ext/bz2/tests/oom_bzcompress.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/bz2/tests/oom_bzcompress.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +bzcompress() output buffer pre-allocation doesn't reach hard limit +--EXTENSIONS-- +bz2 +--INI-- +memory_limit=512M +--SKIPIF-- + +--FILE-- + $hard - memory_get_usage(true)); + +bzcompress($subject); +echo "not reached\n"; +?> +--EXPECTF-- +bool(true) + +Fatal error: Allowed memory size of 536870912 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/bz2/tests/oom_bzdecompress.phpt php8.4-8.4.27/ext/bz2/tests/oom_bzdecompress.phpt --- php8.4-8.4.26/ext/bz2/tests/oom_bzdecompress.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/bz2/tests/oom_bzdecompress.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +bzdecompress() doesn't reach hard limit +--EXTENSIONS-- +bz2 +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/bz2/tests/oom_bzip2_decompress_filter.phpt php8.4-8.4.27/ext/bz2/tests/oom_bzip2_decompress_filter.phpt --- php8.4-8.4.26/ext/bz2/tests/oom_bzip2_decompress_filter.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/bz2/tests/oom_bzip2_decompress_filter.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +bzip2.decompress stream filter doesn't reach hard limit +--EXTENSIONS-- +bz2 +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/curl/interface.c php8.4-8.4.27/ext/curl/interface.c --- php8.4-8.4.26/ext/curl/interface.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/curl/interface.c 2026-10-19 14:38:59.000000000 +0000 @@ -563,6 +563,34 @@ } /* }}} */ +static void php_curl_call_callback( + php_curl *ch, zend_fcall_info_cache *fcc, zval *retval, uint32_t argc, zval *argv) +{ + /* The callback may replace or clear its own FCC. Keep its objects alive until + * the call returns, without taking ownership of the FCC's trampoline. */ + zend_object *object = fcc->object; + zend_object *closure = fcc->closure; + if (object) { + GC_ADDREF(object); + } + if (closure) { + GC_ADDREF(closure); + } + + bool was_in_callback = ch->in_callback; + ch->in_callback = true; + zend_call_known_fcc(fcc, retval, argc, argv, NULL); + + /* Destructors may also call back into curl, so keep the callback guard set. */ + if (object) { + OBJ_RELEASE(object); + } + if (closure) { + OBJ_RELEASE(closure); + } + ch->in_callback = was_in_callback; +} + /* {{{ curl_write */ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx) { @@ -583,7 +611,13 @@ return fwrite(data, size, nmemb, write_handler->fp); case PHP_CURL_RETURN: if (length > 0) { - smart_str_appendl(&write_handler->buf, data, length); + if (!smart_str_fappendl_ex(&write_handler->buf, data, length, /* persistent */ false, /* fallible */ true)) { +#ifdef CURL_WRITEFUNC_ERROR + return CURL_WRITEFUNC_ERROR; +#else + return 0; +#endif + } } break; case PHP_CURL_USER: { @@ -594,9 +628,7 @@ ZVAL_OBJ(&argv[0], &ch->std); ZVAL_STRINGL(&argv[1], data, length); - ch->in_callback = true; - zend_call_known_fcc(&write_handler->fcc, &retval, /* param_count */ 2, argv, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &write_handler->fcc, &retval, /* argc */ 2, argv); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); /* TODO Check callback returns an int or something castable to int */ @@ -630,9 +662,7 @@ ZVAL_STRING(&argv[1], pattern); ZVAL_STRING(&argv[2], string); - ch->in_callback = true; - zend_call_known_fcc(&ch->handlers.fnmatch, &retval, /* param_count */ 3, argv, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &ch->handlers.fnmatch, &retval, /* argc */ 3, argv); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); @@ -670,9 +700,7 @@ ZVAL_LONG(&args[3], (zend_long)ultotal); ZVAL_LONG(&args[4], (zend_long)ulnow); - ch->in_callback = true; - zend_call_known_fcc(&ch->handlers.progress, &retval, /* param_count */ 5, args, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &ch->handlers.progress, &retval, /* argc */ 5, args); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); @@ -711,9 +739,7 @@ ZVAL_LONG(&argv[3], ultotal); ZVAL_LONG(&argv[4], ulnow); - ch->in_callback = true; - zend_call_known_fcc(&ch->handlers.xferinfo, &retval, /* param_count */ 5, argv, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &ch->handlers.xferinfo, &retval, /* argc */ 5, argv); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); @@ -756,9 +782,7 @@ ZVAL_LONG(&args[3], conn_primary_port); ZVAL_LONG(&args[4], conn_local_port); - ch->in_callback = true; - zend_call_known_fcc(&ch->handlers.prereq, &retval, /* param_count */ 5, args, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &ch->handlers.prereq, &retval, /* argc */ 5, args); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); @@ -803,9 +827,7 @@ ZVAL_STRINGL(&args[2], key, keylen); ZVAL_LONG(&args[3], keylen); - ch->in_callback = true; - zend_call_known_fcc(&ch->handlers.sshhostkey, &retval, /* param_count */ 4, args, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &ch->handlers.sshhostkey, &retval, /* argc */ 4, args); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); @@ -855,9 +877,7 @@ } ZVAL_LONG(&argv[2], (int)size * nmemb); - ch->in_callback = true; - zend_call_known_fcc(&read_handler->fcc, &retval, /* param_count */ 3, argv, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &read_handler->fcc, &retval, /* argc */ 3, argv); if (!Z_ISUNDEF(retval)) { _php_curl_verify_handlers(ch, /* reporterror */ true); if (Z_TYPE(retval) == IS_STRING) { @@ -907,9 +927,7 @@ ZVAL_OBJ(&argv[0], &ch->std); ZVAL_STRINGL(&argv[1], data, length); - ch->in_callback = true; - zend_call_known_fcc(&write_handler->fcc, &retval, /* param_count */ 2, argv, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &write_handler->fcc, &retval, /* argc */ 2, argv); if (!Z_ISUNDEF(retval)) { // TODO: Check for valid int type for return value _php_curl_verify_handlers(ch, /* reporterror */ true); @@ -963,9 +981,7 @@ ZVAL_LONG(&args[1], type); ZVAL_STRINGL(&args[2], data, size); - ch->in_callback = true; - zend_call_known_fcc(&ch->handlers.debug, NULL, /* param_count */ 3, args, /* named_params */ NULL); - ch->in_callback = false; + php_curl_call_callback(ch, &ch->handlers.debug, NULL, /* argc */ 3, args); zval_ptr_dtor(&args[0]); zval_ptr_dtor(&args[2]); diff -Nru php8.4-8.4.26/ext/curl/tests/curl_callback_lifetime.phpt php8.4-8.4.27/ext/curl/tests/curl_callback_lifetime.phpt --- php8.4-8.4.26/ext/curl/tests/curl_callback_lifetime.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/curl_callback_lifetime.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,65 @@ +--TEST-- +GH-23814 (Curl callbacks keep their receiver alive when replacing or clearing themselves) +--EXTENSIONS-- +curl +--SKIPIF-- + +--FILE-- +action === 'clear') { + curl_setopt_array($handle, [CURLOPT_WRITEFUNCTION => null]); + } else { + curl_setopt($handle, CURLOPT_WRITEFUNCTION, static fn($handle, $data) => strlen($data)); + } + gc_collect_cycles(); + echo $this->value, "\n"; + if ($this->action === 'throw') { + throw new Exception('Callback exception'); + } + return strlen($data); + } + + public function __call(string $name, array $args): int { + return $this->write(...$args); + } + + public function __destruct() { + echo "Destroyed\n"; + } +} + +foreach (['replace' => 'write', 'clear' => 'missing', 'throw' => 'write'] as $action => $method) { + echo "$method / $action\n"; + $handle = curl_init('file://' . __FILE__); + curl_setopt($handle, CURLOPT_WRITEFUNCTION, [new Callback($action, $handle), $method]); + try { + var_dump(curl_exec($handle)); + } catch (Exception $e) { + echo $e->getMessage(), "\n"; + } + unset($handle); +} +?> +--EXPECT-- +write / replace +Still alive +Destroyed +bool(true) +missing / clear +Still alive +Destroyed +bool(true) +write / throw +Still alive +Destroyed +Callback exception diff -Nru php8.4-8.4.26/ext/curl/tests/curl_callback_lifetime_destructor.phpt php8.4-8.4.27/ext/curl/tests/curl_callback_lifetime_destructor.phpt --- php8.4-8.4.26/ext/curl/tests/curl_callback_lifetime_destructor.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/curl_callback_lifetime_destructor.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,52 @@ +--TEST-- +GH-23814 (Curl callback receivers are destroyed with the callback guard still set) +--EXTENSIONS-- +curl +--SKIPIF-- + +--FILE-- +handle); + } catch (Error $e) { + echo $e->getMessage(), "\n"; + } + } + curl_setopt($this->handle, CURLOPT_WRITEFUNCTION, + static function (CurlHandle $handle, string $data): int { + echo "Callback installed by destructor\n"; + return strlen($data); + }); + } +} + +$handle = curl_init('file://' . __FILE__); +curl_setopt($handle, CURLOPT_WRITEFUNCTION, [new Callback($handle), 'write']); +var_dump(curl_exec($handle)); +var_dump(curl_exec($handle)); +curl_reset($handle); +echo "Reset outside callback succeeded\n"; +?> +--EXPECT-- +Callback returning +curl_reset(): Attempt to reset cURL handle from a callback +curl_close(): Attempt to close cURL handle from a callback +bool(true) +Callback installed by destructor +bool(true) +Reset outside callback succeeded diff -Nru php8.4-8.4.26/ext/curl/tests/curl_setopt_callback_reentrancy.phpt php8.4-8.4.27/ext/curl/tests/curl_setopt_callback_reentrancy.phpt --- php8.4-8.4.26/ext/curl/tests/curl_setopt_callback_reentrancy.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/curl_setopt_callback_reentrancy.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +GH-23814 / GH-23860 (A curl callback can replace itself) +--EXTENSIONS-- +curl +--SKIPIF-- + +--FILE-- + + static function (CurlHandle $handle, string $data): int { + echo "Replacement callback\n"; + return strlen($data); + }, + ])); + + return strlen($data); +}; +curl_setopt($handle, CURLOPT_WRITEFUNCTION, $callback); +var_dump(curl_exec($handle)); +var_dump(curl_exec($handle)); +var_dump(curl_setopt($handle, CURLOPT_WRITEFUNCTION, null)); +?> +--EXPECT-- +Original callback +bool(true) +bool(true) +bool(true) +Replacement callback +bool(true) +bool(true) diff -Nru php8.4-8.4.26/ext/curl/tests/curl_setopt_ssl.phpt php8.4-8.4.27/ext/curl/tests/curl_setopt_ssl.phpt --- php8.4-8.4.26/ext/curl/tests/curl_setopt_ssl.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/curl_setopt_ssl.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -73,8 +73,24 @@ die('failed to start server'); } try { - // Give the server time to start - sleep(1); + // Wait until OpenSSL is actually listening before making the first request. + $ready = false; + for ($i = 0; $i < 100; $i++) { + $connection = @stream_socket_client("tcp://127.0.0.1:$port", $errno, $errstr, 0.05); + if ($connection !== false) { + fclose($connection); + $ready = true; + break; + } + if (!proc_get_status($process)['running']) { + break; + } + usleep(50000); + } + if (!$ready) { + stream_set_blocking($pipes[2], false); + throw new RuntimeException('OpenSSL server did not start: ' . trim(stream_get_contents($pipes[2]))); + } echo "case 1: client cert and key from string\n"; $ch = curl_init("https://127.0.0.1:$port/"); diff -Nru php8.4-8.4.26/ext/curl/tests/oom_curl_exec.phpt php8.4-8.4.27/ext/curl/tests/oom_curl_exec.phpt --- php8.4-8.4.26/ext/curl/tests/oom_curl_exec.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/oom_curl_exec.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +curl_exec() doesn't reach hard limit +--EXTENSIONS-- +curl +--FILE-- + ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes +); +echo stream_get_contents($pipes[1]); +echo stream_get_contents($pipes[2]); +fclose($pipes[1]); +fclose($pipes[2]); +proc_close($p); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/curl/tests/oom_curl_multi_exec.phpt php8.4-8.4.27/ext/curl/tests/oom_curl_multi_exec.phpt --- php8.4-8.4.26/ext/curl/tests/oom_curl_multi_exec.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/oom_curl_multi_exec.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,43 @@ +--TEST-- +curl_multi_exec() doesn't reach hard limit +--EXTENSIONS-- +curl +--FILE-- + ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes +); +echo stream_get_contents($pipes[1]); +echo stream_get_contents($pipes[2]); +fclose($pipes[1]); +fclose($pipes[2]); +proc_close($p); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/curl/tests/responder/get.inc php8.4-8.4.27/ext/curl/tests/responder/get.inc --- php8.4-8.4.26/ext/curl/tests/responder/get.inc 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/curl/tests/responder/get.inc 2026-10-19 14:38:59.000000000 +0000 @@ -46,6 +46,14 @@ case 'method': echo $_SERVER['REQUEST_METHOD']; break; + case 'bigbody': + $mib = isset($_GET['mib']) ? (int) $_GET['mib'] : 12; + header('Content-Type: application/octet-stream'); + $chunk = str_repeat('x', 1024 * 1024); + for ($i = 0; $i < $mib; $i++) { + echo $chunk; + } + break; default: echo "Hello World!\n"; echo "Hello World!"; diff -Nru php8.4-8.4.26/ext/date/lib/parse_date.c php8.4-8.4.27/ext/date/lib/parse_date.c --- php8.4-8.4.26/ext/date/lib/parse_date.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/date/lib/parse_date.c 2026-10-19 14:38:59.000000000 +0000 @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 on Wed Jan 14 14:20:50 2026 */ +/* Generated by re2c 1.0.3 on Wed Sep 30 23:15:59 2026 */ #line 1 "ext/date/lib/parse_date.re" /* * The MIT License (MIT) @@ -78,6 +78,7 @@ #define TIMELIB_RELATIVE 310 #define TIMELIB_ERROR 999 +#define TIMELIB_MAX_ERRORS 1000 /* Some compilers like AIX, defines uchar in sys/types.h */ #undef uchar @@ -372,6 +373,10 @@ static void add_warning(Scanner *s, int error_code, const char *error) { + if (s->errors->warning_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->warning_messages, &s->errors->warning_count); message->error_code = error_code; @@ -382,6 +387,10 @@ static void add_error(Scanner *s, int error_code, const char *error) { + if (s->errors->error_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->error_messages, &s->errors->error_count); message->error_code = error_code; @@ -392,6 +401,10 @@ static void add_pbf_warning(Scanner *s, int error_code, const char *error, const char *sptr, const char *cptr) { + if (s->errors->warning_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->warning_messages, &s->errors->warning_count); message->error_code = error_code; @@ -402,6 +415,10 @@ static void add_pbf_error(Scanner *s, int error_code, const char *error, const char *sptr, const char *cptr) { + if (s->errors->error_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->error_messages, &s->errors->error_count); message->error_code = error_code; @@ -557,7 +574,6 @@ int len = 0; /* Skip over non-numeric chars */ - while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) { if (**ptr == '\0') { add_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Found unexpected data"); @@ -571,6 +587,7 @@ str[0] = '+'; /* First position is the sign */ str_ptr = str + 1; + while ((**ptr == '+') || (**ptr == '-')) { if (**ptr == '-') { str[0] = str[0] == '+' ? '-' : '+'; @@ -1028,11 +1045,11 @@ std: s->tok = cursor; s->len = 0; -#line 1161 "ext/date/lib/parse_date.re" +#line 1178 "ext/date/lib/parse_date.re" -#line 1036 "ext/date/lib/parse_date.c" +#line 1053 "ext/date/lib/parse_date.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1213,23 +1230,23 @@ YYDEBUG(2, *YYCURSOR); ++YYCURSOR; YYDEBUG(3, *YYCURSOR); -#line 1994 "ext/date/lib/parse_date.re" +#line 2011 "ext/date/lib/parse_date.re" { s->pos = cursor; s->line++; goto std; } -#line 1222 "ext/date/lib/parse_date.c" +#line 1239 "ext/date/lib/parse_date.c" yy4: YYDEBUG(4, *YYCURSOR); ++YYCURSOR; yy5: YYDEBUG(5, *YYCURSOR); -#line 2000 "ext/date/lib/parse_date.re" +#line 2017 "ext/date/lib/parse_date.re" { add_error(s, TIMELIB_ERR_UNEXPECTED_CHARACTER, "Unexpected character"); goto std; } -#line 1233 "ext/date/lib/parse_date.c" +#line 1250 "ext/date/lib/parse_date.c" yy6: YYDEBUG(6, *YYCURSOR); yyaccept = 0; @@ -1244,11 +1261,11 @@ if (yych <= '9') goto yy58; yy8: YYDEBUG(8, *YYCURSOR); -#line 1989 "ext/date/lib/parse_date.re" +#line 2006 "ext/date/lib/parse_date.re" { goto std; } -#line 1252 "ext/date/lib/parse_date.c" +#line 1269 "ext/date/lib/parse_date.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1282,11 +1299,11 @@ YYDEBUG(11, *YYCURSOR); ++YYCURSOR; YYDEBUG(12, *YYCURSOR); -#line 1984 "ext/date/lib/parse_date.re" +#line 2001 "ext/date/lib/parse_date.re" { goto std; } -#line 1290 "ext/date/lib/parse_date.c" +#line 1307 "ext/date/lib/parse_date.c" yy13: YYDEBUG(13, *YYCURSOR); yyaccept = 1; @@ -1787,7 +1804,7 @@ } yy20: YYDEBUG(20, *YYCURSOR); -#line 1899 "ext/date/lib/parse_date.re" +#line 1916 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("tzcorrection | tz"); @@ -1801,7 +1818,7 @@ TIMELIB_DEINIT; return TIMELIB_TIMEZONE; } -#line 1805 "ext/date/lib/parse_date.c" +#line 1822 "ext/date/lib/parse_date.c" yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -3606,7 +3623,7 @@ } yy81: YYDEBUG(81, *YYCURSOR); -#line 1646 "ext/date/lib/parse_date.re" +#line 1663 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenoyearrev"); TIMELIB_INIT; @@ -3617,7 +3634,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 3621 "ext/date/lib/parse_date.c" +#line 3638 "ext/date/lib/parse_date.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -4132,7 +4149,7 @@ } if (yych == '.') goto yy289; YYDEBUG(114, *YYCURSOR); -#line 1221 "ext/date/lib/parse_date.re" +#line 1238 "ext/date/lib/parse_date.re" { timelib_ull i; @@ -4157,7 +4174,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 4161 "ext/date/lib/parse_date.c" +#line 4178 "ext/date/lib/parse_date.c" yy115: YYDEBUG(115, *YYCURSOR); ++YYCURSOR; @@ -5883,7 +5900,7 @@ } yy177: YYDEBUG(177, *YYCURSOR); -#line 1387 "ext/date/lib/parse_date.re" +#line 1404 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("timetiny24 | timeshort24 | timelong24 | iso8601long"); @@ -5910,7 +5927,7 @@ TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 5914 "ext/date/lib/parse_date.c" +#line 5931 "ext/date/lib/parse_date.c" yy178: YYDEBUG(178, *YYCURSOR); yyaccept = 4; @@ -6939,7 +6956,7 @@ } yy224: YYDEBUG(224, *YYCURSOR); -#line 1481 "ext/date/lib/parse_date.re" +#line 1498 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("americanshort | american"); @@ -6954,7 +6971,7 @@ TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -#line 6958 "ext/date/lib/parse_date.c" +#line 6975 "ext/date/lib/parse_date.c" yy225: YYDEBUG(225, *YYCURSOR); yyaccept = 5; @@ -7197,7 +7214,7 @@ if (yych <= '9') goto yy431; yy251: YYDEBUG(251, *YYCURSOR); -#line 1563 "ext/date/lib/parse_date.re" +#line 1580 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datefull"); @@ -7211,7 +7228,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } -#line 7215 "ext/date/lib/parse_date.c" +#line 7232 "ext/date/lib/parse_date.c" yy252: YYDEBUG(252, *YYCURSOR); yyaccept = 3; @@ -7325,7 +7342,7 @@ if (yych == 'e') goto yy440; yy260: YYDEBUG(260, *YYCURSOR); -#line 1968 "ext/date/lib/parse_date.re" +#line 1985 "ext/date/lib/parse_date.re" { timelib_ull i; DEBUG_OUTPUT("relative"); @@ -7340,7 +7357,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 7344 "ext/date/lib/parse_date.c" +#line 7361 "ext/date/lib/parse_date.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -7786,7 +7803,7 @@ if (yych <= '9') goto yy471; yy290: YYDEBUG(290, *YYCURSOR); -#line 1247 "ext/date/lib/parse_date.re" +#line 1264 "ext/date/lib/parse_date.re" { timelib_sll i; timelib_ull us; @@ -7825,7 +7842,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 7829 "ext/date/lib/parse_date.c" +#line 7846 "ext/date/lib/parse_date.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -7850,7 +7867,7 @@ } yy293: YYDEBUG(293, *YYCURSOR); -#line 1809 "ext/date/lib/parse_date.re" +#line 1826 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("ago"); TIMELIB_INIT; @@ -7870,7 +7887,7 @@ TIMELIB_DEINIT; return TIMELIB_AGO; } -#line 7874 "ext/date/lib/parse_date.c" +#line 7891 "ext/date/lib/parse_date.c" yy294: YYDEBUG(294, *YYCURSOR); yyaccept = 7; @@ -7909,7 +7926,7 @@ } yy295: YYDEBUG(295, *YYCURSOR); -#line 1889 "ext/date/lib/parse_date.re" +#line 1906 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("monthtext"); TIMELIB_INIT; @@ -7918,7 +7935,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 7922 "ext/date/lib/parse_date.c" +#line 7939 "ext/date/lib/parse_date.c" yy296: YYDEBUG(296, *YYCURSOR); yyaccept = 7; @@ -8493,7 +8510,7 @@ } yy315: YYDEBUG(315, *YYCURSOR); -#line 1830 "ext/date/lib/parse_date.re" +#line 1847 "ext/date/lib/parse_date.re" { const timelib_relunit* relunit; DEBUG_OUTPUT("daytext"); @@ -8510,7 +8527,7 @@ TIMELIB_DEINIT; return TIMELIB_WEEKDAY; } -#line 8514 "ext/date/lib/parse_date.c" +#line 8531 "ext/date/lib/parse_date.c" yy316: YYDEBUG(316, *YYCURSOR); yych = *++YYCURSOR; @@ -8778,7 +8795,7 @@ } yy325: YYDEBUG(325, *YYCURSOR); -#line 1632 "ext/date/lib/parse_date.re" +#line 1649 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datetextual | datenoyear"); @@ -8791,7 +8808,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 8795 "ext/date/lib/parse_date.c" +#line 8812 "ext/date/lib/parse_date.c" yy326: YYDEBUG(326, *YYCURSOR); yyaccept = 10; @@ -9485,7 +9502,7 @@ } yy351: YYDEBUG(351, *YYCURSOR); -#line 1178 "ext/date/lib/parse_date.re" +#line 1195 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("now"); TIMELIB_INIT; @@ -9493,7 +9510,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 9497 "ext/date/lib/parse_date.c" +#line 9514 "ext/date/lib/parse_date.c" yy352: YYDEBUG(352, *YYCURSOR); yyaccept = 2; @@ -10996,7 +11013,7 @@ } yy420: YYDEBUG(420, *YYCURSOR); -#line 1415 "ext/date/lib/parse_date.re" +#line 1432 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("gnunocolon"); TIMELIB_INIT; @@ -11018,7 +11035,7 @@ TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -#line 11022 "ext/date/lib/parse_date.c" +#line 11039 "ext/date/lib/parse_date.c" yy421: YYDEBUG(421, *YYCURSOR); yyaccept = 13; @@ -11099,7 +11116,7 @@ } yy422: YYDEBUG(422, *YYCURSOR); -#line 1800 "ext/date/lib/parse_date.re" +#line 1817 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("year4"); TIMELIB_INIT; @@ -11107,7 +11124,7 @@ TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 11111 "ext/date/lib/parse_date.c" +#line 11128 "ext/date/lib/parse_date.c" yy423: YYDEBUG(423, *YYCURSOR); yyaccept = 3; @@ -11714,7 +11731,7 @@ YYDEBUG(456, *YYCURSOR); ++YYCURSOR; YYDEBUG(457, *YYCURSOR); -#line 1349 "ext/date/lib/parse_date.re" +#line 1366 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); TIMELIB_INIT; @@ -11731,7 +11748,7 @@ TIMELIB_DEINIT; return TIMELIB_TIME12; } -#line 11735 "ext/date/lib/parse_date.c" +#line 11752 "ext/date/lib/parse_date.c" yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; @@ -13058,7 +13075,7 @@ } yy526: YYDEBUG(526, *YYCURSOR); -#line 1187 "ext/date/lib/parse_date.re" +#line 1204 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("noon"); TIMELIB_INIT; @@ -13069,7 +13086,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 13073 "ext/date/lib/parse_date.c" +#line 13090 "ext/date/lib/parse_date.c" yy527: YYDEBUG(527, *YYCURSOR); yyaccept = 2; @@ -14115,7 +14132,7 @@ } yy567: YYDEBUG(567, *YYCURSOR); -#line 1549 "ext/date/lib/parse_date.re" +#line 1566 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("gnudateshort"); @@ -14128,7 +14145,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 14132 "ext/date/lib/parse_date.c" +#line 14149 "ext/date/lib/parse_date.c" yy568: YYDEBUG(568, *YYCURSOR); yyaccept = 15; @@ -14579,7 +14596,7 @@ } yy600: YYDEBUG(600, *YYCURSOR); -#line 1618 "ext/date/lib/parse_date.re" +#line 1635 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datenodayrev"); @@ -14592,7 +14609,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 14596 "ext/date/lib/parse_date.c" +#line 14613 "ext/date/lib/parse_date.c" yy601: YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; @@ -15967,7 +15984,7 @@ YYDEBUG(696, *YYCURSOR); ++YYCURSOR; YYDEBUG(697, *YYCURSOR); -#line 1604 "ext/date/lib/parse_date.re" +#line 1621 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datenoday"); @@ -15980,7 +15997,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 15984 "ext/date/lib/parse_date.c" +#line 16001 "ext/date/lib/parse_date.c" yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; @@ -16541,7 +16558,7 @@ } yy722: YYDEBUG(722, *YYCURSOR); -#line 1199 "ext/date/lib/parse_date.re" +#line 1216 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; @@ -16550,7 +16567,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 16554 "ext/date/lib/parse_date.c" +#line 16571 "ext/date/lib/parse_date.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -16860,7 +16877,7 @@ if (yych <= '9') goto yy897; yy739: YYDEBUG(739, *YYCURSOR); -#line 1590 "ext/date/lib/parse_date.re" +#line 1607 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pointed date YY"); @@ -16873,7 +16890,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 16877 "ext/date/lib/parse_date.c" +#line 16894 "ext/date/lib/parse_date.c" yy740: YYDEBUG(740, *YYCURSOR); yyaccept = 15; @@ -16985,7 +17002,7 @@ } yy752: YYDEBUG(752, *YYCURSOR); -#line 1535 "ext/date/lib/parse_date.re" +#line 1552 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("gnudateshorter"); @@ -16998,7 +17015,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 17002 "ext/date/lib/parse_date.c" +#line 17019 "ext/date/lib/parse_date.c" yy753: YYDEBUG(753, *YYCURSOR); yyaccept = 18; @@ -17247,7 +17264,7 @@ } yy777: YYDEBUG(777, *YYCURSOR); -#line 1461 "ext/date/lib/parse_date.re" +#line 1478 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("iso8601nocolon"); @@ -17266,7 +17283,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -#line 17270 "ext/date/lib/parse_date.c" +#line 17287 "ext/date/lib/parse_date.c" yy778: YYDEBUG(778, *YYCURSOR); yyaccept = 19; @@ -18494,7 +18511,7 @@ } yy849: YYDEBUG(849, *YYCURSOR); -#line 1938 "ext/date/lib/parse_date.re" +#line 1955 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); @@ -18523,7 +18540,7 @@ TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 18527 "ext/date/lib/parse_date.c" +#line 18544 "ext/date/lib/parse_date.c" yy850: YYDEBUG(850, *YYCURSOR); yyaccept = 20; @@ -19567,7 +19584,7 @@ } yy926: YYDEBUG(926, *YYCURSOR); -#line 1696 "ext/date/lib/parse_date.re" +#line 1713 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pgydotd"); @@ -19580,7 +19597,7 @@ TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -#line 19584 "ext/date/lib/parse_date.c" +#line 19601 "ext/date/lib/parse_date.c" yy927: YYDEBUG(927, *YYCURSOR); yyaccept = 21; @@ -19834,7 +19851,7 @@ if (yych <= '7') goto yy1059; yy942: YYDEBUG(942, *YYCURSOR); -#line 1729 "ext/date/lib/parse_date.re" +#line 1746 "ext/date/lib/parse_date.re" { timelib_sll w, d; DEBUG_OUTPUT("isoweek"); @@ -19852,7 +19869,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 19856 "ext/date/lib/parse_date.c" +#line 19873 "ext/date/lib/parse_date.c" yy943: YYDEBUG(943, *YYCURSOR); yych = *++YYCURSOR; @@ -20328,7 +20345,7 @@ if (yych == 'e') goto yy1094; yy982: YYDEBUG(982, *YYCURSOR); -#line 1872 "ext/date/lib/parse_date.re" +#line 1889 "ext/date/lib/parse_date.re" { timelib_sll i; int behavior = 0; @@ -20344,7 +20361,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 20348 "ext/date/lib/parse_date.c" +#line 20365 "ext/date/lib/parse_date.c" yy983: YYDEBUG(983, *YYCURSOR); yych = *++YYCURSOR; @@ -20691,7 +20708,7 @@ YYDEBUG(1020, *YYCURSOR); ++YYCURSOR; YYDEBUG(1021, *YYCURSOR); -#line 1578 "ext/date/lib/parse_date.re" +#line 1595 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("pointed date YYYY"); TIMELIB_INIT; @@ -20702,7 +20719,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 20706 "ext/date/lib/parse_date.c" +#line 20723 "ext/date/lib/parse_date.c" yy1022: YYDEBUG(1022, *YYCURSOR); ++YYCURSOR; @@ -20731,7 +20748,7 @@ } yy1025: YYDEBUG(1025, *YYCURSOR); -#line 1509 "ext/date/lib/parse_date.re" +#line 1526 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("iso8601date2"); @@ -20744,7 +20761,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 20748 "ext/date/lib/parse_date.c" +#line 20765 "ext/date/lib/parse_date.c" yy1026: YYDEBUG(1026, *YYCURSOR); yyaccept = 15; @@ -20964,7 +20981,7 @@ } yy1043: YYDEBUG(1043, *YYCURSOR); -#line 1497 "ext/date/lib/parse_date.re" +#line 1514 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); TIMELIB_INIT; @@ -20975,7 +20992,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 20979 "ext/date/lib/parse_date.c" +#line 20996 "ext/date/lib/parse_date.c" yy1044: YYDEBUG(1044, *YYCURSOR); yyaccept = 26; @@ -21090,7 +21107,7 @@ } yy1048: YYDEBUG(1048, *YYCURSOR); -#line 1658 "ext/date/lib/parse_date.re" +#line 1675 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenocolon"); TIMELIB_INIT; @@ -21101,7 +21118,7 @@ TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -#line 21105 "ext/date/lib/parse_date.c" +#line 21122 "ext/date/lib/parse_date.c" yy1049: YYDEBUG(1049, *YYCURSOR); yych = *++YYCURSOR; @@ -21171,7 +21188,7 @@ YYDEBUG(1059, *YYCURSOR); ++YYCURSOR; YYDEBUG(1060, *YYCURSOR); -#line 1710 "ext/date/lib/parse_date.re" +#line 1727 "ext/date/lib/parse_date.re" { timelib_sll w, d; DEBUG_OUTPUT("isoweekday"); @@ -21189,7 +21206,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 21193 "ext/date/lib/parse_date.c" +#line 21210 "ext/date/lib/parse_date.c" yy1061: YYDEBUG(1061, *YYCURSOR); yych = *++YYCURSOR; @@ -21252,7 +21269,7 @@ if (yych <= '9') goto yy1143; yy1070: YYDEBUG(1070, *YYCURSOR); -#line 1748 "ext/date/lib/parse_date.re" +#line 1765 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pgtextshort"); @@ -21265,7 +21282,7 @@ TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 21269 "ext/date/lib/parse_date.c" +#line 21286 "ext/date/lib/parse_date.c" yy1071: YYDEBUG(1071, *YYCURSOR); yych = *++YYCURSOR; @@ -21738,7 +21755,7 @@ ++YYCURSOR; yy1107: YYDEBUG(1107, *YYCURSOR); -#line 1209 "ext/date/lib/parse_date.re" +#line 1226 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; @@ -21749,7 +21766,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 21753 "ext/date/lib/parse_date.c" +#line 21770 "ext/date/lib/parse_date.c" yy1108: YYDEBUG(1108, *YYCURSOR); yyaccept = 28; @@ -22086,7 +22103,7 @@ YYDEBUG(1140, *YYCURSOR); ++YYCURSOR; YYDEBUG(1141, *YYCURSOR); -#line 1762 "ext/date/lib/parse_date.re" +#line 1779 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pgtextreverse"); @@ -22099,7 +22116,7 @@ TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 22103 "ext/date/lib/parse_date.c" +#line 22120 "ext/date/lib/parse_date.c" yy1142: YYDEBUG(1142, *YYCURSOR); ++YYCURSOR; @@ -22143,7 +22160,7 @@ } yy1145: YYDEBUG(1145, *YYCURSOR); -#line 1304 "ext/date/lib/parse_date.re" +#line 1321 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("backof | frontof"); TIMELIB_INIT; @@ -22165,7 +22182,7 @@ TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 22169 "ext/date/lib/parse_date.c" +#line 22186 "ext/date/lib/parse_date.c" yy1146: YYDEBUG(1146, *YYCURSOR); yyaccept = 29; @@ -22489,7 +22506,7 @@ } yy1172: YYDEBUG(1172, *YYCURSOR); -#line 1848 "ext/date/lib/parse_date.re" +#line 1865 "ext/date/lib/parse_date.re" { timelib_sll i; int behavior = 0; @@ -22512,7 +22529,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22516 "ext/date/lib/parse_date.c" +#line 22533 "ext/date/lib/parse_date.c" yy1173: YYDEBUG(1173, *YYCURSOR); yych = *++YYCURSOR; @@ -22524,7 +22541,7 @@ ++YYCURSOR; yy1175: YYDEBUG(1175, *YYCURSOR); -#line 1166 "ext/date/lib/parse_date.re" +#line 1183 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; @@ -22535,7 +22552,7 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22539 "ext/date/lib/parse_date.c" +#line 22556 "ext/date/lib/parse_date.c" yy1176: YYDEBUG(1176, *YYCURSOR); yyaccept = 31; @@ -23028,7 +23045,7 @@ YYDEBUG(1222, *YYCURSOR); ++YYCURSOR; YYDEBUG(1223, *YYCURSOR); -#line 1914 "ext/date/lib/parse_date.re" +#line 1931 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); TIMELIB_INIT; @@ -23051,7 +23068,7 @@ TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 23055 "ext/date/lib/parse_date.c" +#line 23072 "ext/date/lib/parse_date.c" yy1224: YYDEBUG(1224, *YYCURSOR); yych = *++YYCURSOR; @@ -23553,7 +23570,7 @@ YYDEBUG(1268, *YYCURSOR); ++YYCURSOR; YYDEBUG(1269, *YYCURSOR); -#line 1327 "ext/date/lib/parse_date.re" +#line 1344 "ext/date/lib/parse_date.re" { timelib_sll i; int behavior = 0; @@ -23574,7 +23591,7 @@ TIMELIB_DEINIT; return TIMELIB_WEEK_DAY_OF_MONTH; } -#line 23578 "ext/date/lib/parse_date.c" +#line 23595 "ext/date/lib/parse_date.c" yy1270: YYDEBUG(1270, *YYCURSOR); yyaccept = 24; @@ -23621,7 +23638,7 @@ YYDEBUG(1273, *YYCURSOR); ++YYCURSOR; YYDEBUG(1274, *YYCURSOR); -#line 1287 "ext/date/lib/parse_date.re" +#line 1304 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("firstdayof | lastdayof"); TIMELIB_INIT; @@ -23637,12 +23654,12 @@ TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 23641 "ext/date/lib/parse_date.c" +#line 23658 "ext/date/lib/parse_date.c" yy1275: YYDEBUG(1275, *YYCURSOR); ++YYCURSOR; YYDEBUG(1276, *YYCURSOR); -#line 1523 "ext/date/lib/parse_date.re" +#line 1540 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("iso8601datex"); TIMELIB_INIT; @@ -23653,7 +23670,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 23657 "ext/date/lib/parse_date.c" +#line 23674 "ext/date/lib/parse_date.c" yy1277: YYDEBUG(1277, *YYCURSOR); yych = *++YYCURSOR; @@ -23756,7 +23773,7 @@ YYDEBUG(1290, *YYCURSOR); ++YYCURSOR; YYDEBUG(1291, *YYCURSOR); -#line 1367 "ext/date/lib/parse_date.re" +#line 1384 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("mssqltime"); TIMELIB_INIT; @@ -23775,7 +23792,7 @@ TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 23779 "ext/date/lib/parse_date.c" +#line 23796 "ext/date/lib/parse_date.c" yy1292: YYDEBUG(1292, *YYCURSOR); yych = *++YYCURSOR; @@ -24199,7 +24216,7 @@ if (yych <= '9') goto yy1331; yy1329: YYDEBUG(1329, *YYCURSOR); -#line 1670 "ext/date/lib/parse_date.re" +#line 1687 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif"); @@ -24224,7 +24241,7 @@ TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -#line 24228 "ext/date/lib/parse_date.c" +#line 24245 "ext/date/lib/parse_date.c" yy1330: YYDEBUG(1330, *YYCURSOR); yych = *++YYCURSOR; @@ -24594,7 +24611,7 @@ if (yych <= ':') goto yy1383; yy1375: YYDEBUG(1375, *YYCURSOR); -#line 1776 "ext/date/lib/parse_date.re" +#line 1793 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("clf"); @@ -24617,7 +24634,7 @@ TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 24621 "ext/date/lib/parse_date.c" +#line 24638 "ext/date/lib/parse_date.c" yy1376: YYDEBUG(1376, *YYCURSOR); yyaccept = 33; @@ -24849,7 +24866,7 @@ if (yych == ':') goto yy1286; goto yy1329; } -#line 2004 "ext/date/lib/parse_date.re" +#line 2021 "ext/date/lib/parse_date.re" } @@ -24870,7 +24887,7 @@ in.errors->error_messages = NULL; if (len > 0) { - while (isspace((unsigned char)*s) && s < e) { + while (isspace((unsigned char)*s) && s <= e) { s++; } while (isspace((unsigned char)*e) && e > s) { diff -Nru php8.4-8.4.26/ext/date/lib/parse_date.re php8.4-8.4.27/ext/date/lib/parse_date.re --- php8.4-8.4.26/ext/date/lib/parse_date.re 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/date/lib/parse_date.re 2026-10-19 14:38:59.000000000 +0000 @@ -76,6 +76,7 @@ #define TIMELIB_RELATIVE 310 #define TIMELIB_ERROR 999 +#define TIMELIB_MAX_ERRORS 1000 /* Some compilers like AIX, defines uchar in sys/types.h */ #undef uchar @@ -370,6 +371,10 @@ static void add_warning(Scanner *s, int error_code, const char *error) { + if (s->errors->warning_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->warning_messages, &s->errors->warning_count); message->error_code = error_code; @@ -380,6 +385,10 @@ static void add_error(Scanner *s, int error_code, const char *error) { + if (s->errors->error_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->error_messages, &s->errors->error_count); message->error_code = error_code; @@ -390,6 +399,10 @@ static void add_pbf_warning(Scanner *s, int error_code, const char *error, const char *sptr, const char *cptr) { + if (s->errors->warning_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->warning_messages, &s->errors->warning_count); message->error_code = error_code; @@ -400,6 +413,10 @@ static void add_pbf_error(Scanner *s, int error_code, const char *error, const char *sptr, const char *cptr) { + if (s->errors->error_count >= TIMELIB_MAX_ERRORS) { + return; + } + timelib_error_message *message = alloc_error_message(&s->errors->error_messages, &s->errors->error_count); message->error_code = error_code; diff -Nru php8.4-8.4.26/ext/date/lib/parse_iso_intervals.c php8.4-8.4.27/ext/date/lib/parse_iso_intervals.c --- php8.4-8.4.26/ext/date/lib/parse_iso_intervals.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/date/lib/parse_iso_intervals.c 2026-10-19 14:38:59.000000000 +0000 @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.3 on Mon Sep 15 10:38:16 2025 */ +/* Generated by re2c 1.0.3 on Wed Sep 30 15:20:07 2026 */ #line 1 "ext/date/lib/parse_iso_intervals.re" /* * The MIT License (MIT) @@ -44,6 +44,7 @@ #define TIMELIB_PERIOD 260 #define TIMELIB_ISO_DATE 261 #define TIMELIB_ERROR 999 +#define TIMELIB_MAX_ERRORS 1000 typedef unsigned char uchar; @@ -90,6 +91,10 @@ static void add_error(Scanner *s, const char *error) { + if (s->errors->error_count >= TIMELIB_MAX_ERRORS) { + return; + } + s->errors->error_count++; s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message)); s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0; @@ -176,11 +181,11 @@ std: s->tok = cursor; s->len = 0; -#line 204 "ext/date/lib/parse_iso_intervals.re" +#line 209 "ext/date/lib/parse_iso_intervals.re" -#line 184 "ext/date/lib/parse_iso_intervals.c" +#line 189 "ext/date/lib/parse_iso_intervals.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -247,32 +252,32 @@ YYDEBUG(2, *YYCURSOR); ++YYCURSOR; YYDEBUG(3, *YYCURSOR); -#line 311 "ext/date/lib/parse_iso_intervals.re" +#line 316 "ext/date/lib/parse_iso_intervals.re" { s->pos = cursor; s->line++; goto std; } -#line 256 "ext/date/lib/parse_iso_intervals.c" +#line 261 "ext/date/lib/parse_iso_intervals.c" yy4: YYDEBUG(4, *YYCURSOR); ++YYCURSOR; yy5: YYDEBUG(5, *YYCURSOR); -#line 317 "ext/date/lib/parse_iso_intervals.re" +#line 322 "ext/date/lib/parse_iso_intervals.re" { add_error(s, "Unexpected character"); goto std; } -#line 267 "ext/date/lib/parse_iso_intervals.c" +#line 272 "ext/date/lib/parse_iso_intervals.c" yy6: YYDEBUG(6, *YYCURSOR); ++YYCURSOR; YYDEBUG(7, *YYCURSOR); -#line 306 "ext/date/lib/parse_iso_intervals.re" +#line 311 "ext/date/lib/parse_iso_intervals.re" { goto std; } -#line 276 "ext/date/lib/parse_iso_intervals.c" +#line 281 "ext/date/lib/parse_iso_intervals.c" yy8: YYDEBUG(8, *YYCURSOR); yyaccept = 0; @@ -289,7 +294,7 @@ if (yych == 'T') goto yy15; yy10: YYDEBUG(10, *YYCURSOR); -#line 244 "ext/date/lib/parse_iso_intervals.re" +#line 249 "ext/date/lib/parse_iso_intervals.re" { timelib_sll nr; int in_time = 0; @@ -330,7 +335,7 @@ TIMELIB_DEINIT; return TIMELIB_PERIOD; } -#line 334 "ext/date/lib/parse_iso_intervals.c" +#line 339 "ext/date/lib/parse_iso_intervals.c" yy11: YYDEBUG(11, *YYCURSOR); yych = *++YYCURSOR; @@ -389,7 +394,7 @@ goto yy16; } YYDEBUG(18, *YYCURSOR); -#line 209 "ext/date/lib/parse_iso_intervals.re" +#line 214 "ext/date/lib/parse_iso_intervals.re" { DEBUG_OUTPUT("recurrences"); TIMELIB_INIT; @@ -399,7 +404,7 @@ s->have_recurrences = 1; return TIMELIB_PERIOD; } -#line 403 "ext/date/lib/parse_iso_intervals.c" +#line 408 "ext/date/lib/parse_iso_intervals.c" yy19: YYDEBUG(19, *YYCURSOR); yych = *++YYCURSOR; @@ -894,7 +899,7 @@ YYDEBUG(89, *YYCURSOR); ++YYCURSOR; YYDEBUG(90, *YYCURSOR); -#line 220 "ext/date/lib/parse_iso_intervals.re" +#line 225 "ext/date/lib/parse_iso_intervals.re" { timelib_time *current; @@ -917,7 +922,7 @@ TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 921 "ext/date/lib/parse_iso_intervals.c" +#line 926 "ext/date/lib/parse_iso_intervals.c" yy91: YYDEBUG(91, *YYCURSOR); yych = *++YYCURSOR; @@ -937,7 +942,7 @@ YYDEBUG(95, *YYCURSOR); ++YYCURSOR; YYDEBUG(96, *YYCURSOR); -#line 286 "ext/date/lib/parse_iso_intervals.re" +#line 291 "ext/date/lib/parse_iso_intervals.re" { DEBUG_OUTPUT("combinedrep"); TIMELIB_INIT; @@ -956,9 +961,9 @@ TIMELIB_DEINIT; return TIMELIB_PERIOD; } -#line 960 "ext/date/lib/parse_iso_intervals.c" +#line 965 "ext/date/lib/parse_iso_intervals.c" } -#line 321 "ext/date/lib/parse_iso_intervals.re" +#line 326 "ext/date/lib/parse_iso_intervals.re" } #ifdef PHP_WIN32 diff -Nru php8.4-8.4.26/ext/date/lib/parse_iso_intervals.re php8.4-8.4.27/ext/date/lib/parse_iso_intervals.re --- php8.4-8.4.26/ext/date/lib/parse_iso_intervals.re 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/date/lib/parse_iso_intervals.re 2026-10-19 14:38:59.000000000 +0000 @@ -42,6 +42,7 @@ #define TIMELIB_PERIOD 260 #define TIMELIB_ISO_DATE 261 #define TIMELIB_ERROR 999 +#define TIMELIB_MAX_ERRORS 1000 typedef unsigned char uchar; @@ -88,6 +89,10 @@ static void add_error(Scanner *s, const char *error) { + if (s->errors->error_count >= TIMELIB_MAX_ERRORS) { + return; + } + s->errors->error_count++; s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message)); s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0; diff -Nru php8.4-8.4.26/ext/date/lib/timezonedb.h php8.4-8.4.27/ext/date/lib/timezonedb.h --- php8.4-8.4.26/ext/date/lib/timezonedb.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/date/lib/timezonedb.h 2026-10-19 14:38:59.000000000 +0000 @@ -143,470 +143,470 @@ { (char*) "America/Indiana/Winamac" , 0x010ED9 }, { (char*) "America/Indianapolis" , 0x011156 }, { (char*) "America/Inuvik" , 0x011375 }, - { (char*) "America/Iqaluit" , 0x0116C6 }, - { (char*) "America/Jamaica" , 0x011A42 }, - { (char*) "America/Jujuy" , 0x011BA1 }, - { (char*) "America/Juneau" , 0x011E5F }, - { (char*) "America/Kentucky/Louisville" , 0x012245 }, - { (char*) "America/Kentucky/Monticello" , 0x012749 }, - { (char*) "America/Knox_IN" , 0x012B35 }, - { (char*) "America/Kralendijk" , 0x012F39 }, - { (char*) "America/La_Paz" , 0x012FF6 }, - { (char*) "America/Lima" , 0x0130AC }, - { (char*) "America/Los_Angeles" , 0x0131D3 }, - { (char*) "America/Louisville" , 0x0136F4 }, - { (char*) "America/Lower_Princes" , 0x013BDA }, - { (char*) "America/Maceio" , 0x013C97 }, - { (char*) "America/Managua" , 0x013EA9 }, - { (char*) "America/Manaus" , 0x013FDC }, - { (char*) "America/Marigot" , 0x014193 }, - { (char*) "America/Martinique" , 0x014250 }, - { (char*) "America/Matamoros" , 0x01430E }, - { (char*) "America/Mazatlan" , 0x0144FB }, - { (char*) "America/Mendoza" , 0x0147EB }, - { (char*) "America/Menominee" , 0x014ABB }, - { (char*) "America/Merida" , 0x014E7B }, - { (char*) "America/Metlakatla" , 0x015126 }, - { (char*) "America/Mexico_City" , 0x015393 }, - { (char*) "America/Miquelon" , 0x0156B2 }, - { (char*) "America/Moncton" , 0x0158E4 }, - { (char*) "America/Monterrey" , 0x015EDD }, - { (char*) "America/Montevideo" , 0x0161E4 }, - { (char*) "America/Montreal" , 0x0165B9 }, - { (char*) "America/Montserrat" , 0x016C7A }, - { (char*) "America/Nassau" , 0x016D08 }, - { (char*) "America/New_York" , 0x017102 }, - { (char*) "America/Nipigon" , 0x0177F2 }, - { (char*) "America/Nome" , 0x017EB3 }, - { (char*) "America/Noronha" , 0x01829B }, - { (char*) "America/North_Dakota/Beulah" , 0x01849B }, - { (char*) "America/North_Dakota/Center" , 0x0188CF }, - { (char*) "America/North_Dakota/New_Salem" , 0x018CCE }, - { (char*) "America/Nuuk" , 0x0190D3 }, - { (char*) "America/Ojinaga" , 0x0194B5 }, - { (char*) "America/Panama" , 0x0197AB }, - { (char*) "America/Pangnirtung" , 0x01984C }, - { (char*) "America/Paramaribo" , 0x019BAF }, - { (char*) "America/Phoenix" , 0x019C76 }, - { (char*) "America/Port-au-Prince" , 0x019D8A }, - { (char*) "America/Port_of_Spain" , 0x019FCB }, - { (char*) "America/Porto_Acre" , 0x01A059 }, - { (char*) "America/Porto_Velho" , 0x01A207 }, - { (char*) "America/Puerto_Rico" , 0x01A3A5 }, - { (char*) "America/Punta_Arenas" , 0x01A462 }, - { (char*) "America/Rainy_River" , 0x01A941 }, - { (char*) "America/Rankin_Inlet" , 0x01AE5B }, - { (char*) "America/Recife" , 0x01B1A4 }, - { (char*) "America/Regina" , 0x01B39E }, - { (char*) "America/Resolute" , 0x01B63D }, - { (char*) "America/Rio_Branco" , 0x01B987 }, - { (char*) "America/Rosario" , 0x01BB39 }, - { (char*) "America/Santa_Isabel" , 0x01BE09 }, - { (char*) "America/Santarem" , 0x01C36C }, - { (char*) "America/Santiago" , 0x01C51C }, - { (char*) "America/Santo_Domingo" , 0x01CA7F }, - { (char*) "America/Sao_Paulo" , 0x01CBC8 }, - { (char*) "America/Scoresbysund" , 0x01CFC2 }, - { (char*) "America/Shiprock" , 0x01D3C3 }, - { (char*) "America/Sitka" , 0x01D7E1 }, - { (char*) "America/St_Barthelemy" , 0x01DBBC }, - { (char*) "America/St_Johns" , 0x01DC79 }, - { (char*) "America/St_Kitts" , 0x01E3F6 }, - { (char*) "America/St_Lucia" , 0x01E484 }, - { (char*) "America/St_Thomas" , 0x01E525 }, - { (char*) "America/St_Vincent" , 0x01E5B3 }, - { (char*) "America/Swift_Current" , 0x01E654 }, - { (char*) "America/Tegucigalpa" , 0x01E7E2 }, - { (char*) "America/Thule" , 0x01E8B0 }, - { (char*) "America/Thunder_Bay" , 0x01EA91 }, - { (char*) "America/Tijuana" , 0x01F152 }, - { (char*) "America/Toronto" , 0x01F6C4 }, - { (char*) "America/Tortola" , 0x01FDA3 }, - { (char*) "America/Vancouver" , 0x01FE31 }, - { (char*) "America/Virgin" , 0x0204DB }, - { (char*) "America/Whitehorse" , 0x020598 }, - { (char*) "America/Winnipeg" , 0x0209BB }, - { (char*) "America/Yakutat" , 0x020EF2 }, - { (char*) "America/Yellowknife" , 0x0212C0 }, - { (char*) "Antarctica/Casey" , 0x0217ED }, - { (char*) "Antarctica/Davis" , 0x02191D }, - { (char*) "Antarctica/DumontDUrville" , 0x0219F3 }, - { (char*) "Antarctica/Macquarie" , 0x021AA7 }, - { (char*) "Antarctica/Mawson" , 0x021E93 }, - { (char*) "Antarctica/McMurdo" , 0x021F3D }, - { (char*) "Antarctica/Palmer" , 0x02226F }, - { (char*) "Antarctica/Rothera" , 0x0225F8 }, - { (char*) "Antarctica/South_Pole" , 0x02268F }, - { (char*) "Antarctica/Syowa" , 0x022AAE }, - { (char*) "Antarctica/Troll" , 0x022B44 }, - { (char*) "Antarctica/Vostok" , 0x022BF3 }, - { (char*) "Arctic/Longyearbyen" , 0x022CAF }, - { (char*) "Asia/Aden" , 0x022F7C }, - { (char*) "Asia/Almaty" , 0x02300D }, - { (char*) "Asia/Amman" , 0x023295 }, - { (char*) "Asia/Anadyr" , 0x023641 }, - { (char*) "Asia/Aqtau" , 0x023947 }, - { (char*) "Asia/Aqtobe" , 0x023BC6 }, - { (char*) "Asia/Ashgabat" , 0x023E46 }, - { (char*) "Asia/Ashkhabad" , 0x023FC9 }, - { (char*) "Asia/Atyrau" , 0x02414C }, - { (char*) "Asia/Baghdad" , 0x0243D5 }, - { (char*) "Asia/Bahrain" , 0x024657 }, - { (char*) "Asia/Baku" , 0x024710 }, - { (char*) "Asia/Bangkok" , 0x024A04 }, - { (char*) "Asia/Barnaul" , 0x024AA8 }, - { (char*) "Asia/Beirut" , 0x024DB3 }, - { (char*) "Asia/Bishkek" , 0x02509B }, - { (char*) "Asia/Brunei" , 0x025311 }, - { (char*) "Asia/Calcutta" , 0x0253B7 }, - { (char*) "Asia/Chita" , 0x02549F }, - { (char*) "Asia/Choibalsan" , 0x0257AD }, - { (char*) "Asia/Chongqing" , 0x025A0B }, - { (char*) "Asia/Chungking" , 0x025BA0 }, - { (char*) "Asia/Colombo" , 0x025D35 }, - { (char*) "Asia/Dacca" , 0x025E38 }, - { (char*) "Asia/Damascus" , 0x025F2B }, - { (char*) "Asia/Dhaka" , 0x026409 }, - { (char*) "Asia/Dili" , 0x0264FC }, - { (char*) "Asia/Dubai" , 0x0265B2 }, - { (char*) "Asia/Dushanbe" , 0x026643 }, - { (char*) "Asia/Famagusta" , 0x0267BD }, - { (char*) "Asia/Gaza" , 0x026B84 }, - { (char*) "Asia/Harbin" , 0x027720 }, - { (char*) "Asia/Hebron" , 0x0278B5 }, - { (char*) "Asia/Ho_Chi_Minh" , 0x028462 }, - { (char*) "Asia/Hong_Kong" , 0x028556 }, - { (char*) "Asia/Hovd" , 0x028869 }, - { (char*) "Asia/Irkutsk" , 0x028ADD }, - { (char*) "Asia/Istanbul" , 0x028DFB }, - { (char*) "Asia/Jakarta" , 0x0292B7 }, - { (char*) "Asia/Jayapura" , 0x0293C8 }, - { (char*) "Asia/Jerusalem" , 0x0294B5 }, - { (char*) "Asia/Kabul" , 0x0298F3 }, - { (char*) "Asia/Kamchatka" , 0x02999E }, - { (char*) "Asia/Karachi" , 0x029C93 }, - { (char*) "Asia/Kashgar" , 0x029DA9 }, - { (char*) "Asia/Kathmandu" , 0x029E3A }, - { (char*) "Asia/Katmandu" , 0x029EE7 }, - { (char*) "Asia/Khandyga" , 0x029F94 }, - { (char*) "Asia/Kolkata" , 0x02A2C5 }, - { (char*) "Asia/Krasnoyarsk" , 0x02A3AD }, - { (char*) "Asia/Kuala_Lumpur" , 0x02A6B7 }, - { (char*) "Asia/Kuching" , 0x02A7D7 }, - { (char*) "Asia/Kuwait" , 0x02A931 }, - { (char*) "Asia/Macao" , 0x02A9C2 }, - { (char*) "Asia/Macau" , 0x02ACE5 }, - { (char*) "Asia/Magadan" , 0x02B008 }, - { (char*) "Asia/Makassar" , 0x02B313 }, - { (char*) "Asia/Manila" , 0x02B426 }, - { (char*) "Asia/Muscat" , 0x02B544 }, - { (char*) "Asia/Nicosia" , 0x02B5D5 }, - { (char*) "Asia/Novokuznetsk" , 0x02B844 }, - { (char*) "Asia/Novosibirsk" , 0x02BB37 }, - { (char*) "Asia/Omsk" , 0x02BE48 }, - { (char*) "Asia/Oral" , 0x02C146 }, - { (char*) "Asia/Phnom_Penh" , 0x02C3D2 }, - { (char*) "Asia/Pontianak" , 0x02C4A2 }, - { (char*) "Asia/Pyongyang" , 0x02C5BB }, - { (char*) "Asia/Qatar" , 0x02C67E }, - { (char*) "Asia/Qostanay" , 0x02C722 }, - { (char*) "Asia/Qyzylorda" , 0x02C9B8 }, - { (char*) "Asia/Rangoon" , 0x02CC51 }, - { (char*) "Asia/Riyadh" , 0x02CD18 }, - { (char*) "Asia/Saigon" , 0x02CDA9 }, - { (char*) "Asia/Sakhalin" , 0x02CE9D }, - { (char*) "Asia/Samarkand" , 0x02D1B4 }, - { (char*) "Asia/Seoul" , 0x02D33F }, - { (char*) "Asia/Shanghai" , 0x02D4EA }, - { (char*) "Asia/Singapore" , 0x02D68B }, - { (char*) "Asia/Srednekolymsk" , 0x02D797 }, - { (char*) "Asia/Taipei" , 0x02DAA7 }, - { (char*) "Asia/Tashkent" , 0x02DCB2 }, - { (char*) "Asia/Tbilisi" , 0x02DE3D }, - { (char*) "Asia/Tehran" , 0x02E0B5 }, - { (char*) "Asia/Tel_Aviv" , 0x02E3ED }, - { (char*) "Asia/Thimbu" , 0x02E82B }, - { (char*) "Asia/Thimphu" , 0x02E8D1 }, - { (char*) "Asia/Tokyo" , 0x02E977 }, - { (char*) "Asia/Tomsk" , 0x02EA58 }, - { (char*) "Asia/Ujung_Pandang" , 0x02ED63 }, - { (char*) "Asia/Ulaanbaatar" , 0x02EE2D }, - { (char*) "Asia/Ulan_Bator" , 0x02F09B }, - { (char*) "Asia/Urumqi" , 0x02F2F9 }, - { (char*) "Asia/Ust-Nera" , 0x02F397 }, - { (char*) "Asia/Vientiane" , 0x02F6BA }, - { (char*) "Asia/Vladivostok" , 0x02F79C }, - { (char*) "Asia/Yakutsk" , 0x02FAA1 }, - { (char*) "Asia/Yangon" , 0x02FDA5 }, - { (char*) "Asia/Yekaterinburg" , 0x02FE6C }, - { (char*) "Asia/Yerevan" , 0x03017E }, - { (char*) "Atlantic/Azores" , 0x03044E }, - { (char*) "Atlantic/Bermuda" , 0x0309D9 }, - { (char*) "Atlantic/Canary" , 0x030DE5 }, - { (char*) "Atlantic/Cape_Verde" , 0x030FDD }, - { (char*) "Atlantic/Faeroe" , 0x031098 }, - { (char*) "Atlantic/Faroe" , 0x03125D }, - { (char*) "Atlantic/Jan_Mayen" , 0x031422 }, - { (char*) "Atlantic/Madeira" , 0x0316EF }, - { (char*) "Atlantic/Reykjavik" , 0x031C66 }, - { (char*) "Atlantic/South_Georgia" , 0x031F63 }, - { (char*) "Atlantic/St_Helena" , 0x031FF3 }, - { (char*) "Atlantic/Stanley" , 0x032094 }, - { (char*) "Australia/ACT" , 0x0323B5 }, - { (char*) "Australia/Adelaide" , 0x032749 }, - { (char*) "Australia/Brisbane" , 0x032AFD }, - { (char*) "Australia/Broken_Hill" , 0x032C41 }, - { (char*) "Australia/Canberra" , 0x033016 }, - { (char*) "Australia/Currie" , 0x0333AA }, - { (char*) "Australia/Darwin" , 0x0337A1 }, - { (char*) "Australia/Eucla" , 0x0338A9 }, - { (char*) "Australia/Hobart" , 0x033A08 }, - { (char*) "Australia/LHI" , 0x033E07 }, - { (char*) "Australia/Lindeman" , 0x0340C7 }, - { (char*) "Australia/Lord_Howe" , 0x034237 }, - { (char*) "Australia/Melbourne" , 0x034507 }, - { (char*) "Australia/North" , 0x0348A3 }, - { (char*) "Australia/NSW" , 0x034999 }, - { (char*) "Australia/Perth" , 0x034D2D }, - { (char*) "Australia/Queensland" , 0x034E89 }, - { (char*) "Australia/South" , 0x034FB6 }, - { (char*) "Australia/Sydney" , 0x03535B }, - { (char*) "Australia/Tasmania" , 0x03570B }, - { (char*) "Australia/Victoria" , 0x035B02 }, - { (char*) "Australia/West" , 0x035E96 }, - { (char*) "Australia/Yancowinna" , 0x035FD4 }, - { (char*) "Brazil/Acre" , 0x03638D }, - { (char*) "Brazil/DeNoronha" , 0x03653B }, - { (char*) "Brazil/East" , 0x03672B }, - { (char*) "Brazil/West" , 0x036AEF }, - { (char*) "Canada/Atlantic" , 0x036C97 }, - { (char*) "Canada/Central" , 0x03732B }, - { (char*) "Canada/Eastern" , 0x037845 }, - { (char*) "Canada/Mountain" , 0x037F06 }, - { (char*) "Canada/Newfoundland" , 0x038433 }, - { (char*) "Canada/Pacific" , 0x038B95 }, - { (char*) "Canada/Saskatchewan" , 0x03922A }, - { (char*) "Canada/Yukon" , 0x0394B4 }, - { (char*) "CET" , 0x0398C5 }, - { (char*) "Chile/Continental" , 0x039D20 }, - { (char*) "Chile/EasterIsland" , 0x03A276 }, - { (char*) "CST6CDT" , 0x03A718 }, - { (char*) "Cuba" , 0x03ADFE }, - { (char*) "EET" , 0x03B267 }, - { (char*) "Egypt" , 0x03B51D }, - { (char*) "Eire" , 0x03BA46 }, - { (char*) "EST" , 0x03C02A }, - { (char*) "EST5EDT" , 0x03C0CB }, - { (char*) "Etc/GMT" , 0x03C7A7 }, - { (char*) "Etc/GMT+0" , 0x03C822 }, - { (char*) "Etc/GMT+1" , 0x03C89D }, - { (char*) "Etc/GMT+10" , 0x03C91A }, - { (char*) "Etc/GMT+11" , 0x03C998 }, - { (char*) "Etc/GMT+12" , 0x03CA16 }, - { (char*) "Etc/GMT+2" , 0x03CA94 }, - { (char*) "Etc/GMT+3" , 0x03CB11 }, - { (char*) "Etc/GMT+4" , 0x03CB8E }, - { (char*) "Etc/GMT+5" , 0x03CC0B }, - { (char*) "Etc/GMT+6" , 0x03CC88 }, - { (char*) "Etc/GMT+7" , 0x03CD05 }, - { (char*) "Etc/GMT+8" , 0x03CD82 }, - { (char*) "Etc/GMT+9" , 0x03CDFF }, - { (char*) "Etc/GMT-0" , 0x03CE7C }, - { (char*) "Etc/GMT-1" , 0x03CEF7 }, - { (char*) "Etc/GMT-10" , 0x03CF75 }, - { (char*) "Etc/GMT-11" , 0x03CFF4 }, - { (char*) "Etc/GMT-12" , 0x03D073 }, - { (char*) "Etc/GMT-13" , 0x03D0F2 }, - { (char*) "Etc/GMT-14" , 0x03D171 }, - { (char*) "Etc/GMT-2" , 0x03D1F0 }, - { (char*) "Etc/GMT-3" , 0x03D26E }, - { (char*) "Etc/GMT-4" , 0x03D2EC }, - { (char*) "Etc/GMT-5" , 0x03D36A }, - { (char*) "Etc/GMT-6" , 0x03D3E8 }, - { (char*) "Etc/GMT-7" , 0x03D466 }, - { (char*) "Etc/GMT-8" , 0x03D4E4 }, - { (char*) "Etc/GMT-9" , 0x03D562 }, - { (char*) "Etc/GMT0" , 0x03D5E0 }, - { (char*) "Etc/Greenwich" , 0x03D65B }, - { (char*) "Etc/UCT" , 0x03D6D6 }, - { (char*) "Etc/Universal" , 0x03D751 }, - { (char*) "Etc/UTC" , 0x03D7CC }, - { (char*) "Etc/Zulu" , 0x03D847 }, - { (char*) "Europe/Amsterdam" , 0x03D8C2 }, - { (char*) "Europe/Andorra" , 0x03DCFD }, - { (char*) "Europe/Astrakhan" , 0x03DE8E }, - { (char*) "Europe/Athens" , 0x03E182 }, - { (char*) "Europe/Belfast" , 0x03E438 }, - { (char*) "Europe/Belgrade" , 0x03EA83 }, - { (char*) "Europe/Berlin" , 0x03EC6D }, - { (char*) "Europe/Bratislava" , 0x03EF49 }, - { (char*) "Europe/Brussels" , 0x03F228 }, - { (char*) "Europe/Bucharest" , 0x03F683 }, - { (char*) "Europe/Budapest" , 0x03F924 }, - { (char*) "Europe/Busingen" , 0x03FC2E }, - { (char*) "Europe/Chisinau" , 0x03FE33 }, - { (char*) "Europe/Copenhagen" , 0x0402F6 }, - { (char*) "Europe/Dublin" , 0x040571 }, - { (char*) "Europe/Gibraltar" , 0x040B55 }, - { (char*) "Europe/Guernsey" , 0x041025 }, - { (char*) "Europe/Helsinki" , 0x04167C }, - { (char*) "Europe/Isle_of_Man" , 0x041869 }, - { (char*) "Europe/Istanbul" , 0x041EB4 }, - { (char*) "Europe/Jersey" , 0x042370 }, - { (char*) "Europe/Kaliningrad" , 0x0429C7 }, - { (char*) "Europe/Kiev" , 0x042D6F }, - { (char*) "Europe/Kirov" , 0x042FA9 }, - { (char*) "Europe/Kyiv" , 0x0432A2 }, - { (char*) "Europe/Lisbon" , 0x0434EB }, - { (char*) "Europe/Ljubljana" , 0x043AC1 }, - { (char*) "Europe/London" , 0x043CAB }, - { (char*) "Europe/Luxembourg" , 0x0442F6 }, - { (char*) "Europe/Madrid" , 0x044741 }, - { (char*) "Europe/Malta" , 0x044ADE }, - { (char*) "Europe/Mariehamn" , 0x044E8A }, - { (char*) "Europe/Minsk" , 0x045077 }, - { (char*) "Europe/Monaco" , 0x0453AB }, - { (char*) "Europe/Moscow" , 0x045811 }, - { (char*) "Europe/Nicosia" , 0x045BBD }, - { (char*) "Europe/Oslo" , 0x045E1E }, - { (char*) "Europe/Paris" , 0x0460CE }, - { (char*) "Europe/Podgorica" , 0x04652B }, - { (char*) "Europe/Prague" , 0x046715 }, - { (char*) "Europe/Riga" , 0x0469F4 }, - { (char*) "Europe/Rome" , 0x046CB6 }, - { (char*) "Europe/Samara" , 0x047075 }, - { (char*) "Europe/San_Marino" , 0x047376 }, - { (char*) "Europe/Sarajevo" , 0x047735 }, - { (char*) "Europe/Saratov" , 0x04791F }, - { (char*) "Europe/Simferopol" , 0x047C11 }, - { (char*) "Europe/Skopje" , 0x047F84 }, - { (char*) "Europe/Sofia" , 0x04816E }, - { (char*) "Europe/Stockholm" , 0x0483CA }, - { (char*) "Europe/Tallinn" , 0x0485C7 }, - { (char*) "Europe/Tirane" , 0x048876 }, - { (char*) "Europe/Tiraspol" , 0x048ADE }, - { (char*) "Europe/Ulyanovsk" , 0x048FA1 }, - { (char*) "Europe/Uzhgorod" , 0x0492B7 }, - { (char*) "Europe/Vaduz" , 0x0494F1 }, - { (char*) "Europe/Vatican" , 0x0496DB }, - { (char*) "Europe/Vienna" , 0x049A9A }, - { (char*) "Europe/Vilnius" , 0x049D38 }, - { (char*) "Europe/Volgograd" , 0x049FE8 }, - { (char*) "Europe/Warsaw" , 0x04A2F7 }, - { (char*) "Europe/Zagreb" , 0x04A69E }, - { (char*) "Europe/Zaporozhye" , 0x04A888 }, - { (char*) "Europe/Zurich" , 0x04AAC2 }, - { (char*) "Factory" , 0x04ACBF }, - { (char*) "GB" , 0x04AD3C }, - { (char*) "GB-Eire" , 0x04B387 }, - { (char*) "GMT" , 0x04B9D2 }, - { (char*) "GMT+0" , 0x04BA4D }, - { (char*) "GMT-0" , 0x04BAC8 }, - { (char*) "GMT0" , 0x04BB43 }, - { (char*) "Greenwich" , 0x04BBBE }, - { (char*) "Hongkong" , 0x04BC39 }, - { (char*) "HST" , 0x04BF4C }, - { (char*) "Iceland" , 0x04C035 }, - { (char*) "Indian/Antananarivo" , 0x04C0C3 }, - { (char*) "Indian/Chagos" , 0x04C16F }, - { (char*) "Indian/Christmas" , 0x04C213 }, - { (char*) "Indian/Cocos" , 0x04C2A4 }, - { (char*) "Indian/Comoro" , 0x04C33C }, - { (char*) "Indian/Kerguelen" , 0x04C3CB }, - { (char*) "Indian/Mahe" , 0x04C45C }, - { (char*) "Indian/Maldives" , 0x04C4ED }, - { (char*) "Indian/Mauritius" , 0x04C591 }, - { (char*) "Indian/Mayotte" , 0x04C650 }, - { (char*) "Indian/Reunion" , 0x04C6DF }, - { (char*) "Iran" , 0x04C770 }, - { (char*) "Israel" , 0x04CAA8 }, - { (char*) "Jamaica" , 0x04CEE6 }, - { (char*) "Japan" , 0x04D045 }, - { (char*) "Kwajalein" , 0x04D126 }, - { (char*) "Libya" , 0x04D20D }, - { (char*) "MET" , 0x04D3C8 }, - { (char*) "Mexico/BajaNorte" , 0x04D823 }, - { (char*) "Mexico/BajaSur" , 0x04DD86 }, - { (char*) "Mexico/General" , 0x04E044 }, - { (char*) "MST" , 0x04E355 }, - { (char*) "MST7MDT" , 0x04E451 }, - { (char*) "Navajo" , 0x04E86F }, - { (char*) "NZ" , 0x04EC8D }, - { (char*) "NZ-CHAT" , 0x04F0AC }, - { (char*) "Pacific/Apia" , 0x04F3E0 }, - { (char*) "Pacific/Auckland" , 0x04F583 }, - { (char*) "Pacific/Bougainville" , 0x04F9B5 }, - { (char*) "Pacific/Chatham" , 0x04FA96 }, - { (char*) "Pacific/Chuuk" , 0x04FDD9 }, - { (char*) "Pacific/Easter" , 0x04FEB7 }, - { (char*) "Pacific/Efate" , 0x050366 }, - { (char*) "Pacific/Enderbury" , 0x0504C8 }, - { (char*) "Pacific/Fakaofo" , 0x050580 }, - { (char*) "Pacific/Fiji" , 0x050625 }, - { (char*) "Pacific/Funafuti" , 0x0507BD }, - { (char*) "Pacific/Galapagos" , 0x05084F }, - { (char*) "Pacific/Gambier" , 0x05091B }, - { (char*) "Pacific/Guadalcanal" , 0x0509BA }, - { (char*) "Pacific/Guam" , 0x050A4C }, - { (char*) "Pacific/Honolulu" , 0x050BB6 }, - { (char*) "Pacific/Johnston" , 0x050CA5 }, - { (char*) "Pacific/Kanton" , 0x050D8E }, - { (char*) "Pacific/Kiritimati" , 0x050E55 }, - { (char*) "Pacific/Kosrae" , 0x050F1B }, - { (char*) "Pacific/Kwajalein" , 0x05101F }, - { (char*) "Pacific/Majuro" , 0x05110F }, - { (char*) "Pacific/Marquesas" , 0x05120D }, - { (char*) "Pacific/Midway" , 0x0512B5 }, - { (char*) "Pacific/Nauru" , 0x051378 }, - { (char*) "Pacific/Niue" , 0x05143B }, - { (char*) "Pacific/Norfolk" , 0x0514E1 }, - { (char*) "Pacific/Noumea" , 0x0515DA }, - { (char*) "Pacific/Pago_Pago" , 0x0516AC }, - { (char*) "Pacific/Palau" , 0x05174A }, - { (char*) "Pacific/Pitcairn" , 0x0517EA }, - { (char*) "Pacific/Pohnpei" , 0x05188F }, - { (char*) "Pacific/Ponape" , 0x05197F }, - { (char*) "Pacific/Port_Moresby" , 0x051A11 }, - { (char*) "Pacific/Rarotonga" , 0x051ACF }, - { (char*) "Pacific/Saipan" , 0x051C71 }, - { (char*) "Pacific/Samoa" , 0x051DD2 }, - { (char*) "Pacific/Tahiti" , 0x051E70 }, - { (char*) "Pacific/Tarawa" , 0x051F10 }, - { (char*) "Pacific/Tongatapu" , 0x051FB1 }, - { (char*) "Pacific/Truk" , 0x0520AA }, - { (char*) "Pacific/Wake" , 0x052150 }, - { (char*) "Pacific/Wallis" , 0x0521ED }, - { (char*) "Pacific/Yap" , 0x05227F }, - { (char*) "Poland" , 0x052325 }, - { (char*) "Portugal" , 0x0526CC }, - { (char*) "PRC" , 0x052C8F }, - { (char*) "PST8PDT" , 0x052E24 }, - { (char*) "ROC" , 0x05333E }, - { (char*) "ROK" , 0x053549 }, - { (char*) "Singapore" , 0x0536F4 }, - { (char*) "Turkey" , 0x053800 }, - { (char*) "UCT" , 0x053CBC }, - { (char*) "Universal" , 0x053D37 }, - { (char*) "US/Alaska" , 0x053DB2 }, - { (char*) "US/Aleutian" , 0x05418F }, - { (char*) "US/Arizona" , 0x054564 }, - { (char*) "US/Central" , 0x054660 }, - { (char*) "US/East-Indiana" , 0x054D46 }, - { (char*) "US/Eastern" , 0x054F65 }, - { (char*) "US/Hawaii" , 0x055641 }, - { (char*) "US/Indiana-Starke" , 0x05572A }, - { (char*) "US/Michigan" , 0x055B2E }, - { (char*) "US/Mountain" , 0x055EBD }, - { (char*) "US/Pacific" , 0x0562DB }, - { (char*) "US/Samoa" , 0x0567F5 }, - { (char*) "UTC" , 0x056893 }, - { (char*) "W-SU" , 0x05690E }, - { (char*) "WET" , 0x056CA6 }, - { (char*) "Zulu" , 0x057269 }, + { (char*) "America/Iqaluit" , 0x011818 }, + { (char*) "America/Jamaica" , 0x011B94 }, + { (char*) "America/Jujuy" , 0x011CF3 }, + { (char*) "America/Juneau" , 0x011FB1 }, + { (char*) "America/Kentucky/Louisville" , 0x012397 }, + { (char*) "America/Kentucky/Monticello" , 0x01289B }, + { (char*) "America/Knox_IN" , 0x012C87 }, + { (char*) "America/Kralendijk" , 0x01308B }, + { (char*) "America/La_Paz" , 0x013148 }, + { (char*) "America/Lima" , 0x0131FE }, + { (char*) "America/Los_Angeles" , 0x013325 }, + { (char*) "America/Louisville" , 0x013846 }, + { (char*) "America/Lower_Princes" , 0x013D2C }, + { (char*) "America/Maceio" , 0x013DE9 }, + { (char*) "America/Managua" , 0x013FFB }, + { (char*) "America/Manaus" , 0x01412E }, + { (char*) "America/Marigot" , 0x0142E5 }, + { (char*) "America/Martinique" , 0x0143A2 }, + { (char*) "America/Matamoros" , 0x014460 }, + { (char*) "America/Mazatlan" , 0x01464D }, + { (char*) "America/Mendoza" , 0x01493D }, + { (char*) "America/Menominee" , 0x014C0D }, + { (char*) "America/Merida" , 0x014FCD }, + { (char*) "America/Metlakatla" , 0x015278 }, + { (char*) "America/Mexico_City" , 0x0154E5 }, + { (char*) "America/Miquelon" , 0x015804 }, + { (char*) "America/Moncton" , 0x015A36 }, + { (char*) "America/Monterrey" , 0x01602F }, + { (char*) "America/Montevideo" , 0x016336 }, + { (char*) "America/Montreal" , 0x01670B }, + { (char*) "America/Montserrat" , 0x016DCC }, + { (char*) "America/Nassau" , 0x016E5A }, + { (char*) "America/New_York" , 0x017254 }, + { (char*) "America/Nipigon" , 0x017944 }, + { (char*) "America/Nome" , 0x018005 }, + { (char*) "America/Noronha" , 0x0183ED }, + { (char*) "America/North_Dakota/Beulah" , 0x0185ED }, + { (char*) "America/North_Dakota/Center" , 0x018A21 }, + { (char*) "America/North_Dakota/New_Salem" , 0x018E20 }, + { (char*) "America/Nuuk" , 0x019225 }, + { (char*) "America/Ojinaga" , 0x019607 }, + { (char*) "America/Panama" , 0x0198FD }, + { (char*) "America/Pangnirtung" , 0x01999E }, + { (char*) "America/Paramaribo" , 0x019D01 }, + { (char*) "America/Phoenix" , 0x019DC8 }, + { (char*) "America/Port-au-Prince" , 0x019EDC }, + { (char*) "America/Port_of_Spain" , 0x01A11D }, + { (char*) "America/Porto_Acre" , 0x01A1AB }, + { (char*) "America/Porto_Velho" , 0x01A359 }, + { (char*) "America/Puerto_Rico" , 0x01A4F7 }, + { (char*) "America/Punta_Arenas" , 0x01A5B4 }, + { (char*) "America/Rainy_River" , 0x01AA93 }, + { (char*) "America/Rankin_Inlet" , 0x01B104 }, + { (char*) "America/Recife" , 0x01B44D }, + { (char*) "America/Regina" , 0x01B647 }, + { (char*) "America/Resolute" , 0x01B8E6 }, + { (char*) "America/Rio_Branco" , 0x01BC30 }, + { (char*) "America/Rosario" , 0x01BDE2 }, + { (char*) "America/Santa_Isabel" , 0x01C0B2 }, + { (char*) "America/Santarem" , 0x01C615 }, + { (char*) "America/Santiago" , 0x01C7C5 }, + { (char*) "America/Santo_Domingo" , 0x01CD28 }, + { (char*) "America/Sao_Paulo" , 0x01CE71 }, + { (char*) "America/Scoresbysund" , 0x01D26B }, + { (char*) "America/Shiprock" , 0x01D66C }, + { (char*) "America/Sitka" , 0x01DA8A }, + { (char*) "America/St_Barthelemy" , 0x01DE65 }, + { (char*) "America/St_Johns" , 0x01DF22 }, + { (char*) "America/St_Kitts" , 0x01E69F }, + { (char*) "America/St_Lucia" , 0x01E72D }, + { (char*) "America/St_Thomas" , 0x01E7CE }, + { (char*) "America/St_Vincent" , 0x01E85C }, + { (char*) "America/Swift_Current" , 0x01E8FD }, + { (char*) "America/Tegucigalpa" , 0x01EA8B }, + { (char*) "America/Thule" , 0x01EB59 }, + { (char*) "America/Thunder_Bay" , 0x01ED3A }, + { (char*) "America/Tijuana" , 0x01F3FB }, + { (char*) "America/Toronto" , 0x01F96D }, + { (char*) "America/Tortola" , 0x02004C }, + { (char*) "America/Vancouver" , 0x0200DA }, + { (char*) "America/Virgin" , 0x020784 }, + { (char*) "America/Whitehorse" , 0x020841 }, + { (char*) "America/Winnipeg" , 0x020C64 }, + { (char*) "America/Yakutat" , 0x0212F3 }, + { (char*) "America/Yellowknife" , 0x0216C1 }, + { (char*) "Antarctica/Casey" , 0x021BEE }, + { (char*) "Antarctica/Davis" , 0x021D1E }, + { (char*) "Antarctica/DumontDUrville" , 0x021DF4 }, + { (char*) "Antarctica/Macquarie" , 0x021EA8 }, + { (char*) "Antarctica/Mawson" , 0x022294 }, + { (char*) "Antarctica/McMurdo" , 0x02233E }, + { (char*) "Antarctica/Palmer" , 0x022670 }, + { (char*) "Antarctica/Rothera" , 0x0229F9 }, + { (char*) "Antarctica/South_Pole" , 0x022A90 }, + { (char*) "Antarctica/Syowa" , 0x022EAF }, + { (char*) "Antarctica/Troll" , 0x022F45 }, + { (char*) "Antarctica/Vostok" , 0x022FF4 }, + { (char*) "Arctic/Longyearbyen" , 0x0230B0 }, + { (char*) "Asia/Aden" , 0x02337D }, + { (char*) "Asia/Almaty" , 0x02340E }, + { (char*) "Asia/Amman" , 0x023696 }, + { (char*) "Asia/Anadyr" , 0x023A42 }, + { (char*) "Asia/Aqtau" , 0x023D48 }, + { (char*) "Asia/Aqtobe" , 0x023FC7 }, + { (char*) "Asia/Ashgabat" , 0x024247 }, + { (char*) "Asia/Ashkhabad" , 0x0243CA }, + { (char*) "Asia/Atyrau" , 0x02454D }, + { (char*) "Asia/Baghdad" , 0x0247D6 }, + { (char*) "Asia/Bahrain" , 0x024A58 }, + { (char*) "Asia/Baku" , 0x024B11 }, + { (char*) "Asia/Bangkok" , 0x024E05 }, + { (char*) "Asia/Barnaul" , 0x024EA9 }, + { (char*) "Asia/Beirut" , 0x0251B4 }, + { (char*) "Asia/Bishkek" , 0x02549C }, + { (char*) "Asia/Brunei" , 0x025712 }, + { (char*) "Asia/Calcutta" , 0x0257B8 }, + { (char*) "Asia/Chita" , 0x0258A0 }, + { (char*) "Asia/Choibalsan" , 0x025BAE }, + { (char*) "Asia/Chongqing" , 0x025E0C }, + { (char*) "Asia/Chungking" , 0x025FA1 }, + { (char*) "Asia/Colombo" , 0x026136 }, + { (char*) "Asia/Dacca" , 0x026239 }, + { (char*) "Asia/Damascus" , 0x02632C }, + { (char*) "Asia/Dhaka" , 0x02680A }, + { (char*) "Asia/Dili" , 0x0268FD }, + { (char*) "Asia/Dubai" , 0x0269B3 }, + { (char*) "Asia/Dushanbe" , 0x026A44 }, + { (char*) "Asia/Famagusta" , 0x026BBE }, + { (char*) "Asia/Gaza" , 0x026F85 }, + { (char*) "Asia/Harbin" , 0x027B21 }, + { (char*) "Asia/Hebron" , 0x027CB6 }, + { (char*) "Asia/Ho_Chi_Minh" , 0x028863 }, + { (char*) "Asia/Hong_Kong" , 0x028957 }, + { (char*) "Asia/Hovd" , 0x028C6A }, + { (char*) "Asia/Irkutsk" , 0x028EDE }, + { (char*) "Asia/Istanbul" , 0x0291FC }, + { (char*) "Asia/Jakarta" , 0x0296B8 }, + { (char*) "Asia/Jayapura" , 0x0297C9 }, + { (char*) "Asia/Jerusalem" , 0x0298B6 }, + { (char*) "Asia/Kabul" , 0x029CF4 }, + { (char*) "Asia/Kamchatka" , 0x029D9F }, + { (char*) "Asia/Karachi" , 0x02A094 }, + { (char*) "Asia/Kashgar" , 0x02A1AA }, + { (char*) "Asia/Kathmandu" , 0x02A23B }, + { (char*) "Asia/Katmandu" , 0x02A2E8 }, + { (char*) "Asia/Khandyga" , 0x02A395 }, + { (char*) "Asia/Kolkata" , 0x02A6C6 }, + { (char*) "Asia/Krasnoyarsk" , 0x02A7AE }, + { (char*) "Asia/Kuala_Lumpur" , 0x02AAB8 }, + { (char*) "Asia/Kuching" , 0x02ABD8 }, + { (char*) "Asia/Kuwait" , 0x02AD32 }, + { (char*) "Asia/Macao" , 0x02ADC3 }, + { (char*) "Asia/Macau" , 0x02B0E6 }, + { (char*) "Asia/Magadan" , 0x02B409 }, + { (char*) "Asia/Makassar" , 0x02B714 }, + { (char*) "Asia/Manila" , 0x02B827 }, + { (char*) "Asia/Muscat" , 0x02B945 }, + { (char*) "Asia/Nicosia" , 0x02B9D6 }, + { (char*) "Asia/Novokuznetsk" , 0x02BC45 }, + { (char*) "Asia/Novosibirsk" , 0x02BF38 }, + { (char*) "Asia/Omsk" , 0x02C249 }, + { (char*) "Asia/Oral" , 0x02C547 }, + { (char*) "Asia/Phnom_Penh" , 0x02C7D3 }, + { (char*) "Asia/Pontianak" , 0x02C8A3 }, + { (char*) "Asia/Pyongyang" , 0x02C9BC }, + { (char*) "Asia/Qatar" , 0x02CA7F }, + { (char*) "Asia/Qostanay" , 0x02CB23 }, + { (char*) "Asia/Qyzylorda" , 0x02CDB9 }, + { (char*) "Asia/Rangoon" , 0x02D052 }, + { (char*) "Asia/Riyadh" , 0x02D119 }, + { (char*) "Asia/Saigon" , 0x02D1AA }, + { (char*) "Asia/Sakhalin" , 0x02D29E }, + { (char*) "Asia/Samarkand" , 0x02D5B5 }, + { (char*) "Asia/Seoul" , 0x02D740 }, + { (char*) "Asia/Shanghai" , 0x02D8EB }, + { (char*) "Asia/Singapore" , 0x02DA8C }, + { (char*) "Asia/Srednekolymsk" , 0x02DB98 }, + { (char*) "Asia/Taipei" , 0x02DEA8 }, + { (char*) "Asia/Tashkent" , 0x02E0B3 }, + { (char*) "Asia/Tbilisi" , 0x02E23E }, + { (char*) "Asia/Tehran" , 0x02E4B6 }, + { (char*) "Asia/Tel_Aviv" , 0x02E7EE }, + { (char*) "Asia/Thimbu" , 0x02EC2C }, + { (char*) "Asia/Thimphu" , 0x02ECD2 }, + { (char*) "Asia/Tokyo" , 0x02ED78 }, + { (char*) "Asia/Tomsk" , 0x02EE59 }, + { (char*) "Asia/Ujung_Pandang" , 0x02F164 }, + { (char*) "Asia/Ulaanbaatar" , 0x02F22E }, + { (char*) "Asia/Ulan_Bator" , 0x02F49C }, + { (char*) "Asia/Urumqi" , 0x02F6FA }, + { (char*) "Asia/Ust-Nera" , 0x02F798 }, + { (char*) "Asia/Vientiane" , 0x02FABB }, + { (char*) "Asia/Vladivostok" , 0x02FB9D }, + { (char*) "Asia/Yakutsk" , 0x02FEA2 }, + { (char*) "Asia/Yangon" , 0x0301A6 }, + { (char*) "Asia/Yekaterinburg" , 0x03026D }, + { (char*) "Asia/Yerevan" , 0x03057F }, + { (char*) "Atlantic/Azores" , 0x03084F }, + { (char*) "Atlantic/Bermuda" , 0x030DDA }, + { (char*) "Atlantic/Canary" , 0x0311E6 }, + { (char*) "Atlantic/Cape_Verde" , 0x0313DE }, + { (char*) "Atlantic/Faeroe" , 0x031499 }, + { (char*) "Atlantic/Faroe" , 0x03165E }, + { (char*) "Atlantic/Jan_Mayen" , 0x031823 }, + { (char*) "Atlantic/Madeira" , 0x031AF0 }, + { (char*) "Atlantic/Reykjavik" , 0x032067 }, + { (char*) "Atlantic/South_Georgia" , 0x032364 }, + { (char*) "Atlantic/St_Helena" , 0x0323F4 }, + { (char*) "Atlantic/Stanley" , 0x032495 }, + { (char*) "Australia/ACT" , 0x0327B6 }, + { (char*) "Australia/Adelaide" , 0x032B4A }, + { (char*) "Australia/Brisbane" , 0x032EFE }, + { (char*) "Australia/Broken_Hill" , 0x033042 }, + { (char*) "Australia/Canberra" , 0x033417 }, + { (char*) "Australia/Currie" , 0x0337AB }, + { (char*) "Australia/Darwin" , 0x033BA2 }, + { (char*) "Australia/Eucla" , 0x033CAA }, + { (char*) "Australia/Hobart" , 0x033E09 }, + { (char*) "Australia/LHI" , 0x034208 }, + { (char*) "Australia/Lindeman" , 0x0344C8 }, + { (char*) "Australia/Lord_Howe" , 0x034638 }, + { (char*) "Australia/Melbourne" , 0x034908 }, + { (char*) "Australia/North" , 0x034CA4 }, + { (char*) "Australia/NSW" , 0x034D9A }, + { (char*) "Australia/Perth" , 0x03512E }, + { (char*) "Australia/Queensland" , 0x03528A }, + { (char*) "Australia/South" , 0x0353B7 }, + { (char*) "Australia/Sydney" , 0x03575C }, + { (char*) "Australia/Tasmania" , 0x035B0C }, + { (char*) "Australia/Victoria" , 0x035F03 }, + { (char*) "Australia/West" , 0x036297 }, + { (char*) "Australia/Yancowinna" , 0x0363D5 }, + { (char*) "Brazil/Acre" , 0x03678E }, + { (char*) "Brazil/DeNoronha" , 0x03693C }, + { (char*) "Brazil/East" , 0x036B2C }, + { (char*) "Brazil/West" , 0x036EF0 }, + { (char*) "Canada/Atlantic" , 0x037098 }, + { (char*) "Canada/Central" , 0x03772C }, + { (char*) "Canada/Eastern" , 0x037D9D }, + { (char*) "Canada/Mountain" , 0x03845E }, + { (char*) "Canada/Newfoundland" , 0x03898B }, + { (char*) "Canada/Pacific" , 0x0390ED }, + { (char*) "Canada/Saskatchewan" , 0x039782 }, + { (char*) "Canada/Yukon" , 0x039A0C }, + { (char*) "CET" , 0x039E1D }, + { (char*) "Chile/Continental" , 0x03A278 }, + { (char*) "Chile/EasterIsland" , 0x03A7CE }, + { (char*) "CST6CDT" , 0x03AC70 }, + { (char*) "Cuba" , 0x03B016 }, + { (char*) "EET" , 0x03B47F }, + { (char*) "Egypt" , 0x03B735 }, + { (char*) "Eire" , 0x03BC5E }, + { (char*) "EST" , 0x03C242 }, + { (char*) "EST5EDT" , 0x03C2E3 }, + { (char*) "Etc/GMT" , 0x03C689 }, + { (char*) "Etc/GMT+0" , 0x03C704 }, + { (char*) "Etc/GMT+1" , 0x03C77F }, + { (char*) "Etc/GMT+10" , 0x03C7FC }, + { (char*) "Etc/GMT+11" , 0x03C87A }, + { (char*) "Etc/GMT+12" , 0x03C8F8 }, + { (char*) "Etc/GMT+2" , 0x03C976 }, + { (char*) "Etc/GMT+3" , 0x03C9F3 }, + { (char*) "Etc/GMT+4" , 0x03CA70 }, + { (char*) "Etc/GMT+5" , 0x03CAED }, + { (char*) "Etc/GMT+6" , 0x03CB6A }, + { (char*) "Etc/GMT+7" , 0x03CBE7 }, + { (char*) "Etc/GMT+8" , 0x03CC64 }, + { (char*) "Etc/GMT+9" , 0x03CCE1 }, + { (char*) "Etc/GMT-0" , 0x03CD5E }, + { (char*) "Etc/GMT-1" , 0x03CDD9 }, + { (char*) "Etc/GMT-10" , 0x03CE57 }, + { (char*) "Etc/GMT-11" , 0x03CED6 }, + { (char*) "Etc/GMT-12" , 0x03CF55 }, + { (char*) "Etc/GMT-13" , 0x03CFD4 }, + { (char*) "Etc/GMT-14" , 0x03D053 }, + { (char*) "Etc/GMT-2" , 0x03D0D2 }, + { (char*) "Etc/GMT-3" , 0x03D150 }, + { (char*) "Etc/GMT-4" , 0x03D1CE }, + { (char*) "Etc/GMT-5" , 0x03D24C }, + { (char*) "Etc/GMT-6" , 0x03D2CA }, + { (char*) "Etc/GMT-7" , 0x03D348 }, + { (char*) "Etc/GMT-8" , 0x03D3C6 }, + { (char*) "Etc/GMT-9" , 0x03D444 }, + { (char*) "Etc/GMT0" , 0x03D4C2 }, + { (char*) "Etc/Greenwich" , 0x03D53D }, + { (char*) "Etc/UCT" , 0x03D5B8 }, + { (char*) "Etc/Universal" , 0x03D633 }, + { (char*) "Etc/UTC" , 0x03D6AE }, + { (char*) "Etc/Zulu" , 0x03D729 }, + { (char*) "Europe/Amsterdam" , 0x03D7A4 }, + { (char*) "Europe/Andorra" , 0x03DBDF }, + { (char*) "Europe/Astrakhan" , 0x03DD70 }, + { (char*) "Europe/Athens" , 0x03E064 }, + { (char*) "Europe/Belfast" , 0x03E31A }, + { (char*) "Europe/Belgrade" , 0x03E965 }, + { (char*) "Europe/Berlin" , 0x03EB4F }, + { (char*) "Europe/Bratislava" , 0x03EE2B }, + { (char*) "Europe/Brussels" , 0x03F10A }, + { (char*) "Europe/Bucharest" , 0x03F565 }, + { (char*) "Europe/Budapest" , 0x03F806 }, + { (char*) "Europe/Busingen" , 0x03FB10 }, + { (char*) "Europe/Chisinau" , 0x03FD15 }, + { (char*) "Europe/Copenhagen" , 0x0401D8 }, + { (char*) "Europe/Dublin" , 0x040453 }, + { (char*) "Europe/Gibraltar" , 0x040A37 }, + { (char*) "Europe/Guernsey" , 0x040F07 }, + { (char*) "Europe/Helsinki" , 0x04155E }, + { (char*) "Europe/Isle_of_Man" , 0x04174B }, + { (char*) "Europe/Istanbul" , 0x041D96 }, + { (char*) "Europe/Jersey" , 0x042252 }, + { (char*) "Europe/Kaliningrad" , 0x0428A9 }, + { (char*) "Europe/Kiev" , 0x042C51 }, + { (char*) "Europe/Kirov" , 0x042E8B }, + { (char*) "Europe/Kyiv" , 0x043184 }, + { (char*) "Europe/Lisbon" , 0x0433CD }, + { (char*) "Europe/Ljubljana" , 0x0439A3 }, + { (char*) "Europe/London" , 0x043B8D }, + { (char*) "Europe/Luxembourg" , 0x0441D8 }, + { (char*) "Europe/Madrid" , 0x044623 }, + { (char*) "Europe/Malta" , 0x0449C0 }, + { (char*) "Europe/Mariehamn" , 0x044D6C }, + { (char*) "Europe/Minsk" , 0x044F59 }, + { (char*) "Europe/Monaco" , 0x04528D }, + { (char*) "Europe/Moscow" , 0x0456F3 }, + { (char*) "Europe/Nicosia" , 0x045A9F }, + { (char*) "Europe/Oslo" , 0x045D00 }, + { (char*) "Europe/Paris" , 0x045FB0 }, + { (char*) "Europe/Podgorica" , 0x04640D }, + { (char*) "Europe/Prague" , 0x0465F7 }, + { (char*) "Europe/Riga" , 0x0468D6 }, + { (char*) "Europe/Rome" , 0x046B98 }, + { (char*) "Europe/Samara" , 0x046F57 }, + { (char*) "Europe/San_Marino" , 0x047258 }, + { (char*) "Europe/Sarajevo" , 0x047617 }, + { (char*) "Europe/Saratov" , 0x047801 }, + { (char*) "Europe/Simferopol" , 0x047AF3 }, + { (char*) "Europe/Skopje" , 0x047E66 }, + { (char*) "Europe/Sofia" , 0x048050 }, + { (char*) "Europe/Stockholm" , 0x0482AC }, + { (char*) "Europe/Tallinn" , 0x0484A9 }, + { (char*) "Europe/Tirane" , 0x048758 }, + { (char*) "Europe/Tiraspol" , 0x0489C0 }, + { (char*) "Europe/Ulyanovsk" , 0x048E83 }, + { (char*) "Europe/Uzhgorod" , 0x049199 }, + { (char*) "Europe/Vaduz" , 0x0493D3 }, + { (char*) "Europe/Vatican" , 0x0495BD }, + { (char*) "Europe/Vienna" , 0x04997C }, + { (char*) "Europe/Vilnius" , 0x049C1A }, + { (char*) "Europe/Volgograd" , 0x049ECA }, + { (char*) "Europe/Warsaw" , 0x04A1D9 }, + { (char*) "Europe/Zagreb" , 0x04A580 }, + { (char*) "Europe/Zaporozhye" , 0x04A76A }, + { (char*) "Europe/Zurich" , 0x04A9A4 }, + { (char*) "Factory" , 0x04ABA1 }, + { (char*) "GB" , 0x04AC1E }, + { (char*) "GB-Eire" , 0x04B269 }, + { (char*) "GMT" , 0x04B8B4 }, + { (char*) "GMT+0" , 0x04B92F }, + { (char*) "GMT-0" , 0x04B9AA }, + { (char*) "GMT0" , 0x04BA25 }, + { (char*) "Greenwich" , 0x04BAA0 }, + { (char*) "Hongkong" , 0x04BB1B }, + { (char*) "HST" , 0x04BE2E }, + { (char*) "Iceland" , 0x04BF17 }, + { (char*) "Indian/Antananarivo" , 0x04BFA5 }, + { (char*) "Indian/Chagos" , 0x04C051 }, + { (char*) "Indian/Christmas" , 0x04C0F5 }, + { (char*) "Indian/Cocos" , 0x04C186 }, + { (char*) "Indian/Comoro" , 0x04C21E }, + { (char*) "Indian/Kerguelen" , 0x04C2AD }, + { (char*) "Indian/Mahe" , 0x04C33E }, + { (char*) "Indian/Maldives" , 0x04C3CF }, + { (char*) "Indian/Mauritius" , 0x04C473 }, + { (char*) "Indian/Mayotte" , 0x04C532 }, + { (char*) "Indian/Reunion" , 0x04C5C1 }, + { (char*) "Iran" , 0x04C652 }, + { (char*) "Israel" , 0x04C98A }, + { (char*) "Jamaica" , 0x04CDC8 }, + { (char*) "Japan" , 0x04CF27 }, + { (char*) "Kwajalein" , 0x04D008 }, + { (char*) "Libya" , 0x04D0EF }, + { (char*) "MET" , 0x04D2AA }, + { (char*) "Mexico/BajaNorte" , 0x04D705 }, + { (char*) "Mexico/BajaSur" , 0x04DC68 }, + { (char*) "Mexico/General" , 0x04DF26 }, + { (char*) "MST" , 0x04E237 }, + { (char*) "MST7MDT" , 0x04E333 }, + { (char*) "Navajo" , 0x04E6D9 }, + { (char*) "NZ" , 0x04EAF7 }, + { (char*) "NZ-CHAT" , 0x04EF16 }, + { (char*) "Pacific/Apia" , 0x04F24A }, + { (char*) "Pacific/Auckland" , 0x04F3ED }, + { (char*) "Pacific/Bougainville" , 0x04F81F }, + { (char*) "Pacific/Chatham" , 0x04F900 }, + { (char*) "Pacific/Chuuk" , 0x04FC43 }, + { (char*) "Pacific/Easter" , 0x04FD21 }, + { (char*) "Pacific/Efate" , 0x0501D0 }, + { (char*) "Pacific/Enderbury" , 0x050332 }, + { (char*) "Pacific/Fakaofo" , 0x0503EA }, + { (char*) "Pacific/Fiji" , 0x05048F }, + { (char*) "Pacific/Funafuti" , 0x050627 }, + { (char*) "Pacific/Galapagos" , 0x0506B9 }, + { (char*) "Pacific/Gambier" , 0x050785 }, + { (char*) "Pacific/Guadalcanal" , 0x050824 }, + { (char*) "Pacific/Guam" , 0x0508B6 }, + { (char*) "Pacific/Honolulu" , 0x050A20 }, + { (char*) "Pacific/Johnston" , 0x050B0F }, + { (char*) "Pacific/Kanton" , 0x050BF8 }, + { (char*) "Pacific/Kiritimati" , 0x050CBF }, + { (char*) "Pacific/Kosrae" , 0x050D85 }, + { (char*) "Pacific/Kwajalein" , 0x050E89 }, + { (char*) "Pacific/Majuro" , 0x050F79 }, + { (char*) "Pacific/Marquesas" , 0x051077 }, + { (char*) "Pacific/Midway" , 0x05111F }, + { (char*) "Pacific/Nauru" , 0x0511E2 }, + { (char*) "Pacific/Niue" , 0x0512A5 }, + { (char*) "Pacific/Norfolk" , 0x05134B }, + { (char*) "Pacific/Noumea" , 0x051444 }, + { (char*) "Pacific/Pago_Pago" , 0x051516 }, + { (char*) "Pacific/Palau" , 0x0515B4 }, + { (char*) "Pacific/Pitcairn" , 0x051654 }, + { (char*) "Pacific/Pohnpei" , 0x0516F9 }, + { (char*) "Pacific/Ponape" , 0x0517E9 }, + { (char*) "Pacific/Port_Moresby" , 0x05187B }, + { (char*) "Pacific/Rarotonga" , 0x051939 }, + { (char*) "Pacific/Saipan" , 0x051ADB }, + { (char*) "Pacific/Samoa" , 0x051C3C }, + { (char*) "Pacific/Tahiti" , 0x051CDA }, + { (char*) "Pacific/Tarawa" , 0x051D7A }, + { (char*) "Pacific/Tongatapu" , 0x051E1B }, + { (char*) "Pacific/Truk" , 0x051F14 }, + { (char*) "Pacific/Wake" , 0x051FBA }, + { (char*) "Pacific/Wallis" , 0x052057 }, + { (char*) "Pacific/Yap" , 0x0520E9 }, + { (char*) "Poland" , 0x05218F }, + { (char*) "Portugal" , 0x052536 }, + { (char*) "PRC" , 0x052AF9 }, + { (char*) "PST8PDT" , 0x052C8E }, + { (char*) "ROC" , 0x053034 }, + { (char*) "ROK" , 0x05323F }, + { (char*) "Singapore" , 0x0533EA }, + { (char*) "Turkey" , 0x0534F6 }, + { (char*) "UCT" , 0x0539B2 }, + { (char*) "Universal" , 0x053A2D }, + { (char*) "US/Alaska" , 0x053AA8 }, + { (char*) "US/Aleutian" , 0x053E85 }, + { (char*) "US/Arizona" , 0x05425A }, + { (char*) "US/Central" , 0x054356 }, + { (char*) "US/East-Indiana" , 0x054A3C }, + { (char*) "US/Eastern" , 0x054C5B }, + { (char*) "US/Hawaii" , 0x055337 }, + { (char*) "US/Indiana-Starke" , 0x055420 }, + { (char*) "US/Michigan" , 0x055824 }, + { (char*) "US/Mountain" , 0x055BB3 }, + { (char*) "US/Pacific" , 0x055FD1 }, + { (char*) "US/Samoa" , 0x0564EB }, + { (char*) "UTC" , 0x056589 }, + { (char*) "W-SU" , 0x056604 }, + { (char*) "WET" , 0x05699C }, + { (char*) "Zulu" , 0x056F5F }, }; -const unsigned char timelib_timezone_db_data_builtin[357092] = { +const unsigned char timelib_timezone_db_data_builtin[356314] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -2905,7 +2905,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x9C, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x98, 0x58, 0x55, 0x70, 0x00, -0x00, 0x00, 0x00, 0x2A, 0x03, 0x73, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x74, 0x89, 0x40, 0x01, +0x00, 0x00, 0x00, 0x2A, 0x02, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x74, 0x89, 0x40, 0x01, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xBA, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x35, @@ -5367,7 +5367,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x06, 0x4E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x27, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x41, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xEB, 0xA0, 0x00, @@ -5403,19 +5403,40 @@ 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, -0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, +0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, +0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, +0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, +0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, +0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, +0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, +0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, +0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, -0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, -0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x2D, 0x30, 0x30, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, -0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, -0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, -0x0A, 0x00, 0xF1, 0x9F, 0x5C, 0x00, 0x46, 0x9F, 0x6D, 0x00, 0x00, 0x00, 0x14, 0x4D, 0x6F, 0x75, -0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D, 0x20, 0x4E, 0x54, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, -0x29, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, +0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, +0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x2D, 0x30, 0x30, 0x00, 0x50, 0x44, +0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x43, 0x53, +0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x0A, 0x00, 0xF1, 0x9F, 0x5C, 0x00, 0x46, 0x9F, 0x6D, +0x00, 0x00, 0x00, 0x0F, 0x43, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x4E, 0x54, 0x20, 0x28, 0x77, 0x65, +0x73, 0x74, 0x29, /* America/Iqaluit */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7896,7 +7917,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xA0, 0x3B, 0x80, 0xFF, @@ -7959,7 +7980,27 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x4E, 0x70, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x30, 0x70, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x12, 0x70, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xF4, 0x70, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xD6, 0x70, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xB8, 0x70, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x79, 0x70, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x5B, 0x70, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x3D, 0x70, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x1F, 0x70, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x01, 0x70, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xE3, 0x70, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, @@ -7967,12 +8008,14 @@ 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, -0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, -0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x05, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, +0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, +0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, +0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, +0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, /* America/Rankin_Inlet */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9517,7 +9560,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xA0, 0x3B, 0x80, 0xFF, @@ -9580,7 +9623,27 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x4E, 0x70, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x30, 0x70, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x12, 0x70, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xF4, 0x70, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xD6, 0x70, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xB8, 0x70, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x79, 0x70, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x5B, 0x70, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x3D, 0x70, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x1F, 0x70, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x01, 0x70, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xE3, 0x70, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, @@ -9588,14 +9651,15 @@ 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, -0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, -0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD5, -0x71, 0xED, 0x00, 0x7E, 0x6B, 0x47, 0x00, 0x00, 0x00, 0x1D, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, -0x6C, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, 0x2C, 0x20, 0x4D, -0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x05, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, +0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, +0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, +0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, +0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xD5, 0x71, 0xED, 0x00, 0x7E, 0x6B, 0x47, 0x00, 0x00, 0x00, +0x1E, 0x45, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x4D, 0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61, 0x2C, +0x20, 0x4F, 0x4E, 0x20, 0x28, 0x6E, 0x6F, 0x72, 0x74, 0x68, 0x77, 0x65, 0x73, 0x74, 0x29, /* America/Yakutat */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -13210,7 +13274,7 @@ 0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x10, 0xA9, 0xFD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, +0x00, 0x00, 0x00, 0x10, 0xA9, 0xFD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAC, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, @@ -15696,7 +15760,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xA0, 0x3B, 0x80, 0xFF, @@ -15759,7 +15823,27 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x4E, 0x70, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x30, 0x70, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x12, 0x70, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xF4, 0x70, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xD6, 0x70, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xB8, 0x70, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x79, 0x70, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x5B, 0x70, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x3D, 0x70, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x1F, 0x70, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x01, 0x70, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xE3, 0x70, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, @@ -15767,12 +15851,14 @@ 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, -0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, -0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x05, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, +0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, +0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, +0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, +0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, /* Canada/Eastern */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16553,54 +16639,10 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x2C, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x0E, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xDB, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0xCB, 0x74, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xF7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x45, 0xD2, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xA5, 0x63, 0xD9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xD9, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x97, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xBB, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xB3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x9D, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x95, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x7F, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x77, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x61, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x59, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x43, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x3B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x5F, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x58, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x41, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x3A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x23, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x1C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3C, 0x05, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xFE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xE7, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x05, 0x04, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xC2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xE6, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xDE, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xC8, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5A, 0xD6, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xC1, 0xB0, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x8C, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x6E, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x66, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x8A, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x48, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x6C, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x65, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x4E, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x47, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xF3, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xEB, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xCD, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xAF, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x91, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xB5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x73, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x90, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x72, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x54, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x36, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x3C, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x1E, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x17, 0x00, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xE2, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xC4, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xE1, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xC3, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xC2, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xA5, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x87, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x86, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x69, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x68, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x85, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x67, 0xF0, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x2C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x0E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xDB, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x49, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x2B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x0D, 0xF0, 0x00, @@ -16641,21 +16683,13 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x8D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xAD, 0xD4, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0xFF, 0xFF, -0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, -0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, +0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16881,7 +16915,7 @@ 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAC, 0xB4, 0xF7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, @@ -16980,54 +17014,10 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, @@ -17068,23 +17058,16 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, -0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, -0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, +0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, +0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, +0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18203,7 +18186,7 @@ 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAC, 0xB4, 0xF7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, @@ -21476,7 +21459,7 @@ 0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x10, 0xA9, 0xFD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, +0x00, 0x00, 0x00, 0x10, 0xA9, 0xFD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAC, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, @@ -21961,15 +21944,10 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x04, 0x0C, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x3A, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x1C, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xE9, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xFE, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x45, 0xE0, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xA4, 0x8F, 0xA6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x18, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x76, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x94, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x58, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x76, 0x00, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x3A, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x1C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xE9, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x75, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x57, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x39, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x1C, 0x00, 0x00, @@ -22010,18 +21988,16 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x9D, 0x94, 0x00, 0x00, 0xFF, 0xFF, -0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, -0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, -0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, -0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, +0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, +0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, +0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Navajo */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23274,29 +23250,10 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x04, 0x1A, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x48, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x2A, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xF7, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x74, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x80, 0xAD, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xC3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x90, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0xA5, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0xAC, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x87, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x8E, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x69, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x70, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x4B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x52, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x2D, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x34, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x4A, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x51, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x2C, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xF2, 0x33, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x0E, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xD2, 0x15, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xB1, 0xF7, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xD2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x91, 0xD9, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xEE, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x71, 0xBB, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xD0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xC1, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xB2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0xA3, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x94, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x85, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x76, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0xA2, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x58, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x84, 0x10, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xF7, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x65, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, @@ -23337,20 +23294,16 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x91, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, -0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, -0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, -0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, +0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, +0x54, 0x00, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, +0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ROC */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -24562,470 +24515,470 @@ { (char*) "America/Indiana/Winamac" , 0x01DE9A }, { (char*) "America/Indianapolis" , 0x01E5BE }, { (char*) "America/Inuvik" , 0x01EC5C }, - { (char*) "America/Iqaluit" , 0x01F496 }, - { (char*) "America/Jamaica" , 0x01FD55 }, - { (char*) "America/Jujuy" , 0x01FF43 }, - { (char*) "America/Juneau" , 0x020359 }, - { (char*) "America/Kentucky/Louisville" , 0x020CAA }, - { (char*) "America/Kentucky/Monticello" , 0x0217B8 }, - { (char*) "America/Knox_IN" , 0x022118 }, - { (char*) "America/Kralendijk" , 0x022AB0 }, - { (char*) "America/La_Paz" , 0x022BB2 }, - { (char*) "America/Lima" , 0x022C98 }, - { (char*) "America/Los_Angeles" , 0x022E2C }, - { (char*) "America/Louisville" , 0x023963 }, - { (char*) "America/Lower_Princes" , 0x024453 }, - { (char*) "America/Maceio" , 0x024555 }, - { (char*) "America/Managua" , 0x02484B }, - { (char*) "America/Manaus" , 0x024A05 }, - { (char*) "America/Marigot" , 0x024C6E }, - { (char*) "America/Martinique" , 0x024D70 }, - { (char*) "America/Matamoros" , 0x024E64 }, - { (char*) "America/Mazatlan" , 0x025426 }, - { (char*) "America/Mendoza" , 0x025888 }, - { (char*) "America/Menominee" , 0x025CBA }, - { (char*) "America/Merida" , 0x0265C7 }, - { (char*) "America/Metlakatla" , 0x0269D0 }, - { (char*) "America/Mexico_City" , 0x026F82 }, - { (char*) "America/Miquelon" , 0x027462 }, - { (char*) "America/Moncton" , 0x027AE2 }, - { (char*) "America/Monterrey" , 0x028758 }, - { (char*) "America/Montevideo" , 0x028BF4 }, - { (char*) "America/Montreal" , 0x0291D8 }, - { (char*) "America/Montserrat" , 0x029F8A }, - { (char*) "America/Nassau" , 0x02A02A }, - { (char*) "America/New_York" , 0x02A98A }, - { (char*) "America/Nipigon" , 0x02B78A }, - { (char*) "America/Nome" , 0x02C53C }, - { (char*) "America/Noronha" , 0x02CE94 }, - { (char*) "America/North_Dakota/Beulah" , 0x02D16E }, - { (char*) "America/North_Dakota/Center" , 0x02DAEB }, - { (char*) "America/North_Dakota/New_Salem" , 0x02E468 }, - { (char*) "America/Nuuk" , 0x02EDEB }, - { (char*) "America/Ojinaga" , 0x02F569 }, - { (char*) "America/Panama" , 0x02FB85 }, - { (char*) "America/Pangnirtung" , 0x02FC47 }, - { (char*) "America/Paramaribo" , 0x0304ED }, - { (char*) "America/Phoenix" , 0x0305F1 }, - { (char*) "America/Port-au-Prince" , 0x03077D }, - { (char*) "America/Port_of_Spain" , 0x030D23 }, - { (char*) "America/Porto_Acre" , 0x030DC3 }, - { (char*) "America/Porto_Velho" , 0x031035 }, - { (char*) "America/Puerto_Rico" , 0x03127B }, - { (char*) "America/Punta_Arenas" , 0x03137D }, - { (char*) "America/Rainy_River" , 0x031B08 }, - { (char*) "America/Rankin_Inlet" , 0x032648 }, - { (char*) "America/Recife" , 0x032E7C }, - { (char*) "America/Regina" , 0x033150 }, - { (char*) "America/Resolute" , 0x033545 }, - { (char*) "America/Rio_Branco" , 0x033D7A }, - { (char*) "America/Rosario" , 0x033FF0 }, - { (char*) "America/Santa_Isabel" , 0x034422 }, - { (char*) "America/Santarem" , 0x034F88 }, - { (char*) "America/Santiago" , 0x0351EB }, - { (char*) "America/Santo_Domingo" , 0x035BD7 }, - { (char*) "America/Sao_Paulo" , 0x035DAD }, - { (char*) "America/Scoresbysund" , 0x036385 }, - { (char*) "America/Shiprock" , 0x036B3D }, - { (char*) "America/Sitka" , 0x0374E5 }, - { (char*) "America/St_Barthelemy" , 0x037E1D }, - { (char*) "America/St_Johns" , 0x037F1F }, - { (char*) "America/St_Kitts" , 0x038D8D }, - { (char*) "America/St_Lucia" , 0x038E2D }, - { (char*) "America/St_Thomas" , 0x038EEF }, - { (char*) "America/St_Vincent" , 0x038F8F }, - { (char*) "America/Swift_Current" , 0x039051 }, - { (char*) "America/Tegucigalpa" , 0x03929F }, - { (char*) "America/Thule" , 0x0393A7 }, - { (char*) "America/Thunder_Bay" , 0x03999F }, - { (char*) "America/Tijuana" , 0x03A751 }, - { (char*) "America/Toronto" , 0x03B2C6 }, - { (char*) "America/Tortola" , 0x03C096 }, - { (char*) "America/Vancouver" , 0x03C136 }, - { (char*) "America/Virgin" , 0x03CB75 }, - { (char*) "America/Whitehorse" , 0x03CC77 }, - { (char*) "America/Winnipeg" , 0x03D2E3 }, - { (char*) "America/Yakutat" , 0x03DE40 }, - { (char*) "America/Yellowknife" , 0x03E75D }, - { (char*) "Antarctica/Casey" , 0x03EF57 }, - { (char*) "Antarctica/Davis" , 0x03F10F }, - { (char*) "Antarctica/DumontDUrville" , 0x03F23B }, - { (char*) "Antarctica/Macquarie" , 0x03F30B }, - { (char*) "Antarctica/Mawson" , 0x03FBFB }, - { (char*) "Antarctica/McMurdo" , 0x03FCC6 }, - { (char*) "Antarctica/Palmer" , 0x0404C1 }, - { (char*) "Antarctica/Rothera" , 0x040A4F }, - { (char*) "Antarctica/South_Pole" , 0x040AF8 }, - { (char*) "Antarctica/Syowa" , 0x041489 }, - { (char*) "Antarctica/Troll" , 0x041531 }, - { (char*) "Antarctica/Vostok" , 0x0419BE }, - { (char*) "Arctic/Longyearbyen" , 0x041AA5 }, - { (char*) "Asia/Aden" , 0x0423AB }, - { (char*) "Asia/Almaty" , 0x04244E }, - { (char*) "Asia/Amman" , 0x042843 }, - { (char*) "Asia/Anadyr" , 0x042DE8 }, - { (char*) "Asia/Aqtau" , 0x04329D }, - { (char*) "Asia/Aqtobe" , 0x043687 }, - { (char*) "Asia/Ashgabat" , 0x043A85 }, - { (char*) "Asia/Ashkhabad" , 0x043CEE }, - { (char*) "Asia/Atyrau" , 0x043F57 }, - { (char*) "Asia/Baghdad" , 0x044349 }, - { (char*) "Asia/Bahrain" , 0x04471E }, - { (char*) "Asia/Baku" , 0x044809 }, - { (char*) "Asia/Bangkok" , 0x044CD2 }, - { (char*) "Asia/Barnaul" , 0x044D97 }, - { (char*) "Asia/Beirut" , 0x045268 }, - { (char*) "Asia/Bishkek" , 0x045ADE }, - { (char*) "Asia/Brunei" , 0x045EB3 }, - { (char*) "Asia/Calcutta" , 0x045F7C }, - { (char*) "Asia/Chita" , 0x0460A5 }, - { (char*) "Asia/Choibalsan" , 0x04657C }, - { (char*) "Asia/Chongqing" , 0x0468F5 }, - { (char*) "Asia/Chungking" , 0x046B32 }, - { (char*) "Asia/Colombo" , 0x046D6F }, - { (char*) "Asia/Dacca" , 0x046EE1 }, - { (char*) "Asia/Damascus" , 0x047030 }, - { (char*) "Asia/Dhaka" , 0x04778D }, - { (char*) "Asia/Dili" , 0x0478DC }, - { (char*) "Asia/Dubai" , 0x0479E9 }, - { (char*) "Asia/Dushanbe" , 0x047A8C }, - { (char*) "Asia/Famagusta" , 0x047CD9 }, - { (char*) "Asia/Gaza" , 0x0484E0 }, - { (char*) "Asia/Harbin" , 0x0493FA }, - { (char*) "Asia/Hebron" , 0x049637 }, - { (char*) "Asia/Ho_Chi_Minh" , 0x04A56C }, - { (char*) "Asia/Hong_Kong" , 0x04A6C1 }, - { (char*) "Asia/Hovd" , 0x04AB9E }, - { (char*) "Asia/Irkutsk" , 0x04AF2D }, - { (char*) "Asia/Istanbul" , 0x04B420 }, - { (char*) "Asia/Jakarta" , 0x04BBB9 }, - { (char*) "Asia/Jayapura" , 0x04BD51 }, - { (char*) "Asia/Jerusalem" , 0x04BE70 }, - { (char*) "Asia/Kabul" , 0x04C7D0 }, - { (char*) "Asia/Kamchatka" , 0x04C89E }, - { (char*) "Asia/Karachi" , 0x04CD3C }, - { (char*) "Asia/Kashgar" , 0x04CEC3 }, - { (char*) "Asia/Kathmandu" , 0x04CF66 }, - { (char*) "Asia/Katmandu" , 0x04D038 }, - { (char*) "Asia/Khandyga" , 0x04D10A }, - { (char*) "Asia/Kolkata" , 0x04D61D }, - { (char*) "Asia/Krasnoyarsk" , 0x04D746 }, - { (char*) "Asia/Kuala_Lumpur" , 0x04DC14 }, - { (char*) "Asia/Kuching" , 0x04DDC5 }, - { (char*) "Asia/Kuwait" , 0x04DFB4 }, - { (char*) "Asia/Macao" , 0x04E057 }, - { (char*) "Asia/Macau" , 0x04E52E }, - { (char*) "Asia/Magadan" , 0x04EA05 }, - { (char*) "Asia/Makassar" , 0x04EED9 }, - { (char*) "Asia/Manila" , 0x04F02C }, - { (char*) "Asia/Muscat" , 0x04F1DE }, - { (char*) "Asia/Nicosia" , 0x04F281 }, - { (char*) "Asia/Novokuznetsk" , 0x04FA6D }, - { (char*) "Asia/Novosibirsk" , 0x04FF09 }, - { (char*) "Asia/Omsk" , 0x0503E0 }, - { (char*) "Asia/Oral" , 0x0508A2 }, - { (char*) "Asia/Phnom_Penh" , 0x050C9C }, - { (char*) "Asia/Pontianak" , 0x050DB9 }, - { (char*) "Asia/Pyongyang" , 0x050F3C }, - { (char*) "Asia/Qatar" , 0x051035 }, - { (char*) "Asia/Qostanay" , 0x0510FA }, - { (char*) "Asia/Qyzylorda" , 0x051521 }, - { (char*) "Asia/Rangoon" , 0x05193D }, - { (char*) "Asia/Riyadh" , 0x051A47 }, - { (char*) "Asia/Saigon" , 0x051AEA }, - { (char*) "Asia/Sakhalin" , 0x051C3F }, - { (char*) "Asia/Samarkand" , 0x052107 }, - { (char*) "Asia/Seoul" , 0x052357 }, - { (char*) "Asia/Shanghai" , 0x0525CC }, - { (char*) "Asia/Singapore" , 0x052815 }, - { (char*) "Asia/Srednekolymsk" , 0x0529B2 }, - { (char*) "Asia/Taipei" , 0x052E86 }, - { (char*) "Asia/Tashkent" , 0x05318B }, - { (char*) "Asia/Tbilisi" , 0x0533E9 }, - { (char*) "Asia/Tehran" , 0x0537E4 }, - { (char*) "Asia/Tel_Aviv" , 0x053CD0 }, - { (char*) "Asia/Thimbu" , 0x054630 }, - { (char*) "Asia/Thimphu" , 0x0546F9 }, - { (char*) "Asia/Tokyo" , 0x0547C2 }, - { (char*) "Asia/Tomsk" , 0x054903 }, - { (char*) "Asia/Ujung_Pandang" , 0x054DD4 }, - { (char*) "Asia/Ulaanbaatar" , 0x054EDE }, - { (char*) "Asia/Ulan_Bator" , 0x055267 }, - { (char*) "Asia/Urumqi" , 0x0555E0 }, - { (char*) "Asia/Ust-Nera" , 0x055690 }, - { (char*) "Asia/Vientiane" , 0x055B86 }, - { (char*) "Asia/Vladivostok" , 0x055CBF }, - { (char*) "Asia/Yakutsk" , 0x056188 }, - { (char*) "Asia/Yangon" , 0x056650 }, - { (char*) "Asia/Yekaterinburg" , 0x05675A }, - { (char*) "Asia/Yerevan" , 0x056C41 }, - { (char*) "Atlantic/Azores" , 0x0570BE }, - { (char*) "Atlantic/Bermuda" , 0x057E42 }, - { (char*) "Atlantic/Canary" , 0x0587AA }, - { (char*) "Atlantic/Cape_Verde" , 0x058F2D }, - { (char*) "Atlantic/Faeroe" , 0x059039 }, - { (char*) "Atlantic/Faroe" , 0x05975C }, - { (char*) "Atlantic/Jan_Mayen" , 0x059E7F }, - { (char*) "Atlantic/Madeira" , 0x05A785 }, - { (char*) "Atlantic/Reykjavik" , 0x05B4D1 }, - { (char*) "Atlantic/South_Georgia" , 0x05B967 }, - { (char*) "Atlantic/St_Helena" , 0x05BA09 }, - { (char*) "Atlantic/Stanley" , 0x05BACB }, - { (char*) "Australia/ACT" , 0x05BF87 }, - { (char*) "Australia/Adelaide" , 0x05C821 }, - { (char*) "Australia/Brisbane" , 0x05D0DC }, - { (char*) "Australia/Broken_Hill" , 0x05D2A2 }, - { (char*) "Australia/Canberra" , 0x05DB7F }, - { (char*) "Australia/Currie" , 0x05E419 }, - { (char*) "Australia/Darwin" , 0x05ED5B }, - { (char*) "Australia/Eucla" , 0x05EEBE }, - { (char*) "Australia/Hobart" , 0x05F0AB }, - { (char*) "Australia/LHI" , 0x05F9F5 }, - { (char*) "Australia/Lindeman" , 0x060137 }, - { (char*) "Australia/Lord_Howe" , 0x06033D }, - { (char*) "Australia/Melbourne" , 0x060A8F }, - { (char*) "Australia/North" , 0x061331 }, - { (char*) "Australia/NSW" , 0x061482 }, - { (char*) "Australia/Perth" , 0x061D1C }, - { (char*) "Australia/Queensland" , 0x061F04 }, - { (char*) "Australia/South" , 0x0620B3 }, - { (char*) "Australia/Sydney" , 0x06295F }, - { (char*) "Australia/Tasmania" , 0x063215 }, - { (char*) "Australia/Victoria" , 0x063B57 }, - { (char*) "Australia/West" , 0x0643F1 }, - { (char*) "Australia/Yancowinna" , 0x0645BB }, - { (char*) "Brazil/Acre" , 0x064E7C }, - { (char*) "Brazil/DeNoronha" , 0x0650EE }, - { (char*) "Brazil/East" , 0x0653B8 }, - { (char*) "Brazil/West" , 0x06595A }, - { (char*) "Canada/Atlantic" , 0x065BB4 }, - { (char*) "Canada/Central" , 0x066920 }, - { (char*) "Canada/Eastern" , 0x067460 }, - { (char*) "Canada/Mountain" , 0x068212 }, - { (char*) "Canada/Newfoundland" , 0x068A0C }, - { (char*) "Canada/Pacific" , 0x06985F }, - { (char*) "Canada/Saskatchewan" , 0x06A289 }, - { (char*) "Canada/Yukon" , 0x06A669 }, - { (char*) "CET" , 0x06ACC3 }, - { (char*) "Chile/Continental" , 0x06B844 }, - { (char*) "Chile/EasterIsland" , 0x06C223 }, - { (char*) "CST6CDT" , 0x06CADA }, - { (char*) "Cuba" , 0x06D8EE }, - { (char*) "EET" , 0x06E26A }, - { (char*) "Egypt" , 0x06EB4C }, - { (char*) "Eire" , 0x06F4B7 }, - { (char*) "EST" , 0x070267 }, - { (char*) "EST5EDT" , 0x070329 }, - { (char*) "Etc/GMT" , 0x071115 }, - { (char*) "Etc/GMT+0" , 0x071193 }, - { (char*) "Etc/GMT+1" , 0x071211 }, - { (char*) "Etc/GMT+10" , 0x071291 }, - { (char*) "Etc/GMT+11" , 0x071312 }, - { (char*) "Etc/GMT+12" , 0x071393 }, - { (char*) "Etc/GMT+2" , 0x071414 }, - { (char*) "Etc/GMT+3" , 0x071494 }, - { (char*) "Etc/GMT+4" , 0x071514 }, - { (char*) "Etc/GMT+5" , 0x071594 }, - { (char*) "Etc/GMT+6" , 0x071614 }, - { (char*) "Etc/GMT+7" , 0x071694 }, - { (char*) "Etc/GMT+8" , 0x071714 }, - { (char*) "Etc/GMT+9" , 0x071794 }, - { (char*) "Etc/GMT-0" , 0x071814 }, - { (char*) "Etc/GMT-1" , 0x071892 }, - { (char*) "Etc/GMT-10" , 0x071913 }, - { (char*) "Etc/GMT-11" , 0x071995 }, - { (char*) "Etc/GMT-12" , 0x071A17 }, - { (char*) "Etc/GMT-13" , 0x071A99 }, - { (char*) "Etc/GMT-14" , 0x071B1B }, - { (char*) "Etc/GMT-2" , 0x071B9D }, - { (char*) "Etc/GMT-3" , 0x071C1E }, - { (char*) "Etc/GMT-4" , 0x071C9F }, - { (char*) "Etc/GMT-5" , 0x071D20 }, - { (char*) "Etc/GMT-6" , 0x071DA1 }, - { (char*) "Etc/GMT-7" , 0x071E22 }, - { (char*) "Etc/GMT-8" , 0x071EA3 }, - { (char*) "Etc/GMT-9" , 0x071F24 }, - { (char*) "Etc/GMT0" , 0x071FA5 }, - { (char*) "Etc/Greenwich" , 0x072023 }, - { (char*) "Etc/UCT" , 0x0720A1 }, - { (char*) "Etc/Universal" , 0x07211F }, - { (char*) "Etc/UTC" , 0x07219D }, - { (char*) "Etc/Zulu" , 0x07221B }, - { (char*) "Europe/Amsterdam" , 0x072299 }, - { (char*) "Europe/Andorra" , 0x072E03 }, - { (char*) "Europe/Astrakhan" , 0x0734DD }, - { (char*) "Europe/Athens" , 0x07397A }, - { (char*) "Europe/Belfast" , 0x07425C }, - { (char*) "Europe/Belgrade" , 0x0750B8 }, - { (char*) "Europe/Berlin" , 0x075844 }, - { (char*) "Europe/Bratislava" , 0x076159 }, - { (char*) "Europe/Brussels" , 0x076A62 }, - { (char*) "Europe/Bucharest" , 0x0775E3 }, - { (char*) "Europe/Budapest" , 0x077E77 }, - { (char*) "Europe/Busingen" , 0x0787C3 }, - { (char*) "Europe/Chisinau" , 0x078F4C }, - { (char*) "Europe/Copenhagen" , 0x0798D0 }, - { (char*) "Europe/Dublin" , 0x07A135 }, - { (char*) "Europe/Gibraltar" , 0x07AEE5 }, - { (char*) "Europe/Guernsey" , 0x07BAED }, - { (char*) "Europe/Helsinki" , 0x07C98D }, - { (char*) "Europe/Isle_of_Man" , 0x07D105 }, - { (char*) "Europe/Istanbul" , 0x07DF51 }, - { (char*) "Europe/Jersey" , 0x07E6EA }, - { (char*) "Europe/Kaliningrad" , 0x07F58A }, - { (char*) "Europe/Kiev" , 0x07FB7F }, - { (char*) "Europe/Kirov" , 0x0803D3 }, - { (char*) "Europe/Kyiv" , 0x08088E }, - { (char*) "Europe/Lisbon" , 0x0810F1 }, - { (char*) "Europe/Ljubljana" , 0x081ED7 }, - { (char*) "Europe/London" , 0x082663 }, - { (char*) "Europe/Luxembourg" , 0x0834BF }, - { (char*) "Europe/Madrid" , 0x08404D }, - { (char*) "Europe/Malta" , 0x084A9F }, - { (char*) "Europe/Mariehamn" , 0x0854E7 }, - { (char*) "Europe/Minsk" , 0x085C5F }, - { (char*) "Europe/Monaco" , 0x086186 }, - { (char*) "Europe/Moscow" , 0x086D12 }, - { (char*) "Europe/Nicosia" , 0x087331 }, - { (char*) "Europe/Oslo" , 0x087B0F }, - { (char*) "Europe/Paris" , 0x0883CF }, - { (char*) "Europe/Podgorica" , 0x088F6D }, - { (char*) "Europe/Prague" , 0x0896F9 }, - { (char*) "Europe/Riga" , 0x08A002 }, - { (char*) "Europe/Rome" , 0x08A8A4 }, - { (char*) "Europe/Samara" , 0x08B301 }, - { (char*) "Europe/San_Marino" , 0x08B7D7 }, - { (char*) "Europe/Sarajevo" , 0x08C234 }, - { (char*) "Europe/Saratov" , 0x08C9C0 }, - { (char*) "Europe/Simferopol" , 0x08CE6D }, - { (char*) "Europe/Skopje" , 0x08D43C }, - { (char*) "Europe/Sofia" , 0x08DBC8 }, - { (char*) "Europe/Stockholm" , 0x08E3F1 }, - { (char*) "Europe/Tallinn" , 0x08EB72 }, - { (char*) "Europe/Tirane" , 0x08F3E2 }, - { (char*) "Europe/Tiraspol" , 0x08FC12 }, - { (char*) "Europe/Ulyanovsk" , 0x090596 }, - { (char*) "Europe/Uzhgorod" , 0x090A99 }, - { (char*) "Europe/Vaduz" , 0x0912ED }, - { (char*) "Europe/Vatican" , 0x091A59 }, - { (char*) "Europe/Vienna" , 0x0924B6 }, - { (char*) "Europe/Vilnius" , 0x092D5A }, - { (char*) "Europe/Volgograd" , 0x0935D8 }, - { (char*) "Europe/Warsaw" , 0x093A9F }, - { (char*) "Europe/Zagreb" , 0x094509 }, - { (char*) "Europe/Zaporozhye" , 0x094C95 }, - { (char*) "Europe/Zurich" , 0x0954E9 }, - { (char*) "Factory" , 0x095C6A }, - { (char*) "GB" , 0x095CEA }, - { (char*) "GB-Eire" , 0x096B46 }, - { (char*) "GMT" , 0x0979A2 }, - { (char*) "GMT+0" , 0x097A20 }, - { (char*) "GMT-0" , 0x097A9E }, - { (char*) "GMT0" , 0x097B1C }, - { (char*) "Greenwich" , 0x097B9A }, - { (char*) "Hongkong" , 0x097C18 }, - { (char*) "HST" , 0x0980F5 }, - { (char*) "Iceland" , 0x09824A }, - { (char*) "Indian/Antananarivo" , 0x0982EA }, - { (char*) "Indian/Chagos" , 0x0983D1 }, - { (char*) "Indian/Christmas" , 0x098496 }, - { (char*) "Indian/Cocos" , 0x098539 }, - { (char*) "Indian/Comoro" , 0x0985E5 }, - { (char*) "Indian/Kerguelen" , 0x098686 }, - { (char*) "Indian/Mahe" , 0x098729 }, - { (char*) "Indian/Maldives" , 0x0987CC }, - { (char*) "Indian/Mauritius" , 0x098891 }, - { (char*) "Indian/Mayotte" , 0x098980 }, - { (char*) "Indian/Reunion" , 0x098A21 }, - { (char*) "Iran" , 0x098AC4 }, - { (char*) "Israel" , 0x098FB0 }, - { (char*) "Jamaica" , 0x099910 }, - { (char*) "Japan" , 0x099AFE }, - { (char*) "Kwajalein" , 0x099C3F }, - { (char*) "Libya" , 0x099D79 }, - { (char*) "MET" , 0x099FF6 }, - { (char*) "Mexico/BajaNorte" , 0x09AB77 }, - { (char*) "Mexico/BajaSur" , 0x09B6DD }, - { (char*) "Mexico/General" , 0x09BB0D }, - { (char*) "MST" , 0x09BFDF }, - { (char*) "MST7MDT" , 0x09C153 }, - { (char*) "Navajo" , 0x09CAFB }, - { (char*) "NZ" , 0x09D4A3 }, - { (char*) "NZ-CHAT" , 0x09DE34 }, - { (char*) "Pacific/Apia" , 0x09E646 }, - { (char*) "Pacific/Auckland" , 0x09E8A8 }, - { (char*) "Pacific/Bougainville" , 0x09F24C }, - { (char*) "Pacific/Chatham" , 0x09F362 }, - { (char*) "Pacific/Chuuk" , 0x09FB83 }, - { (char*) "Pacific/Easter" , 0x09FC9D }, - { (char*) "Pacific/Efate" , 0x0A0561 }, - { (char*) "Pacific/Enderbury" , 0x0A0779 }, - { (char*) "Pacific/Fakaofo" , 0x0A0861 }, - { (char*) "Pacific/Fiji" , 0x0A0927 }, - { (char*) "Pacific/Funafuti" , 0x0A0B67 }, - { (char*) "Pacific/Galapagos" , 0x0A0C0B }, - { (char*) "Pacific/Gambier" , 0x0A0D08 }, - { (char*) "Pacific/Guadalcanal" , 0x0A0DB9 }, - { (char*) "Pacific/Guam" , 0x0A0E5D }, - { (char*) "Pacific/Honolulu" , 0x0A1057 }, - { (char*) "Pacific/Johnston" , 0x0A11B2 }, - { (char*) "Pacific/Kanton" , 0x0A1307 }, - { (char*) "Pacific/Kiritimati" , 0x0A13FE }, - { (char*) "Pacific/Kosrae" , 0x0A14F6 }, - { (char*) "Pacific/Kwajalein" , 0x0A1659 }, - { (char*) "Pacific/Majuro" , 0x0A179C }, - { (char*) "Pacific/Marquesas" , 0x0A18E8 }, - { (char*) "Pacific/Midway" , 0x0A19A4 }, - { (char*) "Pacific/Nauru" , 0x0A1A97 }, - { (char*) "Pacific/Niue" , 0x0A1B91 }, - { (char*) "Pacific/Norfolk" , 0x0A1C5A }, - { (char*) "Pacific/Noumea" , 0x0A1FC8 }, - { (char*) "Pacific/Pago_Pago" , 0x0A20F6 }, - { (char*) "Pacific/Palau" , 0x0A21B1 }, - { (char*) "Pacific/Pitcairn" , 0x0A2263 }, - { (char*) "Pacific/Pohnpei" , 0x0A232B }, - { (char*) "Pacific/Ponape" , 0x0A2466 }, - { (char*) "Pacific/Port_Moresby" , 0x0A250A }, - { (char*) "Pacific/Rarotonga" , 0x0A25DA }, - { (char*) "Pacific/Saipan" , 0x0A2833 }, - { (char*) "Pacific/Samoa" , 0x0A2A1F }, - { (char*) "Pacific/Tahiti" , 0x0A2ADA }, - { (char*) "Pacific/Tarawa" , 0x0A2B8C }, - { (char*) "Pacific/Tongatapu" , 0x0A2C3F }, - { (char*) "Pacific/Truk" , 0x0A2DB1 }, - { (char*) "Pacific/Wake" , 0x0A2E69 }, - { (char*) "Pacific/Wallis" , 0x0A2F18 }, - { (char*) "Pacific/Yap" , 0x0A2FBC }, - { (char*) "Poland" , 0x0A3074 }, - { (char*) "Portugal" , 0x0A3ADE }, - { (char*) "PRC" , 0x0A48B1 }, - { (char*) "PST8PDT" , 0x0A4AEE }, - { (char*) "ROC" , 0x0A561E }, - { (char*) "ROK" , 0x0A5923 }, - { (char*) "Singapore" , 0x0A5B98 }, - { (char*) "Turkey" , 0x0A5D35 }, - { (char*) "UCT" , 0x0A64CE }, - { (char*) "Universal" , 0x0A654C }, - { (char*) "US/Alaska" , 0x0A65CA }, - { (char*) "US/Aleutian" , 0x0A6F19 }, - { (char*) "US/Arizona" , 0x0A7859 }, - { (char*) "US/Central" , 0x0A79CD }, - { (char*) "US/East-Indiana" , 0x0A87E1 }, - { (char*) "US/Eastern" , 0x0A8E7F }, - { (char*) "US/Hawaii" , 0x0A9C6B }, - { (char*) "US/Indiana-Starke" , 0x0A9DC0 }, - { (char*) "US/Michigan" , 0x0AA758 }, - { (char*) "US/Mountain" , 0x0AB01A }, - { (char*) "US/Pacific" , 0x0AB9C2 }, - { (char*) "US/Samoa" , 0x0AC4F2 }, - { (char*) "UTC" , 0x0AC5AD }, - { (char*) "W-SU" , 0x0AC62B }, - { (char*) "WET" , 0x0ACC36 }, - { (char*) "Zulu" , 0x0ADA09 }, + { (char*) "America/Iqaluit" , 0x01F35F }, + { (char*) "America/Jamaica" , 0x01FC1E }, + { (char*) "America/Jujuy" , 0x01FE0C }, + { (char*) "America/Juneau" , 0x020222 }, + { (char*) "America/Kentucky/Louisville" , 0x020B73 }, + { (char*) "America/Kentucky/Monticello" , 0x021681 }, + { (char*) "America/Knox_IN" , 0x021FE1 }, + { (char*) "America/Kralendijk" , 0x022979 }, + { (char*) "America/La_Paz" , 0x022A7B }, + { (char*) "America/Lima" , 0x022B61 }, + { (char*) "America/Los_Angeles" , 0x022CF5 }, + { (char*) "America/Louisville" , 0x02382C }, + { (char*) "America/Lower_Princes" , 0x02431C }, + { (char*) "America/Maceio" , 0x02441E }, + { (char*) "America/Managua" , 0x024714 }, + { (char*) "America/Manaus" , 0x0248CE }, + { (char*) "America/Marigot" , 0x024B37 }, + { (char*) "America/Martinique" , 0x024C39 }, + { (char*) "America/Matamoros" , 0x024D2D }, + { (char*) "America/Mazatlan" , 0x0252EF }, + { (char*) "America/Mendoza" , 0x025751 }, + { (char*) "America/Menominee" , 0x025B83 }, + { (char*) "America/Merida" , 0x026490 }, + { (char*) "America/Metlakatla" , 0x026899 }, + { (char*) "America/Mexico_City" , 0x026E4B }, + { (char*) "America/Miquelon" , 0x02732B }, + { (char*) "America/Moncton" , 0x0279AB }, + { (char*) "America/Monterrey" , 0x028621 }, + { (char*) "America/Montevideo" , 0x028ABD }, + { (char*) "America/Montreal" , 0x0290A1 }, + { (char*) "America/Montserrat" , 0x029E53 }, + { (char*) "America/Nassau" , 0x029EF3 }, + { (char*) "America/New_York" , 0x02A853 }, + { (char*) "America/Nipigon" , 0x02B653 }, + { (char*) "America/Nome" , 0x02C405 }, + { (char*) "America/Noronha" , 0x02CD5D }, + { (char*) "America/North_Dakota/Beulah" , 0x02D037 }, + { (char*) "America/North_Dakota/Center" , 0x02D9B4 }, + { (char*) "America/North_Dakota/New_Salem" , 0x02E331 }, + { (char*) "America/Nuuk" , 0x02ECB4 }, + { (char*) "America/Ojinaga" , 0x02F432 }, + { (char*) "America/Panama" , 0x02FA4E }, + { (char*) "America/Pangnirtung" , 0x02FB10 }, + { (char*) "America/Paramaribo" , 0x0303B6 }, + { (char*) "America/Phoenix" , 0x0304BA }, + { (char*) "America/Port-au-Prince" , 0x030646 }, + { (char*) "America/Port_of_Spain" , 0x030BEC }, + { (char*) "America/Porto_Acre" , 0x030C8C }, + { (char*) "America/Porto_Velho" , 0x030EFE }, + { (char*) "America/Puerto_Rico" , 0x031144 }, + { (char*) "America/Punta_Arenas" , 0x031246 }, + { (char*) "America/Rainy_River" , 0x0319D1 }, + { (char*) "America/Rankin_Inlet" , 0x0323E3 }, + { (char*) "America/Recife" , 0x032C17 }, + { (char*) "America/Regina" , 0x032EEB }, + { (char*) "America/Resolute" , 0x0332E0 }, + { (char*) "America/Rio_Branco" , 0x033B15 }, + { (char*) "America/Rosario" , 0x033D8B }, + { (char*) "America/Santa_Isabel" , 0x0341BD }, + { (char*) "America/Santarem" , 0x034D23 }, + { (char*) "America/Santiago" , 0x034F86 }, + { (char*) "America/Santo_Domingo" , 0x035972 }, + { (char*) "America/Sao_Paulo" , 0x035B48 }, + { (char*) "America/Scoresbysund" , 0x036120 }, + { (char*) "America/Shiprock" , 0x0368D8 }, + { (char*) "America/Sitka" , 0x037280 }, + { (char*) "America/St_Barthelemy" , 0x037BB8 }, + { (char*) "America/St_Johns" , 0x037CBA }, + { (char*) "America/St_Kitts" , 0x038B28 }, + { (char*) "America/St_Lucia" , 0x038BC8 }, + { (char*) "America/St_Thomas" , 0x038C8A }, + { (char*) "America/St_Vincent" , 0x038D2A }, + { (char*) "America/Swift_Current" , 0x038DEC }, + { (char*) "America/Tegucigalpa" , 0x03903A }, + { (char*) "America/Thule" , 0x039142 }, + { (char*) "America/Thunder_Bay" , 0x03973A }, + { (char*) "America/Tijuana" , 0x03A4EC }, + { (char*) "America/Toronto" , 0x03B061 }, + { (char*) "America/Tortola" , 0x03BE31 }, + { (char*) "America/Vancouver" , 0x03BED1 }, + { (char*) "America/Virgin" , 0x03C910 }, + { (char*) "America/Whitehorse" , 0x03CA12 }, + { (char*) "America/Winnipeg" , 0x03D07E }, + { (char*) "America/Yakutat" , 0x03DAAE }, + { (char*) "America/Yellowknife" , 0x03E3CB }, + { (char*) "Antarctica/Casey" , 0x03EBC5 }, + { (char*) "Antarctica/Davis" , 0x03ED7D }, + { (char*) "Antarctica/DumontDUrville" , 0x03EEA9 }, + { (char*) "Antarctica/Macquarie" , 0x03EF79 }, + { (char*) "Antarctica/Mawson" , 0x03F869 }, + { (char*) "Antarctica/McMurdo" , 0x03F934 }, + { (char*) "Antarctica/Palmer" , 0x04012F }, + { (char*) "Antarctica/Rothera" , 0x0406BD }, + { (char*) "Antarctica/South_Pole" , 0x040766 }, + { (char*) "Antarctica/Syowa" , 0x0410F7 }, + { (char*) "Antarctica/Troll" , 0x04119F }, + { (char*) "Antarctica/Vostok" , 0x04162C }, + { (char*) "Arctic/Longyearbyen" , 0x041713 }, + { (char*) "Asia/Aden" , 0x042019 }, + { (char*) "Asia/Almaty" , 0x0420BC }, + { (char*) "Asia/Amman" , 0x0424B1 }, + { (char*) "Asia/Anadyr" , 0x042A56 }, + { (char*) "Asia/Aqtau" , 0x042F0B }, + { (char*) "Asia/Aqtobe" , 0x0432F5 }, + { (char*) "Asia/Ashgabat" , 0x0436F3 }, + { (char*) "Asia/Ashkhabad" , 0x04395C }, + { (char*) "Asia/Atyrau" , 0x043BC5 }, + { (char*) "Asia/Baghdad" , 0x043FB7 }, + { (char*) "Asia/Bahrain" , 0x04438C }, + { (char*) "Asia/Baku" , 0x044477 }, + { (char*) "Asia/Bangkok" , 0x044940 }, + { (char*) "Asia/Barnaul" , 0x044A05 }, + { (char*) "Asia/Beirut" , 0x044ED6 }, + { (char*) "Asia/Bishkek" , 0x04574C }, + { (char*) "Asia/Brunei" , 0x045B21 }, + { (char*) "Asia/Calcutta" , 0x045BEA }, + { (char*) "Asia/Chita" , 0x045D13 }, + { (char*) "Asia/Choibalsan" , 0x0461EA }, + { (char*) "Asia/Chongqing" , 0x046563 }, + { (char*) "Asia/Chungking" , 0x0467A0 }, + { (char*) "Asia/Colombo" , 0x0469DD }, + { (char*) "Asia/Dacca" , 0x046B4F }, + { (char*) "Asia/Damascus" , 0x046C9E }, + { (char*) "Asia/Dhaka" , 0x0473FB }, + { (char*) "Asia/Dili" , 0x04754A }, + { (char*) "Asia/Dubai" , 0x047657 }, + { (char*) "Asia/Dushanbe" , 0x0476FA }, + { (char*) "Asia/Famagusta" , 0x047947 }, + { (char*) "Asia/Gaza" , 0x04814E }, + { (char*) "Asia/Harbin" , 0x049068 }, + { (char*) "Asia/Hebron" , 0x0492A5 }, + { (char*) "Asia/Ho_Chi_Minh" , 0x04A1DA }, + { (char*) "Asia/Hong_Kong" , 0x04A32F }, + { (char*) "Asia/Hovd" , 0x04A80C }, + { (char*) "Asia/Irkutsk" , 0x04AB9B }, + { (char*) "Asia/Istanbul" , 0x04B08E }, + { (char*) "Asia/Jakarta" , 0x04B827 }, + { (char*) "Asia/Jayapura" , 0x04B9BF }, + { (char*) "Asia/Jerusalem" , 0x04BADE }, + { (char*) "Asia/Kabul" , 0x04C43E }, + { (char*) "Asia/Kamchatka" , 0x04C50C }, + { (char*) "Asia/Karachi" , 0x04C9AA }, + { (char*) "Asia/Kashgar" , 0x04CB31 }, + { (char*) "Asia/Kathmandu" , 0x04CBD4 }, + { (char*) "Asia/Katmandu" , 0x04CCA6 }, + { (char*) "Asia/Khandyga" , 0x04CD78 }, + { (char*) "Asia/Kolkata" , 0x04D28B }, + { (char*) "Asia/Krasnoyarsk" , 0x04D3B4 }, + { (char*) "Asia/Kuala_Lumpur" , 0x04D882 }, + { (char*) "Asia/Kuching" , 0x04DA33 }, + { (char*) "Asia/Kuwait" , 0x04DC22 }, + { (char*) "Asia/Macao" , 0x04DCC5 }, + { (char*) "Asia/Macau" , 0x04E19C }, + { (char*) "Asia/Magadan" , 0x04E673 }, + { (char*) "Asia/Makassar" , 0x04EB47 }, + { (char*) "Asia/Manila" , 0x04EC9A }, + { (char*) "Asia/Muscat" , 0x04EE4C }, + { (char*) "Asia/Nicosia" , 0x04EEEF }, + { (char*) "Asia/Novokuznetsk" , 0x04F6DB }, + { (char*) "Asia/Novosibirsk" , 0x04FB77 }, + { (char*) "Asia/Omsk" , 0x05004E }, + { (char*) "Asia/Oral" , 0x050510 }, + { (char*) "Asia/Phnom_Penh" , 0x05090A }, + { (char*) "Asia/Pontianak" , 0x050A27 }, + { (char*) "Asia/Pyongyang" , 0x050BAA }, + { (char*) "Asia/Qatar" , 0x050CA3 }, + { (char*) "Asia/Qostanay" , 0x050D68 }, + { (char*) "Asia/Qyzylorda" , 0x05118F }, + { (char*) "Asia/Rangoon" , 0x0515AB }, + { (char*) "Asia/Riyadh" , 0x0516B5 }, + { (char*) "Asia/Saigon" , 0x051758 }, + { (char*) "Asia/Sakhalin" , 0x0518AD }, + { (char*) "Asia/Samarkand" , 0x051D75 }, + { (char*) "Asia/Seoul" , 0x051FC5 }, + { (char*) "Asia/Shanghai" , 0x05223A }, + { (char*) "Asia/Singapore" , 0x052483 }, + { (char*) "Asia/Srednekolymsk" , 0x052620 }, + { (char*) "Asia/Taipei" , 0x052AF4 }, + { (char*) "Asia/Tashkent" , 0x052DF9 }, + { (char*) "Asia/Tbilisi" , 0x053057 }, + { (char*) "Asia/Tehran" , 0x053452 }, + { (char*) "Asia/Tel_Aviv" , 0x05393E }, + { (char*) "Asia/Thimbu" , 0x05429E }, + { (char*) "Asia/Thimphu" , 0x054367 }, + { (char*) "Asia/Tokyo" , 0x054430 }, + { (char*) "Asia/Tomsk" , 0x054571 }, + { (char*) "Asia/Ujung_Pandang" , 0x054A42 }, + { (char*) "Asia/Ulaanbaatar" , 0x054B4C }, + { (char*) "Asia/Ulan_Bator" , 0x054ED5 }, + { (char*) "Asia/Urumqi" , 0x05524E }, + { (char*) "Asia/Ust-Nera" , 0x0552FE }, + { (char*) "Asia/Vientiane" , 0x0557F4 }, + { (char*) "Asia/Vladivostok" , 0x05592D }, + { (char*) "Asia/Yakutsk" , 0x055DF6 }, + { (char*) "Asia/Yangon" , 0x0562BE }, + { (char*) "Asia/Yekaterinburg" , 0x0563C8 }, + { (char*) "Asia/Yerevan" , 0x0568AF }, + { (char*) "Atlantic/Azores" , 0x056D2C }, + { (char*) "Atlantic/Bermuda" , 0x057AB0 }, + { (char*) "Atlantic/Canary" , 0x058418 }, + { (char*) "Atlantic/Cape_Verde" , 0x058B9B }, + { (char*) "Atlantic/Faeroe" , 0x058CA7 }, + { (char*) "Atlantic/Faroe" , 0x0593CA }, + { (char*) "Atlantic/Jan_Mayen" , 0x059AED }, + { (char*) "Atlantic/Madeira" , 0x05A3F3 }, + { (char*) "Atlantic/Reykjavik" , 0x05B13F }, + { (char*) "Atlantic/South_Georgia" , 0x05B5D5 }, + { (char*) "Atlantic/St_Helena" , 0x05B677 }, + { (char*) "Atlantic/Stanley" , 0x05B739 }, + { (char*) "Australia/ACT" , 0x05BBF5 }, + { (char*) "Australia/Adelaide" , 0x05C48F }, + { (char*) "Australia/Brisbane" , 0x05CD4A }, + { (char*) "Australia/Broken_Hill" , 0x05CF10 }, + { (char*) "Australia/Canberra" , 0x05D7ED }, + { (char*) "Australia/Currie" , 0x05E087 }, + { (char*) "Australia/Darwin" , 0x05E9C9 }, + { (char*) "Australia/Eucla" , 0x05EB2C }, + { (char*) "Australia/Hobart" , 0x05ED19 }, + { (char*) "Australia/LHI" , 0x05F663 }, + { (char*) "Australia/Lindeman" , 0x05FDA5 }, + { (char*) "Australia/Lord_Howe" , 0x05FFAB }, + { (char*) "Australia/Melbourne" , 0x0606FD }, + { (char*) "Australia/North" , 0x060F9F }, + { (char*) "Australia/NSW" , 0x0610F0 }, + { (char*) "Australia/Perth" , 0x06198A }, + { (char*) "Australia/Queensland" , 0x061B72 }, + { (char*) "Australia/South" , 0x061D21 }, + { (char*) "Australia/Sydney" , 0x0625CD }, + { (char*) "Australia/Tasmania" , 0x062E83 }, + { (char*) "Australia/Victoria" , 0x0637C5 }, + { (char*) "Australia/West" , 0x06405F }, + { (char*) "Australia/Yancowinna" , 0x064229 }, + { (char*) "Brazil/Acre" , 0x064AEA }, + { (char*) "Brazil/DeNoronha" , 0x064D5C }, + { (char*) "Brazil/East" , 0x065026 }, + { (char*) "Brazil/West" , 0x0655C8 }, + { (char*) "Canada/Atlantic" , 0x065822 }, + { (char*) "Canada/Central" , 0x06658E }, + { (char*) "Canada/Eastern" , 0x066FA0 }, + { (char*) "Canada/Mountain" , 0x067D52 }, + { (char*) "Canada/Newfoundland" , 0x06854C }, + { (char*) "Canada/Pacific" , 0x06939F }, + { (char*) "Canada/Saskatchewan" , 0x069DC9 }, + { (char*) "Canada/Yukon" , 0x06A1A9 }, + { (char*) "CET" , 0x06A803 }, + { (char*) "Chile/Continental" , 0x06B384 }, + { (char*) "Chile/EasterIsland" , 0x06BD63 }, + { (char*) "CST6CDT" , 0x06C61A }, + { (char*) "Cuba" , 0x06CEEE }, + { (char*) "EET" , 0x06D86A }, + { (char*) "Egypt" , 0x06E14C }, + { (char*) "Eire" , 0x06EAB7 }, + { (char*) "EST" , 0x06F867 }, + { (char*) "EST5EDT" , 0x06F929 }, + { (char*) "Etc/GMT" , 0x0701FD }, + { (char*) "Etc/GMT+0" , 0x07027B }, + { (char*) "Etc/GMT+1" , 0x0702F9 }, + { (char*) "Etc/GMT+10" , 0x070379 }, + { (char*) "Etc/GMT+11" , 0x0703FA }, + { (char*) "Etc/GMT+12" , 0x07047B }, + { (char*) "Etc/GMT+2" , 0x0704FC }, + { (char*) "Etc/GMT+3" , 0x07057C }, + { (char*) "Etc/GMT+4" , 0x0705FC }, + { (char*) "Etc/GMT+5" , 0x07067C }, + { (char*) "Etc/GMT+6" , 0x0706FC }, + { (char*) "Etc/GMT+7" , 0x07077C }, + { (char*) "Etc/GMT+8" , 0x0707FC }, + { (char*) "Etc/GMT+9" , 0x07087C }, + { (char*) "Etc/GMT-0" , 0x0708FC }, + { (char*) "Etc/GMT-1" , 0x07097A }, + { (char*) "Etc/GMT-10" , 0x0709FB }, + { (char*) "Etc/GMT-11" , 0x070A7D }, + { (char*) "Etc/GMT-12" , 0x070AFF }, + { (char*) "Etc/GMT-13" , 0x070B81 }, + { (char*) "Etc/GMT-14" , 0x070C03 }, + { (char*) "Etc/GMT-2" , 0x070C85 }, + { (char*) "Etc/GMT-3" , 0x070D06 }, + { (char*) "Etc/GMT-4" , 0x070D87 }, + { (char*) "Etc/GMT-5" , 0x070E08 }, + { (char*) "Etc/GMT-6" , 0x070E89 }, + { (char*) "Etc/GMT-7" , 0x070F0A }, + { (char*) "Etc/GMT-8" , 0x070F8B }, + { (char*) "Etc/GMT-9" , 0x07100C }, + { (char*) "Etc/GMT0" , 0x07108D }, + { (char*) "Etc/Greenwich" , 0x07110B }, + { (char*) "Etc/UCT" , 0x071189 }, + { (char*) "Etc/Universal" , 0x071207 }, + { (char*) "Etc/UTC" , 0x071285 }, + { (char*) "Etc/Zulu" , 0x071303 }, + { (char*) "Europe/Amsterdam" , 0x071381 }, + { (char*) "Europe/Andorra" , 0x071EEB }, + { (char*) "Europe/Astrakhan" , 0x0725C5 }, + { (char*) "Europe/Athens" , 0x072A62 }, + { (char*) "Europe/Belfast" , 0x073344 }, + { (char*) "Europe/Belgrade" , 0x0741A0 }, + { (char*) "Europe/Berlin" , 0x07492C }, + { (char*) "Europe/Bratislava" , 0x075241 }, + { (char*) "Europe/Brussels" , 0x075B4A }, + { (char*) "Europe/Bucharest" , 0x0766CB }, + { (char*) "Europe/Budapest" , 0x076F5F }, + { (char*) "Europe/Busingen" , 0x0778AB }, + { (char*) "Europe/Chisinau" , 0x078034 }, + { (char*) "Europe/Copenhagen" , 0x0789B8 }, + { (char*) "Europe/Dublin" , 0x07921D }, + { (char*) "Europe/Gibraltar" , 0x079FCD }, + { (char*) "Europe/Guernsey" , 0x07ABD5 }, + { (char*) "Europe/Helsinki" , 0x07BA75 }, + { (char*) "Europe/Isle_of_Man" , 0x07C1ED }, + { (char*) "Europe/Istanbul" , 0x07D039 }, + { (char*) "Europe/Jersey" , 0x07D7D2 }, + { (char*) "Europe/Kaliningrad" , 0x07E672 }, + { (char*) "Europe/Kiev" , 0x07EC67 }, + { (char*) "Europe/Kirov" , 0x07F4BB }, + { (char*) "Europe/Kyiv" , 0x07F976 }, + { (char*) "Europe/Lisbon" , 0x0801D9 }, + { (char*) "Europe/Ljubljana" , 0x080FBF }, + { (char*) "Europe/London" , 0x08174B }, + { (char*) "Europe/Luxembourg" , 0x0825A7 }, + { (char*) "Europe/Madrid" , 0x083135 }, + { (char*) "Europe/Malta" , 0x083B87 }, + { (char*) "Europe/Mariehamn" , 0x0845CF }, + { (char*) "Europe/Minsk" , 0x084D47 }, + { (char*) "Europe/Monaco" , 0x08526E }, + { (char*) "Europe/Moscow" , 0x085DFA }, + { (char*) "Europe/Nicosia" , 0x086419 }, + { (char*) "Europe/Oslo" , 0x086BF7 }, + { (char*) "Europe/Paris" , 0x0874B7 }, + { (char*) "Europe/Podgorica" , 0x088055 }, + { (char*) "Europe/Prague" , 0x0887E1 }, + { (char*) "Europe/Riga" , 0x0890EA }, + { (char*) "Europe/Rome" , 0x08998C }, + { (char*) "Europe/Samara" , 0x08A3E9 }, + { (char*) "Europe/San_Marino" , 0x08A8BF }, + { (char*) "Europe/Sarajevo" , 0x08B31C }, + { (char*) "Europe/Saratov" , 0x08BAA8 }, + { (char*) "Europe/Simferopol" , 0x08BF55 }, + { (char*) "Europe/Skopje" , 0x08C524 }, + { (char*) "Europe/Sofia" , 0x08CCB0 }, + { (char*) "Europe/Stockholm" , 0x08D4D9 }, + { (char*) "Europe/Tallinn" , 0x08DC5A }, + { (char*) "Europe/Tirane" , 0x08E4CA }, + { (char*) "Europe/Tiraspol" , 0x08ECFA }, + { (char*) "Europe/Ulyanovsk" , 0x08F67E }, + { (char*) "Europe/Uzhgorod" , 0x08FB81 }, + { (char*) "Europe/Vaduz" , 0x0903D5 }, + { (char*) "Europe/Vatican" , 0x090B41 }, + { (char*) "Europe/Vienna" , 0x09159E }, + { (char*) "Europe/Vilnius" , 0x091E42 }, + { (char*) "Europe/Volgograd" , 0x0926C0 }, + { (char*) "Europe/Warsaw" , 0x092B87 }, + { (char*) "Europe/Zagreb" , 0x0935F1 }, + { (char*) "Europe/Zaporozhye" , 0x093D7D }, + { (char*) "Europe/Zurich" , 0x0945D1 }, + { (char*) "Factory" , 0x094D52 }, + { (char*) "GB" , 0x094DD2 }, + { (char*) "GB-Eire" , 0x095C2E }, + { (char*) "GMT" , 0x096A8A }, + { (char*) "GMT+0" , 0x096B08 }, + { (char*) "GMT-0" , 0x096B86 }, + { (char*) "GMT0" , 0x096C04 }, + { (char*) "Greenwich" , 0x096C82 }, + { (char*) "Hongkong" , 0x096D00 }, + { (char*) "HST" , 0x0971DD }, + { (char*) "Iceland" , 0x097332 }, + { (char*) "Indian/Antananarivo" , 0x0973D2 }, + { (char*) "Indian/Chagos" , 0x0974B9 }, + { (char*) "Indian/Christmas" , 0x09757E }, + { (char*) "Indian/Cocos" , 0x097621 }, + { (char*) "Indian/Comoro" , 0x0976CD }, + { (char*) "Indian/Kerguelen" , 0x09776E }, + { (char*) "Indian/Mahe" , 0x097811 }, + { (char*) "Indian/Maldives" , 0x0978B4 }, + { (char*) "Indian/Mauritius" , 0x097979 }, + { (char*) "Indian/Mayotte" , 0x097A68 }, + { (char*) "Indian/Reunion" , 0x097B09 }, + { (char*) "Iran" , 0x097BAC }, + { (char*) "Israel" , 0x098098 }, + { (char*) "Jamaica" , 0x0989F8 }, + { (char*) "Japan" , 0x098BE6 }, + { (char*) "Kwajalein" , 0x098D27 }, + { (char*) "Libya" , 0x098E61 }, + { (char*) "MET" , 0x0990DE }, + { (char*) "Mexico/BajaNorte" , 0x099C5F }, + { (char*) "Mexico/BajaSur" , 0x09A7C5 }, + { (char*) "Mexico/General" , 0x09ABF5 }, + { (char*) "MST" , 0x09B0C7 }, + { (char*) "MST7MDT" , 0x09B23B }, + { (char*) "Navajo" , 0x09BB0F }, + { (char*) "NZ" , 0x09C4B7 }, + { (char*) "NZ-CHAT" , 0x09CE48 }, + { (char*) "Pacific/Apia" , 0x09D65A }, + { (char*) "Pacific/Auckland" , 0x09D8BC }, + { (char*) "Pacific/Bougainville" , 0x09E260 }, + { (char*) "Pacific/Chatham" , 0x09E376 }, + { (char*) "Pacific/Chuuk" , 0x09EB97 }, + { (char*) "Pacific/Easter" , 0x09ECB1 }, + { (char*) "Pacific/Efate" , 0x09F575 }, + { (char*) "Pacific/Enderbury" , 0x09F78D }, + { (char*) "Pacific/Fakaofo" , 0x09F875 }, + { (char*) "Pacific/Fiji" , 0x09F93B }, + { (char*) "Pacific/Funafuti" , 0x09FB7B }, + { (char*) "Pacific/Galapagos" , 0x09FC1F }, + { (char*) "Pacific/Gambier" , 0x09FD1C }, + { (char*) "Pacific/Guadalcanal" , 0x09FDCD }, + { (char*) "Pacific/Guam" , 0x09FE71 }, + { (char*) "Pacific/Honolulu" , 0x0A006B }, + { (char*) "Pacific/Johnston" , 0x0A01C6 }, + { (char*) "Pacific/Kanton" , 0x0A031B }, + { (char*) "Pacific/Kiritimati" , 0x0A0412 }, + { (char*) "Pacific/Kosrae" , 0x0A050A }, + { (char*) "Pacific/Kwajalein" , 0x0A066D }, + { (char*) "Pacific/Majuro" , 0x0A07B0 }, + { (char*) "Pacific/Marquesas" , 0x0A08FC }, + { (char*) "Pacific/Midway" , 0x0A09B8 }, + { (char*) "Pacific/Nauru" , 0x0A0AAB }, + { (char*) "Pacific/Niue" , 0x0A0BA5 }, + { (char*) "Pacific/Norfolk" , 0x0A0C6E }, + { (char*) "Pacific/Noumea" , 0x0A0FDC }, + { (char*) "Pacific/Pago_Pago" , 0x0A110A }, + { (char*) "Pacific/Palau" , 0x0A11C5 }, + { (char*) "Pacific/Pitcairn" , 0x0A1277 }, + { (char*) "Pacific/Pohnpei" , 0x0A133F }, + { (char*) "Pacific/Ponape" , 0x0A147A }, + { (char*) "Pacific/Port_Moresby" , 0x0A151E }, + { (char*) "Pacific/Rarotonga" , 0x0A15EE }, + { (char*) "Pacific/Saipan" , 0x0A1847 }, + { (char*) "Pacific/Samoa" , 0x0A1A33 }, + { (char*) "Pacific/Tahiti" , 0x0A1AEE }, + { (char*) "Pacific/Tarawa" , 0x0A1BA0 }, + { (char*) "Pacific/Tongatapu" , 0x0A1C53 }, + { (char*) "Pacific/Truk" , 0x0A1DC5 }, + { (char*) "Pacific/Wake" , 0x0A1E7D }, + { (char*) "Pacific/Wallis" , 0x0A1F2C }, + { (char*) "Pacific/Yap" , 0x0A1FD0 }, + { (char*) "Poland" , 0x0A2088 }, + { (char*) "Portugal" , 0x0A2AF2 }, + { (char*) "PRC" , 0x0A38C5 }, + { (char*) "PST8PDT" , 0x0A3B02 }, + { (char*) "ROC" , 0x0A43D6 }, + { (char*) "ROK" , 0x0A46DB }, + { (char*) "Singapore" , 0x0A4950 }, + { (char*) "Turkey" , 0x0A4AED }, + { (char*) "UCT" , 0x0A5286 }, + { (char*) "Universal" , 0x0A5304 }, + { (char*) "US/Alaska" , 0x0A5382 }, + { (char*) "US/Aleutian" , 0x0A5CD1 }, + { (char*) "US/Arizona" , 0x0A6611 }, + { (char*) "US/Central" , 0x0A6785 }, + { (char*) "US/East-Indiana" , 0x0A7599 }, + { (char*) "US/Eastern" , 0x0A7C37 }, + { (char*) "US/Hawaii" , 0x0A8A23 }, + { (char*) "US/Indiana-Starke" , 0x0A8B78 }, + { (char*) "US/Michigan" , 0x0A9510 }, + { (char*) "US/Mountain" , 0x0A9DD2 }, + { (char*) "US/Pacific" , 0x0AA77A }, + { (char*) "US/Samoa" , 0x0AB2AA }, + { (char*) "UTC" , 0x0AB365 }, + { (char*) "W-SU" , 0x0AB3E3 }, + { (char*) "WET" , 0x0AB9EE }, + { (char*) "Zulu" , 0x0AC7C1 }, }; -const unsigned char timelib_timezone_db_data_builtin[711303] = { +const unsigned char timelib_timezone_db_data_builtin[706623] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -26642,8 +26595,8 @@ 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x18, 0xFF, 0xFF, 0x81, 0x70, 0x01, 0x1D, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x41, 0x48, -0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x53, 0x54, 0x31, +0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x53, 0x54, 0x31, 0x30, 0x48, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD8, 0x7D, 0xE0, 0x00, 0x05, 0x19, 0x72, 0x00, 0x00, 0x00, 0x1A, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, @@ -26795,8 +26748,8 @@ 0x1A, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x1E, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x23, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x41, 0x48, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, -0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, +0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xE6, 0xBD, 0x8D, 0x00, 0x2D, 0xED, 0xB4, 0x00, 0x00, 0x00, 0x13, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, @@ -28101,8 +28054,8 @@ 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x18, 0xFF, 0xFF, 0x81, 0x70, 0x01, 0x1D, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x41, 0x48, -0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x53, 0x54, 0x31, +0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x53, 0x54, 0x31, 0x30, 0x48, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -28492,14 +28445,14 @@ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0x98, 0x58, 0x55, 0x70, 0x2A, 0x03, 0x73, 0x50, 0x2B, 0x74, 0x89, 0x40, 0x01, 0x03, 0x02, 0x03, +0x98, 0x58, 0x55, 0x70, 0x2A, 0x02, 0x21, 0xD0, 0x2B, 0x74, 0x89, 0x40, 0x01, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xBA, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x9C, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0x98, 0x58, 0x55, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x73, 0x50, 0x00, 0x00, 0x00, 0x00, +0x98, 0x58, 0x55, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x21, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x74, 0x89, 0x40, 0x01, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xBA, 0x90, 0x00, 0x00, 0xFF, 0xFF, 0xBA, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x35, 0x00, @@ -33264,7 +33217,7 @@ /* America/Inuvik */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xE0, 0x06, 0x4E, 0x80, +0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xE0, 0x06, 0x4E, 0x80, 0x04, 0x61, 0x27, 0xA0, 0x05, 0x51, 0x0A, 0x90, 0x06, 0x41, 0x09, 0xA0, 0x07, 0x30, 0xEC, 0x90, 0x08, 0x20, 0xEB, 0xA0, 0x09, 0x10, 0xCE, 0x90, 0x0A, 0x00, 0xCD, 0xA0, 0x0A, 0xF0, 0xB0, 0x90, 0x0B, 0xE0, 0xAF, 0xA0, 0x0C, 0xD9, 0xCD, 0x10, 0x0D, 0xC0, 0x91, 0xA0, 0x0E, 0xB9, 0xAF, 0x10, @@ -33292,108 +33245,89 @@ 0x5E, 0x64, 0xB4, 0x10, 0x5F, 0x9E, 0x6B, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x61, 0x87, 0x87, 0x80, 0x62, 0x2D, 0xB2, 0x90, 0x63, 0x67, 0x69, 0x80, 0x64, 0x0D, 0x94, 0x90, 0x65, 0x47, 0x4B, 0x80, 0x65, 0xED, 0x76, 0x90, 0x67, 0x27, 0x2D, 0x80, 0x67, 0xCD, 0x58, 0x90, 0x69, 0x07, 0x0F, 0x80, -0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 0x6B, 0x96, 0x57, 0x10, 0x6C, 0xD0, 0x0E, 0x00, -0x6D, 0x76, 0x39, 0x10, 0x6E, 0xAF, 0xF0, 0x00, 0x6F, 0x56, 0x1B, 0x10, 0x70, 0x8F, 0xD2, 0x00, -0x71, 0x35, 0xFD, 0x10, 0x72, 0x6F, 0xB4, 0x00, 0x73, 0x15, 0xDF, 0x10, 0x74, 0x4F, 0x96, 0x00, -0x74, 0xFE, 0xFB, 0x90, 0x76, 0x38, 0xB2, 0x80, 0x76, 0xDE, 0xDD, 0x90, 0x78, 0x18, 0x94, 0x80, -0x78, 0xBE, 0xBF, 0x90, 0x79, 0xF8, 0x76, 0x80, 0x7A, 0x9E, 0xA1, 0x90, 0x7B, 0xD8, 0x58, 0x80, -0x7C, 0x7E, 0x83, 0x90, 0x7D, 0xB8, 0x3A, 0x80, 0x7E, 0x5E, 0x65, 0x90, 0x7F, 0x98, 0x1C, 0x80, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, +0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, -0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, -0xA0, 0x01, 0x10, 0x2D, 0x30, 0x30, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, -0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, +0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, +0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x2D, 0x30, 0x30, 0x00, 0x50, +0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x43, +0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x06, 0x4E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, -0x61, 0x27, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, -0x41, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, -0x20, 0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, -0x00, 0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xE0, 0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0D, -0xC0, 0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, -0xA9, 0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, -0x89, 0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, -0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, -0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, -0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, -0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, -0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, -0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, -0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, -0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, -0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, -0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, -0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, -0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, -0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, -0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, -0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, -0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, -0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, -0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, -0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, -0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, -0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, -0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, -0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, -0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, -0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, -0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, -0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, -0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, -0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, -0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, -0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, -0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, -0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, -0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, -0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6B, -0x96, 0x57, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x76, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x56, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, -0x35, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, -0x15, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, -0xFE, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xB2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x76, -0xDE, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, -0xBE, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x76, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7A, -0x9E, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x58, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x7E, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x3A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x5E, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x1C, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x06, 0x4E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x27, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x41, 0x09, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xEB, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xCD, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xAF, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x91, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xAE, 0x20, 0x00, +0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x90, 0x20, 0x00, +0x00, 0x00, 0x00, 0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, +0x00, 0x00, 0x00, 0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, +0x00, 0x00, 0x00, 0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, +0x00, 0x00, 0x00, 0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, +0x00, 0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, +0x00, 0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, +0x00, 0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, +0x00, 0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, +0x00, 0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, +0x00, 0x00, 0x00, 0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, +0x00, 0x00, 0x00, 0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, +0x00, 0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, +0x00, 0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, +0x00, 0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, +0x00, 0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, +0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, +0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, +0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, +0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, +0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, +0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, +0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, +0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, +0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, +0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, -0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x2D, 0x30, -0x30, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, -0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, -0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xF1, 0x9F, 0x5C, 0x00, 0x46, -0x9F, 0x6D, 0x00, 0x00, 0x00, 0x14, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D, -0x20, 0x4E, 0x54, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, +0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, +0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, +0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x2D, 0x30, 0x30, 0x00, 0x50, 0x44, +0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x43, 0x53, +0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x0A, 0x00, 0xF1, 0x9F, 0x5C, 0x00, 0x46, 0x9F, 0x6D, +0x00, 0x00, 0x00, 0x0F, 0x43, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x4E, 0x54, 0x20, 0x28, 0x77, 0x65, +0x73, 0x74, 0x29, /* America/Iqaluit */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -33783,7 +33717,7 @@ 0x18, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x1C, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x21, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x59, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xE2, 0x4A, 0x72, 0x00, 0x45, 0x8C, 0xCB, 0x00, 0x00, 0x00, 0x14, 0x41, 0x6C, 0x61, @@ -35418,7 +35352,7 @@ 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x14, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, -0x41, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xDD, 0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x17, 0x41, 0x6C, 0x61, 0x73, 0x6B, @@ -36971,7 +36905,7 @@ 0xFF, 0x8F, 0x80, 0x01, 0x1C, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x21, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xEB, 0xBF, 0xFF, 0x00, 0x16, 0x44, 0xA1, 0x00, 0x00, 0x00, 0x0D, 0x41, 0x6C, 0x61, 0x73, 0x6B, @@ -38243,8 +38177,8 @@ /* America/Rainy_River */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x01, 0xFB, 0xE0, 0x9B, 0xC3, 0xBA, 0x50, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xC2, 0xA0, 0x3B, 0x80, 0xC3, 0x4F, 0x84, 0xF0, 0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD3, 0x88, 0x68, 0x00, 0xD4, 0x53, 0x60, 0xF0, 0xD5, 0x55, 0xD5, 0x00, @@ -38285,144 +38219,125 @@ 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, -0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, -0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, -0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, -0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, -0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, -0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, -0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, +0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, -0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, -0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, -0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, -0xFF, 0xFF, 0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, -0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xC2, 0xA0, 0x3B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, -0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x88, 0x68, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD4, 0x53, 0x60, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x07, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xDB, 0xC8, 0x5C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE5, 0x29, 0x18, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xE7, 0x12, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xE8, 0xF2, 0x16, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEA, 0xD1, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEE, 0x91, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xF4, 0x31, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xFA, 0x08, 0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xEF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x0B, 0x80, 0x00, 0x00, -0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xED, 0x80, 0x00, 0x00, -0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xCF, 0x80, 0x00, 0x00, -0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xB1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x93, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x75, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x92, 0x00, 0x00, 0x00, -0x00, 0x00, 0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x74, 0x00, 0x00, 0x00, -0x00, 0x00, 0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x56, 0x00, 0x00, 0x00, -0x00, 0x00, 0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x38, 0x00, 0x00, 0x00, -0x00, 0x00, 0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x1A, 0x00, 0x00, 0x00, -0x00, 0x00, 0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xFC, 0x00, 0x00, 0x00, -0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x18, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xFA, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xDC, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x0F, 0x00, 0x00, 0x00, -0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xF1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xD3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xB5, 0x00, 0x00, 0x00, -0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xD1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xB3, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x95, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x77, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x59, 0x80, 0x00, 0x00, -0x00, 0x00, 0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x76, 0x00, 0x00, 0x00, -0x00, 0x00, 0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x58, 0x00, 0x00, 0x00, -0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x3A, 0x00, 0x00, 0x00, -0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x1C, 0x00, 0x00, 0x00, -0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xFE, 0x00, 0x00, 0x00, -0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xFC, 0x80, 0x00, 0x00, -0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xDE, 0x80, 0x00, 0x00, -0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, -0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, -0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, -0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, -0x00, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, -0x00, 0x00, 0x4C, 0xD6, 0x4E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, -0x00, 0x00, 0x4E, 0xB6, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, -0x00, 0x00, 0x50, 0x96, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, -0x00, 0x00, 0x52, 0x75, 0xF4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, -0x00, 0x00, 0x54, 0x55, 0xD6, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, -0x00, 0x00, 0x56, 0x35, 0xB8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, -0x00, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, -0x00, 0x00, 0x61, 0x87, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, -0x00, 0x00, 0x63, 0x67, 0x5B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, -0x00, 0x00, 0x65, 0x47, 0x3D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, -0x00, 0x00, 0x67, 0x27, 0x1F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, -0x00, 0x00, 0x69, 0x07, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, -0x00, 0x00, 0x6A, 0xE6, 0xE3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x49, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6C, 0xCF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x2B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x70, 0x8F, 0xC3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xEF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xD1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xED, 0x80, 0x00, 0x00, -0x00, 0x00, 0x76, 0x38, 0xA4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xCF, 0x80, 0x00, 0x00, -0x00, 0x00, 0x78, 0x18, 0x86, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xB1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x79, 0xF8, 0x68, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x93, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7B, 0xD8, 0x4A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x75, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7D, 0xB8, 0x2C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x57, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, +0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, +0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, +0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, +0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, +0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xC2, 0xA0, 0x3B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x88, 0x68, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD4, 0x53, 0x60, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xDB, 0xC8, 0x5C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE5, 0x29, 0x18, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xE7, 0x12, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xE8, 0xF2, 0x16, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEA, 0xD1, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEE, 0x91, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xF4, 0x31, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0x08, 0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xED, 0x80, 0x00, 0x00, 0x00, 0x00, +0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xCF, 0x80, 0x00, 0x00, 0x00, 0x00, +0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x75, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, +0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, +0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, +0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xFA, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xDC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, +0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, +0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xD1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xB3, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x95, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x77, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x59, 0x80, 0x00, 0x00, 0x00, 0x00, +0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, +0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, +0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, +0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, +0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x2D, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x0D, 0x4F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4A, 0xED, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4C, 0xD6, 0x4E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4E, 0xB6, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x50, 0x96, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, +0x52, 0x75, 0xF4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, +0x54, 0x55, 0xD6, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, +0x56, 0x35, 0xB8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0x1E, 0xD4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x59, 0xFE, 0xB6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5B, 0xDE, 0x98, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5D, 0xBE, 0x7A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5F, 0x9E, 0x5C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x61, 0x87, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, 0x00, 0x00, +0x63, 0x67, 0x5B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, +0x65, 0x47, 0x3D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, +0x67, 0x27, 0x1F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, +0x69, 0x07, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, +0x6A, 0xE6, 0xE3, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, -0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, -0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, -0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0x43, 0x53, 0x54, -0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, -0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, +0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, +0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, +0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, +0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, /* America/Rankin_Inlet */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -39859,8 +39774,8 @@ 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x14, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x18, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x59, -0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0A, +0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xE0, 0x92, 0xC6, 0x00, 0x44, 0x34, 0x2D, 0x00, 0x00, 0x00, 0x13, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x2D, 0x20, 0x53, 0x69, @@ -41267,8 +41182,8 @@ /* America/Winnipeg */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x01, 0xFB, 0xE0, 0x9B, 0xC3, 0xBA, 0x50, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xC2, 0xA0, 0x3B, 0x80, 0xC3, 0x4F, 0x84, 0xF0, 0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD3, 0x88, 0x68, 0x00, 0xD4, 0x53, 0x60, 0xF0, 0xD5, 0x55, 0xD5, 0x00, @@ -41309,145 +41224,127 @@ 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, -0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, -0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, -0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, -0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, -0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, -0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, -0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, +0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, -0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, -0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, -0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, -0xFF, 0xFF, 0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, -0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xC2, 0xA0, 0x3B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, -0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x88, 0x68, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD4, 0x53, 0x60, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x07, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xDB, 0xC8, 0x5C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE5, 0x29, 0x18, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xE7, 0x12, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xE8, 0xF2, 0x16, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEA, 0xD1, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEE, 0x91, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xF4, 0x31, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xFA, 0x08, 0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xEF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x0B, 0x80, 0x00, 0x00, -0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xED, 0x80, 0x00, 0x00, -0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xCF, 0x80, 0x00, 0x00, -0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xB1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x93, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x75, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x92, 0x00, 0x00, 0x00, -0x00, 0x00, 0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x74, 0x00, 0x00, 0x00, -0x00, 0x00, 0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x56, 0x00, 0x00, 0x00, -0x00, 0x00, 0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x38, 0x00, 0x00, 0x00, -0x00, 0x00, 0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x1A, 0x00, 0x00, 0x00, -0x00, 0x00, 0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xFC, 0x00, 0x00, 0x00, -0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x18, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xFA, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xDC, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x0F, 0x00, 0x00, 0x00, -0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xF1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xD3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xB5, 0x00, 0x00, 0x00, -0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xD1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xB3, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x95, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x77, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x59, 0x80, 0x00, 0x00, -0x00, 0x00, 0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x76, 0x00, 0x00, 0x00, -0x00, 0x00, 0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x58, 0x00, 0x00, 0x00, -0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x3A, 0x00, 0x00, 0x00, -0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x1C, 0x00, 0x00, 0x00, -0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xFE, 0x00, 0x00, 0x00, -0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xFC, 0x80, 0x00, 0x00, -0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xDE, 0x80, 0x00, 0x00, -0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, -0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, -0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, -0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, -0x00, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, -0x00, 0x00, 0x4C, 0xD6, 0x4E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, -0x00, 0x00, 0x4E, 0xB6, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, -0x00, 0x00, 0x50, 0x96, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, -0x00, 0x00, 0x52, 0x75, 0xF4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, -0x00, 0x00, 0x54, 0x55, 0xD6, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, -0x00, 0x00, 0x56, 0x35, 0xB8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, -0x00, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, -0x00, 0x00, 0x61, 0x87, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, -0x00, 0x00, 0x63, 0x67, 0x5B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, -0x00, 0x00, 0x65, 0x47, 0x3D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, -0x00, 0x00, 0x67, 0x27, 0x1F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, -0x00, 0x00, 0x69, 0x07, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, -0x00, 0x00, 0x6A, 0xE6, 0xE3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x49, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6C, 0xCF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x2B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x70, 0x8F, 0xC3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xEF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xD1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xED, 0x80, 0x00, 0x00, -0x00, 0x00, 0x76, 0x38, 0xA4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xCF, 0x80, 0x00, 0x00, -0x00, 0x00, 0x78, 0x18, 0x86, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xB1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x79, 0xF8, 0x68, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x93, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7B, 0xD8, 0x4A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x75, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7D, 0xB8, 0x2C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x57, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, +0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, +0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, +0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, +0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, +0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xC2, 0xA0, 0x3B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x88, 0x68, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD4, 0x53, 0x60, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xDB, 0xC8, 0x5C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE5, 0x29, 0x18, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xE7, 0x12, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xE8, 0xF2, 0x16, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEA, 0xD1, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEE, 0x91, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xF4, 0x31, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0x08, 0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xED, 0x80, 0x00, 0x00, 0x00, 0x00, +0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xCF, 0x80, 0x00, 0x00, 0x00, 0x00, +0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x75, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, +0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, +0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, +0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xFA, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xDC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, +0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, +0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xD1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xB3, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x95, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x77, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x59, 0x80, 0x00, 0x00, 0x00, 0x00, +0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, +0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, +0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, +0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, +0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x2D, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x0D, 0x4F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4A, 0xED, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4C, 0xD6, 0x4E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4E, 0xB6, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x50, 0x96, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, +0x52, 0x75, 0xF4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, +0x54, 0x55, 0xD6, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, +0x56, 0x35, 0xB8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0x1E, 0xD4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x59, 0xFE, 0xB6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5B, 0xDE, 0x98, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5D, 0xBE, 0x7A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5F, 0x9E, 0x5C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x61, 0x87, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, 0x00, 0x00, +0x63, 0x67, 0x5B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, +0x65, 0x47, 0x3D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, +0x67, 0x27, 0x1F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, +0x69, 0x07, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, +0x6A, 0xE6, 0xE3, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, -0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, -0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, -0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0x43, 0x53, 0x54, -0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, -0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD5, 0x71, 0xED, 0x00, 0x7E, 0x6B, 0x47, 0x00, 0x00, 0x00, 0x1D, -0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x77, 0x65, -0x73, 0x74, 0x29, 0x2C, 0x20, 0x4D, 0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, +0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, +0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, +0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, +0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xD5, 0x71, 0xED, 0x00, 0x7E, 0x6B, 0x47, 0x00, 0x00, +0x00, 0x1E, 0x45, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x4D, 0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61, +0x2C, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x6E, 0x6F, 0x72, 0x74, 0x68, 0x77, 0x65, 0x73, 0x74, 0x29, + /* America/Yakutat */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -41591,8 +41488,8 @@ 0x08, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x0C, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x10, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x14, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x59, 0x57, 0x54, 0x00, 0x59, 0x50, 0x54, 0x00, 0x59, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x44, -0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, +0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xE4, 0x30, 0xC6, 0x00, 0x3D, 0x73, 0x8D, 0x00, 0x00, 0x00, 0x10, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x2D, 0x20, 0x59, 0x61, 0x6B, 0x75, 0x74, 0x61, 0x74, @@ -47228,7 +47125,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x9A, 0x6C, 0x7D, 0xC8, 0xBF, 0x00, 0xCC, 0x48, 0x0D, 0x94, 0x44, 0x38, 0x0E, 0xAD, 0x13, 0xB8, 0x0F, 0x79, 0x73, 0x40, -0x10, 0x28, 0xCA, 0xC0, 0x10, 0xA9, 0xFD, 0xC0, 0x11, 0xAD, 0xBC, 0x48, 0x12, 0x45, 0x4A, 0xB8, +0x10, 0x28, 0xCA, 0xC0, 0x10, 0xA9, 0xFD, 0xC0, 0x11, 0xAC, 0x6A, 0xC8, 0x12, 0x45, 0x4A, 0xB8, 0x13, 0x37, 0xEC, 0xC8, 0x14, 0x2D, 0x15, 0xB8, 0x28, 0x20, 0x76, 0xC8, 0x28, 0xDB, 0x9D, 0xB8, 0x29, 0xCB, 0x9C, 0xC8, 0x2A, 0xBE, 0x22, 0xB8, 0x2B, 0xAC, 0xD0, 0x48, 0x2C, 0x9F, 0x56, 0x38, 0x2D, 0x8E, 0x03, 0xC8, 0x2E, 0x80, 0x89, 0xB8, 0x2F, 0x6F, 0x37, 0x48, 0x30, 0x61, 0xBD, 0x38, @@ -47260,7 +47157,7 @@ 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA9, 0xFD, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, +0x00, 0x00, 0x00, 0x11, 0xAC, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xBE, 0x22, 0xB8, 0x00, @@ -52255,8 +52152,8 @@ /* Canada/Central */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x01, 0xFB, 0xE0, 0x9B, 0xC3, 0xBA, 0x50, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xC2, 0xA0, 0x3B, 0x80, 0xC3, 0x4F, 0x84, 0xF0, 0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD3, 0x88, 0x68, 0x00, 0xD4, 0x53, 0x60, 0xF0, 0xD5, 0x55, 0xD5, 0x00, @@ -52297,144 +52194,125 @@ 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, -0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, -0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, -0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, -0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, -0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, -0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, -0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, +0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, -0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, -0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, -0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, -0xFF, 0xFF, 0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, -0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xC2, 0xA0, 0x3B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, -0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x88, 0x68, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD4, 0x53, 0x60, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x07, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xDB, 0xC8, 0x5C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xE5, 0x29, 0x18, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xE7, 0x12, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xE8, 0xF2, 0x16, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEA, 0xD1, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xEE, 0x91, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xF4, 0x31, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, -0xFF, 0xFF, 0xFA, 0x08, 0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xEF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x0B, 0x80, 0x00, 0x00, -0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xED, 0x80, 0x00, 0x00, -0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xCF, 0x80, 0x00, 0x00, -0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xB1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x93, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x75, 0x80, 0x00, 0x00, -0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x92, 0x00, 0x00, 0x00, -0x00, 0x00, 0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x74, 0x00, 0x00, 0x00, -0x00, 0x00, 0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x56, 0x00, 0x00, 0x00, -0x00, 0x00, 0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x38, 0x00, 0x00, 0x00, -0x00, 0x00, 0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x1A, 0x00, 0x00, 0x00, -0x00, 0x00, 0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xFC, 0x00, 0x00, 0x00, -0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x18, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xFA, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xDC, 0x80, 0x00, 0x00, -0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x0F, 0x00, 0x00, 0x00, -0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xF1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xD3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xB5, 0x00, 0x00, 0x00, -0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xD1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xB3, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x95, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x77, 0x80, 0x00, 0x00, -0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x59, 0x80, 0x00, 0x00, -0x00, 0x00, 0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x76, 0x00, 0x00, 0x00, -0x00, 0x00, 0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x58, 0x00, 0x00, 0x00, -0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x3A, 0x00, 0x00, 0x00, -0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x1C, 0x00, 0x00, 0x00, -0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xFE, 0x00, 0x00, 0x00, -0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xFC, 0x80, 0x00, 0x00, -0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xDE, 0x80, 0x00, 0x00, -0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, -0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, -0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, -0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, -0x00, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, -0x00, 0x00, 0x4C, 0xD6, 0x4E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, -0x00, 0x00, 0x4E, 0xB6, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, -0x00, 0x00, 0x50, 0x96, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, -0x00, 0x00, 0x52, 0x75, 0xF4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, -0x00, 0x00, 0x54, 0x55, 0xD6, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, -0x00, 0x00, 0x56, 0x35, 0xB8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, -0x00, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, -0x00, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, -0x00, 0x00, 0x61, 0x87, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, -0x00, 0x00, 0x63, 0x67, 0x5B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, -0x00, 0x00, 0x65, 0x47, 0x3D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, -0x00, 0x00, 0x67, 0x27, 0x1F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, -0x00, 0x00, 0x69, 0x07, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, -0x00, 0x00, 0x6A, 0xE6, 0xE3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x49, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6C, 0xCF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x2B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x70, 0x8F, 0xC3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xEF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xD1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xED, 0x80, 0x00, 0x00, -0x00, 0x00, 0x76, 0x38, 0xA4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xCF, 0x80, 0x00, 0x00, -0x00, 0x00, 0x78, 0x18, 0x86, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xB1, 0x80, 0x00, 0x00, -0x00, 0x00, 0x79, 0xF8, 0x68, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x93, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7B, 0xD8, 0x4A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x75, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7D, 0xB8, 0x2C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x57, 0x80, 0x00, 0x00, -0x00, 0x00, 0x7F, 0x98, 0x0E, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, +0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, +0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, +0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, +0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, +0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0xE4, 0xB0, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x01, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xC3, 0xBA, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xC2, 0xA0, 0x3B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x88, 0x68, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD4, 0x53, 0x60, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xDB, 0xC8, 0x5C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xE5, 0x29, 0x18, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xE7, 0x12, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xE8, 0xF2, 0x16, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEA, 0xD1, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xEE, 0x91, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xF4, 0x31, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0x08, 0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xED, 0x80, 0x00, 0x00, 0x00, 0x00, +0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xCF, 0x80, 0x00, 0x00, 0x00, 0x00, +0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x75, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, +0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, +0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, +0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, +0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xFA, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xDC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, +0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, +0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xD1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xB3, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x95, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x77, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x59, 0x80, 0x00, 0x00, 0x00, 0x00, +0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, +0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, +0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, +0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, +0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x2D, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x0D, 0x4F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4A, 0xED, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4C, 0xD6, 0x4E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4E, 0xB6, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x5B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x50, 0x96, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, +0x52, 0x75, 0xF4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, +0x54, 0x55, 0xD6, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, +0x56, 0x35, 0xB8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0x1E, 0xD4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x59, 0xFE, 0xB6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5B, 0xDE, 0x98, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5D, 0xBE, 0x7A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5F, 0x9E, 0x5C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x61, 0x87, 0x79, 0x70, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xA4, 0x80, 0x00, 0x00, 0x00, 0x00, +0x63, 0x67, 0x5B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x86, 0x80, 0x00, 0x00, 0x00, 0x00, +0x65, 0x47, 0x3D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, +0x67, 0x27, 0x1F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, +0x69, 0x07, 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, +0x6A, 0xE6, 0xE3, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, -0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, -0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, -0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0x43, 0x53, 0x54, -0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, -0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0xFF, 0xFF, 0xA4, 0xEC, 0x00, 0x00, 0xFF, 0xFF, +0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, +0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, +0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, +0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, /* Canada/Eastern */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -53845,32 +53723,10 @@ /* CST6CDT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, -0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, -0xA2, 0xCB, 0x74, 0x00, 0xA3, 0x83, 0xF7, 0xF0, 0xA4, 0x45, 0xD2, 0x80, 0xA5, 0x63, 0xD9, 0xF0, -0xA6, 0x53, 0xD9, 0x00, 0xA7, 0x15, 0x97, 0x70, 0xA8, 0x33, 0xBB, 0x00, 0xA8, 0xFE, 0xB3, 0xF0, -0xAA, 0x13, 0x9D, 0x00, 0xAA, 0xDE, 0x95, 0xF0, 0xAB, 0xF3, 0x7F, 0x00, 0xAC, 0xBE, 0x77, 0xF0, -0xAD, 0xD3, 0x61, 0x00, 0xAE, 0x9E, 0x59, 0xF0, 0xAF, 0xB3, 0x43, 0x00, 0xB0, 0x7E, 0x3B, 0xF0, -0xB1, 0x9C, 0x5F, 0x80, 0xB2, 0x67, 0x58, 0x70, 0xB3, 0x7C, 0x41, 0x80, 0xB4, 0x47, 0x3A, 0x70, -0xB5, 0x5C, 0x23, 0x80, 0xB6, 0x27, 0x1C, 0x70, 0xB7, 0x3C, 0x05, 0x80, 0xB8, 0x06, 0xFE, 0x70, -0xB9, 0x1B, 0xE7, 0x80, 0xB9, 0xE6, 0xE0, 0x70, 0xBB, 0x05, 0x04, 0x00, 0xBB, 0xC6, 0xC2, 0x70, -0xBC, 0xE4, 0xE6, 0x00, 0xBD, 0xAF, 0xDE, 0xF0, 0xBE, 0xC4, 0xC8, 0x00, 0xBF, 0x8F, 0xC0, 0xF0, -0xC0, 0x5A, 0xD6, 0x00, 0xC1, 0xB0, 0x3C, 0x70, 0xC2, 0x84, 0x8C, 0x00, 0xC3, 0x4F, 0x84, 0xF0, -0xC4, 0x64, 0x6E, 0x00, 0xC5, 0x2F, 0x66, 0xF0, 0xC6, 0x4D, 0x8A, 0x80, 0xC7, 0x0F, 0x48, 0xF0, -0xC8, 0x2D, 0x6C, 0x80, 0xC8, 0xF8, 0x65, 0x70, 0xCA, 0x0D, 0x4E, 0x80, 0xCA, 0xD8, 0x47, 0x70, -0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD3, 0x75, 0xF3, 0x00, -0xD4, 0x40, 0xEB, 0xF0, 0xD5, 0x55, 0xD5, 0x00, 0xD6, 0x20, 0xCD, 0xF0, 0xD7, 0x35, 0xB7, 0x00, -0xD8, 0x00, 0xAF, 0xF0, 0xD9, 0x15, 0x99, 0x00, 0xD9, 0xE0, 0x91, 0xF0, 0xDA, 0xFE, 0xB5, 0x80, -0xDB, 0xC0, 0x73, 0xF0, 0xDC, 0xDE, 0x97, 0x80, 0xDD, 0xA9, 0x90, 0x70, 0xDE, 0xBE, 0x79, 0x80, -0xDF, 0x89, 0x72, 0x70, 0xE0, 0x9E, 0x5B, 0x80, 0xE1, 0x69, 0x54, 0x70, 0xE2, 0x7E, 0x3D, 0x80, -0xE3, 0x49, 0x36, 0x70, 0xE4, 0x5E, 0x1F, 0x80, 0xE5, 0x57, 0x3C, 0xF0, 0xE6, 0x47, 0x3C, 0x00, -0xE7, 0x37, 0x1E, 0xF0, 0xE8, 0x27, 0x1E, 0x00, 0xE9, 0x17, 0x00, 0xF0, 0xEA, 0x07, 0x00, 0x00, -0xEA, 0xF6, 0xE2, 0xF0, 0xEB, 0xE6, 0xE2, 0x00, 0xEC, 0xD6, 0xC4, 0xF0, 0xED, 0xC6, 0xC4, 0x00, -0xEE, 0xBF, 0xE1, 0x70, 0xEF, 0xAF, 0xE0, 0x80, 0xF0, 0x9F, 0xC3, 0x70, 0xF1, 0x8F, 0xC2, 0x80, -0xF2, 0x7F, 0xA5, 0x70, 0xF3, 0x6F, 0xA4, 0x80, 0xF4, 0x5F, 0x87, 0x70, 0xF5, 0x4F, 0x86, 0x80, -0xF6, 0x3F, 0x69, 0x70, 0xF7, 0x2F, 0x68, 0x80, 0xF8, 0x28, 0x85, 0xF0, 0xF9, 0x0F, 0x4A, 0x80, -0xFA, 0x08, 0x67, 0xF0, 0xFA, 0xF8, 0x67, 0x00, 0xFB, 0xE8, 0x49, 0xF0, 0xFC, 0xD8, 0x49, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x9E, 0xA6, 0x2C, 0x80, +0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, +0xD2, 0x61, 0x09, 0xF0, 0xFA, 0xF8, 0x67, 0x00, 0xFB, 0xE8, 0x49, 0xF0, 0xFC, 0xD8, 0x49, 0x00, 0xFD, 0xC8, 0x2B, 0xF0, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xA8, 0x0D, 0xF0, 0x00, 0x98, 0x0D, 0x00, 0x01, 0x87, 0xEF, 0xF0, 0x02, 0x77, 0xEF, 0x00, 0x03, 0x71, 0x0C, 0x70, 0x04, 0x61, 0x0B, 0x80, 0x05, 0x50, 0xEE, 0x70, 0x06, 0x40, 0xED, 0x80, 0x07, 0x30, 0xD0, 0x70, 0x07, 0x8D, 0x27, 0x80, @@ -53905,77 +53761,24 @@ 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80, -0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70, 0x03, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xAD, 0xD4, 0x00, 0x00, 0xFF, 0xFF, -0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, -0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x14, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, +0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, +0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, -0x5E, 0x03, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x2C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x0E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x9A, 0xDB, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0xCB, 0x74, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xA3, 0x83, 0xF7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x45, 0xD2, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xA5, 0x63, 0xD9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xD9, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xA7, 0x15, 0x97, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xBB, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xA8, 0xFE, 0xB3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x9D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xAA, 0xDE, 0x95, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xAC, 0xBE, 0x77, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x61, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xAE, 0x9E, 0x59, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x43, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xB0, 0x7E, 0x3B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x5F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xB2, 0x67, 0x58, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x41, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xB4, 0x47, 0x3A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x23, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xB6, 0x27, 0x1C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3C, 0x05, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xB8, 0x06, 0xFE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xE7, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xB9, 0xE6, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x05, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xBB, 0xC6, 0xC2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xE6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xBD, 0xAF, 0xDE, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xC8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xBF, 0x8F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x5A, 0xD6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xC1, 0xB0, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x8C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xC3, 0x4F, 0x84, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x6E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xC5, 0x2F, 0x66, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x8A, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xC7, 0x0F, 0x48, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x6C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xC8, 0xF8, 0x65, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x4E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xCA, 0xD8, 0x47, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD3, 0x75, 0xF3, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xEB, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD5, 0x55, 0xD5, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xCD, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD7, 0x35, 0xB7, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xAF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD9, 0x15, 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x91, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xDA, 0xFE, 0xB5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x73, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xDC, 0xDE, 0x97, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x90, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xDE, 0xBE, 0x79, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x72, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xE0, 0x9E, 0x5B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x54, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xE2, 0x7E, 0x3D, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x36, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xE4, 0x5E, 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x3C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xE6, 0x47, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x1E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xE8, 0x27, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x17, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xEA, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xE2, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xEB, 0xE6, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xC4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xED, 0xC6, 0xC4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xE1, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xEF, 0xAF, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xC3, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xF1, 0x8F, 0xC2, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xA5, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xF3, 0x6F, 0xA4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x87, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xF5, 0x4F, 0x86, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x69, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, -0xF7, 0x2F, 0x68, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x85, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xF9, 0x0F, 0x4A, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x67, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xA6, 0x2C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xA0, 0x86, 0x0E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xDB, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x67, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x49, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x49, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x2B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, @@ -54046,27 +53849,18 @@ 0x78, 0xBE, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x68, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x93, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x4A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x75, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x2C, 0x70, 0x00, 0x00, 0x00, 0x00, -0x7E, 0x5E, 0x57, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x0E, 0x70, 0x03, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xAD, 0xD4, 0x00, 0x00, 0xFF, 0xFF, -0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, -0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, -0x01, 0x14, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, +0x7E, 0x5E, 0x57, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x0E, 0x70, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, +0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -54531,7 +54325,7 @@ 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, 0xA6, 0x25, 0x60, 0x20, 0xA7, 0x27, 0xC6, 0x20, 0xA8, 0x2A, 0x2C, 0x20, 0xA8, 0xEB, 0xF8, 0xA0, -0xAA, 0x00, 0xD3, 0xA0, 0xAA, 0xD5, 0x15, 0x20, 0xAB, 0xE9, 0xF0, 0x20, 0xAC, 0xC7, 0x6C, 0x20, +0xAA, 0x00, 0xD3, 0xA0, 0xAA, 0xD5, 0x15, 0x20, 0xAB, 0xE9, 0xF0, 0x20, 0xAC, 0xB4, 0xF7, 0x20, 0xAD, 0xC9, 0xD2, 0x20, 0xAE, 0xA7, 0x4E, 0x20, 0xAF, 0xA0, 0x79, 0xA0, 0xB0, 0x87, 0x30, 0x20, 0xB1, 0x92, 0xD0, 0xA0, 0xB2, 0x70, 0x4C, 0xA0, 0xB3, 0x72, 0xB2, 0xA0, 0xB4, 0x50, 0x2E, 0xA0, 0xB5, 0x49, 0x5A, 0x20, 0xB6, 0x30, 0x10, 0xA0, 0xB7, 0x32, 0x76, 0xA0, 0xB8, 0x0F, 0xF2, 0xA0, @@ -54616,7 +54410,7 @@ 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xB4, 0xF7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, @@ -54762,32 +54556,10 @@ /* EST5EDT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x9E, 0xA6, 0x1E, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, -0xA2, 0x65, 0xE2, 0x70, 0xA3, 0x83, 0xE9, 0xE0, 0xA4, 0x6A, 0xAE, 0x70, 0xA5, 0x35, 0xA7, 0x60, -0xA6, 0x53, 0xCA, 0xF0, 0xA7, 0x15, 0x89, 0x60, 0xA8, 0x33, 0xAC, 0xF0, 0xA8, 0xFE, 0xA5, 0xE0, -0xAA, 0x13, 0x8E, 0xF0, 0xAA, 0xDE, 0x87, 0xE0, 0xAB, 0xF3, 0x70, 0xF0, 0xAC, 0xBE, 0x69, 0xE0, -0xAD, 0xD3, 0x52, 0xF0, 0xAE, 0x9E, 0x4B, 0xE0, 0xAF, 0xB3, 0x34, 0xF0, 0xB0, 0x7E, 0x2D, 0xE0, -0xB1, 0x9C, 0x51, 0x70, 0xB2, 0x67, 0x4A, 0x60, 0xB3, 0x7C, 0x33, 0x70, 0xB4, 0x47, 0x2C, 0x60, -0xB5, 0x5C, 0x15, 0x70, 0xB6, 0x27, 0x0E, 0x60, 0xB7, 0x3B, 0xF7, 0x70, 0xB8, 0x06, 0xF0, 0x60, -0xB9, 0x1B, 0xD9, 0x70, 0xB9, 0xE6, 0xD2, 0x60, 0xBB, 0x04, 0xF5, 0xF0, 0xBB, 0xC6, 0xB4, 0x60, -0xBC, 0xE4, 0xD7, 0xF0, 0xBD, 0xAF, 0xD0, 0xE0, 0xBE, 0xC4, 0xB9, 0xF0, 0xBF, 0x8F, 0xB2, 0xE0, -0xC0, 0xA4, 0x9B, 0xF0, 0xC1, 0x6F, 0x94, 0xE0, 0xC2, 0x84, 0x7D, 0xF0, 0xC3, 0x4F, 0x76, 0xE0, -0xC4, 0x64, 0x5F, 0xF0, 0xC5, 0x2F, 0x58, 0xE0, 0xC6, 0x4D, 0x7C, 0x70, 0xC7, 0x0F, 0x3A, 0xE0, -0xC8, 0x2D, 0x5E, 0x70, 0xC8, 0xF8, 0x57, 0x60, 0xCA, 0x0D, 0x40, 0x70, 0xCA, 0xD8, 0x39, 0x60, -0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xFB, 0xE0, 0xD3, 0x75, 0xE4, 0xF0, -0xD4, 0x40, 0xDD, 0xE0, 0xD5, 0x55, 0xC6, 0xF0, 0xD6, 0x20, 0xBF, 0xE0, 0xD7, 0x35, 0xA8, 0xF0, -0xD8, 0x00, 0xA1, 0xE0, 0xD9, 0x15, 0x8A, 0xF0, 0xD9, 0xE0, 0x83, 0xE0, 0xDA, 0xFE, 0xA7, 0x70, -0xDB, 0xC0, 0x65, 0xE0, 0xDC, 0xDE, 0x89, 0x70, 0xDD, 0xA9, 0x82, 0x60, 0xDE, 0xBE, 0x6B, 0x70, -0xDF, 0x89, 0x64, 0x60, 0xE0, 0x9E, 0x4D, 0x70, 0xE1, 0x69, 0x46, 0x60, 0xE2, 0x7E, 0x2F, 0x70, -0xE3, 0x49, 0x28, 0x60, 0xE4, 0x5E, 0x11, 0x70, 0xE5, 0x57, 0x2E, 0xE0, 0xE6, 0x47, 0x2D, 0xF0, -0xE7, 0x37, 0x10, 0xE0, 0xE8, 0x27, 0x0F, 0xF0, 0xE9, 0x16, 0xF2, 0xE0, 0xEA, 0x06, 0xF1, 0xF0, -0xEA, 0xF6, 0xD4, 0xE0, 0xEB, 0xE6, 0xD3, 0xF0, 0xEC, 0xD6, 0xB6, 0xE0, 0xED, 0xC6, 0xB5, 0xF0, -0xEE, 0xBF, 0xD3, 0x60, 0xEF, 0xAF, 0xD2, 0x70, 0xF0, 0x9F, 0xB5, 0x60, 0xF1, 0x8F, 0xB4, 0x70, -0xF2, 0x7F, 0x97, 0x60, 0xF3, 0x6F, 0x96, 0x70, 0xF4, 0x5F, 0x79, 0x60, 0xF5, 0x4F, 0x78, 0x70, -0xF6, 0x3F, 0x5B, 0x60, 0xF7, 0x2F, 0x5A, 0x70, 0xF8, 0x28, 0x77, 0xE0, 0xF9, 0x0F, 0x3C, 0x70, -0xFA, 0x08, 0x59, 0xE0, 0xFA, 0xF8, 0x58, 0xF0, 0xFB, 0xE8, 0x3B, 0xE0, 0xFC, 0xD8, 0x3A, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x9E, 0xA6, 0x1E, 0x70, +0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, 0xCB, 0x88, 0xF0, 0x70, +0xD2, 0x60, 0xFB, 0xE0, 0xFA, 0xF8, 0x58, 0xF0, 0xFB, 0xE8, 0x3B, 0xE0, 0xFC, 0xD8, 0x3A, 0xF0, 0xFD, 0xC8, 0x1D, 0xE0, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x97, 0xFE, 0xF0, 0x01, 0x87, 0xE1, 0xE0, 0x02, 0x77, 0xE0, 0xF0, 0x03, 0x70, 0xFE, 0x60, 0x04, 0x60, 0xFD, 0x70, 0x05, 0x50, 0xE0, 0x60, 0x06, 0x40, 0xDF, 0x70, 0x07, 0x30, 0xC2, 0x60, 0x07, 0x8D, 0x19, 0x70, @@ -54822,168 +54594,109 @@ 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, -0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x03, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, -0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, -0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, -0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, -0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, -0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, -0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, -0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, -0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, -0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, -0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, -0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, -0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, -0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, -0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, -0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, -0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, -0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, -0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, -0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, -0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, -0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, 0x70, -0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, 0x70, -0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, 0x70, -0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, -0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, -0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, -0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, -0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, -0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, -0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, -0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, -0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, -0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, -0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, -0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, -0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, -0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, -0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, -0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, -0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, -0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, -0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, +0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xA6, 0x1E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, +0xA0, 0x86, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, +0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, +0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, +0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, +0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, +0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, +0x09, 0xAD, 0x94, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, +0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, +0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, +0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, +0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, +0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, +0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, +0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, +0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, +0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, +0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, +0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, +0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, +0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, +0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, +0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, +0x45, 0xF3, 0xA8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x47, 0xD3, 0x8A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x49, 0xB3, 0x6C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x4B, 0x9C, 0x89, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, +0x4D, 0x7C, 0x6B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, 0x00, 0x00, 0x00, 0x00, +0x4F, 0x5C, 0x4D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, +0x51, 0x3C, 0x2F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, +0x53, 0x1C, 0x11, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, +0x54, 0xFB, 0xF3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, +0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, +0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, +0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, +0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, +0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, +0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, +0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, +0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, +0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, +0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, +0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, +0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, +0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, +0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, /* Etc/GMT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -57430,7 +57143,7 @@ 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, 0xA6, 0x25, 0x60, 0x20, 0xA7, 0x27, 0xC6, 0x20, 0xA8, 0x2A, 0x2C, 0x20, 0xA8, 0xEB, 0xF8, 0xA0, -0xAA, 0x00, 0xD3, 0xA0, 0xAA, 0xD5, 0x15, 0x20, 0xAB, 0xE9, 0xF0, 0x20, 0xAC, 0xC7, 0x6C, 0x20, +0xAA, 0x00, 0xD3, 0xA0, 0xAA, 0xD5, 0x15, 0x20, 0xAB, 0xE9, 0xF0, 0x20, 0xAC, 0xB4, 0xF7, 0x20, 0xAD, 0xC9, 0xD2, 0x20, 0xAE, 0xA7, 0x4E, 0x20, 0xAF, 0xA0, 0x79, 0xA0, 0xB0, 0x87, 0x30, 0x20, 0xB1, 0x92, 0xD0, 0xA0, 0xB2, 0x70, 0x4C, 0xA0, 0xB3, 0x72, 0xB2, 0xA0, 0xB4, 0x50, 0x2E, 0xA0, 0xB5, 0x49, 0x5A, 0x20, 0xB6, 0x30, 0x10, 0xA0, 0xB7, 0x32, 0x76, 0xA0, 0xB8, 0x0F, 0xF2, 0xA0, @@ -57515,7 +57228,7 @@ 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xB4, 0xF7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, @@ -65441,7 +65154,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x9A, 0x6C, 0x7D, 0xC8, 0xBF, 0x00, 0xCC, 0x48, 0x0D, 0x94, 0x44, 0x38, 0x0E, 0xAD, 0x13, 0xB8, 0x0F, 0x79, 0x73, 0x40, -0x10, 0x28, 0xCA, 0xC0, 0x10, 0xA9, 0xFD, 0xC0, 0x11, 0xAD, 0xBC, 0x48, 0x12, 0x45, 0x4A, 0xB8, +0x10, 0x28, 0xCA, 0xC0, 0x10, 0xA9, 0xFD, 0xC0, 0x11, 0xAC, 0x6A, 0xC8, 0x12, 0x45, 0x4A, 0xB8, 0x13, 0x37, 0xEC, 0xC8, 0x14, 0x2D, 0x15, 0xB8, 0x28, 0x20, 0x76, 0xC8, 0x28, 0xDB, 0x9D, 0xB8, 0x29, 0xCB, 0x9C, 0xC8, 0x2A, 0xBE, 0x22, 0xB8, 0x2B, 0xAC, 0xD0, 0x48, 0x2C, 0x9F, 0x56, 0x38, 0x2D, 0x8E, 0x03, 0xC8, 0x2E, 0x80, 0x89, 0xB8, 0x2F, 0x6F, 0x37, 0x48, 0x30, 0x61, 0xBD, 0x38, @@ -65473,7 +65186,7 @@ 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA9, 0xFD, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, +0x00, 0x00, 0x00, 0x11, 0xAC, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xBE, 0x22, 0xB8, 0x00, @@ -66340,160 +66053,147 @@ /* MST7MDT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, -0xA2, 0x65, 0xFE, 0x90, 0xA3, 0x84, 0x06, 0x00, 0xA4, 0x45, 0xE0, 0x90, 0xA4, 0x8F, 0xA6, 0x80, -0xCB, 0x89, 0x0C, 0x90, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x18, 0x00, 0xF7, 0x2F, 0x76, 0x90, -0xF8, 0x28, 0x94, 0x00, 0xF9, 0x0F, 0x58, 0x90, 0xFA, 0x08, 0x76, 0x00, 0xFA, 0xF8, 0x75, 0x10, -0xFB, 0xE8, 0x58, 0x00, 0xFC, 0xD8, 0x57, 0x10, 0xFD, 0xC8, 0x3A, 0x00, 0xFE, 0xB8, 0x39, 0x10, -0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x98, 0x1B, 0x10, 0x01, 0x87, 0xFE, 0x00, 0x02, 0x77, 0xFD, 0x10, -0x03, 0x71, 0x1A, 0x80, 0x04, 0x61, 0x19, 0x90, 0x05, 0x50, 0xFC, 0x80, 0x06, 0x40, 0xFB, 0x90, -0x07, 0x30, 0xDE, 0x80, 0x07, 0x8D, 0x35, 0x90, 0x09, 0x10, 0xC0, 0x80, 0x09, 0xAD, 0xB1, 0x10, -0x0A, 0xF0, 0xA2, 0x80, 0x0B, 0xE0, 0xA1, 0x90, 0x0C, 0xD9, 0xBF, 0x00, 0x0D, 0xC0, 0x83, 0x90, -0x0E, 0xB9, 0xA1, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x10, 0x99, 0x83, 0x00, 0x11, 0x89, 0x82, 0x10, -0x12, 0x79, 0x65, 0x00, 0x13, 0x69, 0x64, 0x10, 0x14, 0x59, 0x47, 0x00, 0x15, 0x49, 0x46, 0x10, -0x16, 0x39, 0x29, 0x00, 0x17, 0x29, 0x28, 0x10, 0x18, 0x22, 0x45, 0x80, 0x19, 0x09, 0x0A, 0x10, -0x1A, 0x02, 0x27, 0x80, 0x1A, 0xF2, 0x26, 0x90, 0x1B, 0xE2, 0x09, 0x80, 0x1C, 0xD2, 0x08, 0x90, -0x1D, 0xC1, 0xEB, 0x80, 0x1E, 0xB1, 0xEA, 0x90, 0x1F, 0xA1, 0xCD, 0x80, 0x20, 0x76, 0x1D, 0x10, -0x21, 0x81, 0xAF, 0x80, 0x22, 0x55, 0xFF, 0x10, 0x23, 0x6A, 0xCC, 0x00, 0x24, 0x35, 0xE1, 0x10, -0x25, 0x4A, 0xAE, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x27, 0x2A, 0x90, 0x00, 0x27, 0xFE, 0xDF, 0x90, -0x29, 0x0A, 0x72, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x2A, 0xEA, 0x54, 0x00, 0x2B, 0xBE, 0xA3, 0x90, -0x2C, 0xD3, 0x70, 0x80, 0x2D, 0x9E, 0x85, 0x90, 0x2E, 0xB3, 0x52, 0x80, 0x2F, 0x7E, 0x67, 0x90, -0x30, 0x93, 0x34, 0x80, 0x31, 0x67, 0x84, 0x10, 0x32, 0x73, 0x16, 0x80, 0x33, 0x47, 0x66, 0x10, -0x34, 0x52, 0xF8, 0x80, 0x35, 0x27, 0x48, 0x10, 0x36, 0x32, 0xDA, 0x80, 0x37, 0x07, 0x2A, 0x10, -0x38, 0x1B, 0xF7, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x39, 0xFB, 0xD9, 0x00, 0x3A, 0xC6, 0xEE, 0x10, -0x3B, 0xDB, 0xBB, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x3D, 0xBB, 0x9D, 0x00, 0x3E, 0x8F, 0xEC, 0x90, -0x3F, 0x9B, 0x7F, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x41, 0x84, 0x9B, 0x80, 0x42, 0x4F, 0xB0, 0x90, -0x43, 0x64, 0x7D, 0x80, 0x44, 0x2F, 0x92, 0x90, 0x45, 0x44, 0x5F, 0x80, 0x45, 0xF3, 0xC5, 0x10, -0x47, 0x2D, 0x7C, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x49, 0x0D, 0x5E, 0x00, 0x49, 0xB3, 0x89, 0x10, -0x4A, 0xED, 0x40, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x4C, 0xD6, 0x5C, 0x80, 0x4D, 0x7C, 0x87, 0x90, -0x4E, 0xB6, 0x3E, 0x80, 0x4F, 0x5C, 0x69, 0x90, 0x50, 0x96, 0x20, 0x80, 0x51, 0x3C, 0x4B, 0x90, -0x52, 0x76, 0x02, 0x80, 0x53, 0x1C, 0x2D, 0x90, 0x54, 0x55, 0xE4, 0x80, 0x54, 0xFC, 0x0F, 0x90, -0x56, 0x35, 0xC6, 0x80, 0x56, 0xE5, 0x2C, 0x10, 0x58, 0x1E, 0xE3, 0x00, 0x58, 0xC5, 0x0E, 0x10, -0x59, 0xFE, 0xC5, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x5B, 0xDE, 0xA7, 0x00, 0x5C, 0x84, 0xD2, 0x10, -0x5D, 0xBE, 0x89, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x5F, 0x9E, 0x6B, 0x00, 0x60, 0x4D, 0xD0, 0x90, -0x61, 0x87, 0x87, 0x80, 0x62, 0x2D, 0xB2, 0x90, 0x63, 0x67, 0x69, 0x80, 0x64, 0x0D, 0x94, 0x90, -0x65, 0x47, 0x4B, 0x80, 0x65, 0xED, 0x76, 0x90, 0x67, 0x27, 0x2D, 0x80, 0x67, 0xCD, 0x58, 0x90, -0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 0x6B, 0x96, 0x57, 0x10, -0x6C, 0xD0, 0x0E, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x6E, 0xAF, 0xF0, 0x00, 0x6F, 0x56, 0x1B, 0x10, -0x70, 0x8F, 0xD2, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x72, 0x6F, 0xB4, 0x00, 0x73, 0x15, 0xDF, 0x10, -0x74, 0x4F, 0x96, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x76, 0x38, 0xB2, 0x80, 0x76, 0xDE, 0xDD, 0x90, -0x78, 0x18, 0x94, 0x80, 0x78, 0xBE, 0xBF, 0x90, 0x79, 0xF8, 0x76, 0x80, 0x7A, 0x9E, 0xA1, 0x90, -0x7B, 0xD8, 0x58, 0x80, 0x7C, 0x7E, 0x83, 0x90, 0x7D, 0xB8, 0x3A, 0x80, 0x7E, 0x5E, 0x65, 0x90, -0x7F, 0x98, 0x1C, 0x80, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0xFF, 0xFF, 0x9D, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, -0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, -0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, -0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, -0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x04, 0x0C, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, -0x3A, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, -0x1C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xE9, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, -0xFE, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x45, -0xE0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x8F, 0xA6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, -0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, -0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x76, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, -0x94, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x58, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, -0x76, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x75, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, -0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x57, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, -0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x39, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, -0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, -0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, -0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, -0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8D, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, -0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAD, 0xB1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, -0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, -0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, -0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, -0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, -0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, -0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, -0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, -0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, -0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, -0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, -0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, -0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, -0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, -0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, -0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, -0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, -0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, -0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, -0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, -0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, -0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, -0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, -0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, -0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, -0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, -0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, -0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, -0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, -0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, -0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, -0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, -0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, -0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, -0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, -0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, -0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, -0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, -0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, -0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, -0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, -0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, -0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, -0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, -0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, -0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, -0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, -0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, -0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, -0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, -0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x57, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, -0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, -0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, -0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, -0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, -0xB2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, -0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, -0x76, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, -0x58, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, -0x3A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, -0x1C, 0x80, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0xFF, 0xFF, 0x9D, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, -0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, -0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, -0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x9E, 0xA6, 0x3A, 0x90, +0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xCB, 0x89, 0x0C, 0x90, +0xD2, 0x61, 0x18, 0x00, 0xFA, 0xF8, 0x75, 0x10, 0xFB, 0xE8, 0x58, 0x00, 0xFC, 0xD8, 0x57, 0x10, +0xFD, 0xC8, 0x3A, 0x00, 0xFE, 0xB8, 0x39, 0x10, 0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x98, 0x1B, 0x10, +0x01, 0x87, 0xFE, 0x00, 0x02, 0x77, 0xFD, 0x10, 0x03, 0x71, 0x1A, 0x80, 0x04, 0x61, 0x19, 0x90, +0x05, 0x50, 0xFC, 0x80, 0x06, 0x40, 0xFB, 0x90, 0x07, 0x30, 0xDE, 0x80, 0x07, 0x8D, 0x35, 0x90, +0x09, 0x10, 0xC0, 0x80, 0x09, 0xAD, 0xB1, 0x10, 0x0A, 0xF0, 0xA2, 0x80, 0x0B, 0xE0, 0xA1, 0x90, +0x0C, 0xD9, 0xBF, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x0E, 0xB9, 0xA1, 0x00, 0x0F, 0xA9, 0xA0, 0x10, +0x10, 0x99, 0x83, 0x00, 0x11, 0x89, 0x82, 0x10, 0x12, 0x79, 0x65, 0x00, 0x13, 0x69, 0x64, 0x10, +0x14, 0x59, 0x47, 0x00, 0x15, 0x49, 0x46, 0x10, 0x16, 0x39, 0x29, 0x00, 0x17, 0x29, 0x28, 0x10, +0x18, 0x22, 0x45, 0x80, 0x19, 0x09, 0x0A, 0x10, 0x1A, 0x02, 0x27, 0x80, 0x1A, 0xF2, 0x26, 0x90, +0x1B, 0xE2, 0x09, 0x80, 0x1C, 0xD2, 0x08, 0x90, 0x1D, 0xC1, 0xEB, 0x80, 0x1E, 0xB1, 0xEA, 0x90, +0x1F, 0xA1, 0xCD, 0x80, 0x20, 0x76, 0x1D, 0x10, 0x21, 0x81, 0xAF, 0x80, 0x22, 0x55, 0xFF, 0x10, +0x23, 0x6A, 0xCC, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x25, 0x4A, 0xAE, 0x00, 0x26, 0x15, 0xC3, 0x10, +0x27, 0x2A, 0x90, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x29, 0x0A, 0x72, 0x00, 0x29, 0xDE, 0xC1, 0x90, +0x2A, 0xEA, 0x54, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x2C, 0xD3, 0x70, 0x80, 0x2D, 0x9E, 0x85, 0x90, +0x2E, 0xB3, 0x52, 0x80, 0x2F, 0x7E, 0x67, 0x90, 0x30, 0x93, 0x34, 0x80, 0x31, 0x67, 0x84, 0x10, +0x32, 0x73, 0x16, 0x80, 0x33, 0x47, 0x66, 0x10, 0x34, 0x52, 0xF8, 0x80, 0x35, 0x27, 0x48, 0x10, +0x36, 0x32, 0xDA, 0x80, 0x37, 0x07, 0x2A, 0x10, 0x38, 0x1B, 0xF7, 0x00, 0x38, 0xE7, 0x0C, 0x10, +0x39, 0xFB, 0xD9, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x3B, 0xDB, 0xBB, 0x00, 0x3C, 0xB0, 0x0A, 0x90, +0x3D, 0xBB, 0x9D, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x3F, 0x9B, 0x7F, 0x00, 0x40, 0x6F, 0xCE, 0x90, +0x41, 0x84, 0x9B, 0x80, 0x42, 0x4F, 0xB0, 0x90, 0x43, 0x64, 0x7D, 0x80, 0x44, 0x2F, 0x92, 0x90, +0x45, 0x44, 0x5F, 0x80, 0x45, 0xF3, 0xC5, 0x10, 0x47, 0x2D, 0x7C, 0x00, 0x47, 0xD3, 0xA7, 0x10, +0x49, 0x0D, 0x5E, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x4A, 0xED, 0x40, 0x00, 0x4B, 0x9C, 0xA5, 0x90, +0x4C, 0xD6, 0x5C, 0x80, 0x4D, 0x7C, 0x87, 0x90, 0x4E, 0xB6, 0x3E, 0x80, 0x4F, 0x5C, 0x69, 0x90, +0x50, 0x96, 0x20, 0x80, 0x51, 0x3C, 0x4B, 0x90, 0x52, 0x76, 0x02, 0x80, 0x53, 0x1C, 0x2D, 0x90, +0x54, 0x55, 0xE4, 0x80, 0x54, 0xFC, 0x0F, 0x90, 0x56, 0x35, 0xC6, 0x80, 0x56, 0xE5, 0x2C, 0x10, +0x58, 0x1E, 0xE3, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x59, 0xFE, 0xC5, 0x00, 0x5A, 0xA4, 0xF0, 0x10, +0x5B, 0xDE, 0xA7, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x5D, 0xBE, 0x89, 0x00, 0x5E, 0x64, 0xB4, 0x10, +0x5F, 0x9E, 0x6B, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x61, 0x87, 0x87, 0x80, 0x62, 0x2D, 0xB2, 0x90, +0x63, 0x67, 0x69, 0x80, 0x64, 0x0D, 0x94, 0x90, 0x65, 0x47, 0x4B, 0x80, 0x65, 0xED, 0x76, 0x90, +0x67, 0x27, 0x2D, 0x80, 0x67, 0xCD, 0x58, 0x90, 0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, +0x6A, 0xE6, 0xF1, 0x80, 0x6B, 0x96, 0x57, 0x10, 0x6C, 0xD0, 0x0E, 0x00, 0x6D, 0x76, 0x39, 0x10, +0x6E, 0xAF, 0xF0, 0x00, 0x6F, 0x56, 0x1B, 0x10, 0x70, 0x8F, 0xD2, 0x00, 0x71, 0x35, 0xFD, 0x10, +0x72, 0x6F, 0xB4, 0x00, 0x73, 0x15, 0xDF, 0x10, 0x74, 0x4F, 0x96, 0x00, 0x74, 0xFE, 0xFB, 0x90, +0x76, 0x38, 0xB2, 0x80, 0x76, 0xDE, 0xDD, 0x90, 0x78, 0x18, 0x94, 0x80, 0x78, 0xBE, 0xBF, 0x90, +0x79, 0xF8, 0x76, 0x80, 0x7A, 0x9E, 0xA1, 0x90, 0x7B, 0xD8, 0x58, 0x80, 0x7C, 0x7E, 0x83, 0x90, +0x7D, 0xB8, 0x3A, 0x80, 0x7E, 0x5E, 0x65, 0x90, 0x7F, 0x98, 0x1C, 0x80, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, +0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xA6, 0x3A, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xA0, 0x86, 0x1C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xE9, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x89, 0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0xF8, 0x75, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFC, 0xD8, 0x57, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFE, 0xB8, 0x39, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x98, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x77, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, +0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, +0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, +0x07, 0x8D, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x09, 0xAD, 0xB1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, +0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, +0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, +0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, 0x00, +0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, +0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, +0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, +0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, +0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, +0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, +0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, +0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, 0x00, 0x00, 0x00, 0x00, +0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x34, 0x80, 0x00, 0x00, 0x00, 0x00, +0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, +0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, +0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, +0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, +0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, +0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, +0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, +0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, +0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, +0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, +0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, +0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, +0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, +0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, 0x00, 0x00, 0x00, +0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, +0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, +0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, +0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, +0x6B, 0x96, 0x57, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x6D, 0x76, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x6F, 0x56, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, +0x71, 0x35, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, +0x73, 0x15, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, +0x74, 0xFE, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xB2, 0x80, 0x00, 0x00, 0x00, 0x00, +0x76, 0xDE, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, +0x78, 0xBE, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x76, 0x80, 0x00, 0x00, 0x00, 0x00, +0x7A, 0x9E, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x58, 0x80, 0x00, 0x00, 0x00, 0x00, +0x7C, 0x7E, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x3A, 0x80, 0x00, 0x00, 0x00, 0x00, +0x7E, 0x5E, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x1C, 0x80, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, +0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, +0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, /* Navajo */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -68673,185 +68373,147 @@ /* PST8PDT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x9E, 0xA6, 0x48, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, -0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xD6, 0xFE, 0x74, 0x5C, -0xD8, 0x80, 0xAD, 0x90, 0xDA, 0xFE, 0xC3, 0x90, 0xDB, 0xC0, 0x90, 0x10, 0xDC, 0xDE, 0xA5, 0x90, -0xDD, 0xA9, 0xAC, 0x90, 0xDE, 0xBE, 0x87, 0x90, 0xDF, 0x89, 0x8E, 0x90, 0xE0, 0x9E, 0x69, 0x90, -0xE1, 0x69, 0x70, 0x90, 0xE2, 0x7E, 0x4B, 0x90, 0xE3, 0x49, 0x52, 0x90, 0xE4, 0x5E, 0x2D, 0x90, -0xE5, 0x29, 0x34, 0x90, 0xE6, 0x47, 0x4A, 0x10, 0xE7, 0x12, 0x51, 0x10, 0xE8, 0x27, 0x2C, 0x10, -0xE8, 0xF2, 0x33, 0x10, 0xEA, 0x07, 0x0E, 0x10, 0xEA, 0xD2, 0x15, 0x10, 0xEB, 0xE6, 0xF0, 0x10, -0xEC, 0xB1, 0xF7, 0x10, 0xED, 0xC6, 0xD2, 0x10, 0xEE, 0x91, 0xD9, 0x10, 0xEF, 0xAF, 0xEE, 0x90, -0xF0, 0x71, 0xBB, 0x10, 0xF1, 0x8F, 0xD0, 0x90, 0xF2, 0x7F, 0xC1, 0x90, 0xF3, 0x6F, 0xB2, 0x90, -0xF4, 0x5F, 0xA3, 0x90, 0xF5, 0x4F, 0x94, 0x90, 0xF6, 0x3F, 0x85, 0x90, 0xF7, 0x2F, 0x76, 0x90, -0xF8, 0x28, 0xA2, 0x10, 0xF9, 0x0F, 0x58, 0x90, 0xFA, 0x08, 0x84, 0x10, 0xFA, 0xF8, 0x83, 0x20, -0xFB, 0xE8, 0x66, 0x10, 0xFC, 0xD8, 0x65, 0x20, 0xFD, 0xC8, 0x48, 0x10, 0xFE, 0xB8, 0x47, 0x20, -0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x98, 0x29, 0x20, 0x01, 0x88, 0x0C, 0x10, 0x02, 0x78, 0x0B, 0x20, -0x03, 0x71, 0x28, 0x90, 0x04, 0x61, 0x27, 0xA0, 0x05, 0x51, 0x0A, 0x90, 0x06, 0x41, 0x09, 0xA0, -0x07, 0x30, 0xEC, 0x90, 0x07, 0x8D, 0x43, 0xA0, 0x09, 0x10, 0xCE, 0x90, 0x09, 0xAD, 0xBF, 0x20, -0x0A, 0xF0, 0xB0, 0x90, 0x0B, 0xE0, 0xAF, 0xA0, 0x0C, 0xD9, 0xCD, 0x10, 0x0D, 0xC0, 0x91, 0xA0, -0x0E, 0xB9, 0xAF, 0x10, 0x0F, 0xA9, 0xAE, 0x20, 0x10, 0x99, 0x91, 0x10, 0x11, 0x89, 0x90, 0x20, -0x12, 0x79, 0x73, 0x10, 0x13, 0x69, 0x72, 0x20, 0x14, 0x59, 0x55, 0x10, 0x15, 0x49, 0x54, 0x20, -0x16, 0x39, 0x37, 0x10, 0x17, 0x29, 0x36, 0x20, 0x18, 0x22, 0x53, 0x90, 0x19, 0x09, 0x18, 0x20, -0x1A, 0x02, 0x35, 0x90, 0x1A, 0xF2, 0x34, 0xA0, 0x1B, 0xE2, 0x17, 0x90, 0x1C, 0xD2, 0x16, 0xA0, -0x1D, 0xC1, 0xF9, 0x90, 0x1E, 0xB1, 0xF8, 0xA0, 0x1F, 0xA1, 0xDB, 0x90, 0x20, 0x76, 0x2B, 0x20, -0x21, 0x81, 0xBD, 0x90, 0x22, 0x56, 0x0D, 0x20, 0x23, 0x6A, 0xDA, 0x10, 0x24, 0x35, 0xEF, 0x20, -0x25, 0x4A, 0xBC, 0x10, 0x26, 0x15, 0xD1, 0x20, 0x27, 0x2A, 0x9E, 0x10, 0x27, 0xFE, 0xED, 0xA0, -0x29, 0x0A, 0x80, 0x10, 0x29, 0xDE, 0xCF, 0xA0, 0x2A, 0xEA, 0x62, 0x10, 0x2B, 0xBE, 0xB1, 0xA0, -0x2C, 0xD3, 0x7E, 0x90, 0x2D, 0x9E, 0x93, 0xA0, 0x2E, 0xB3, 0x60, 0x90, 0x2F, 0x7E, 0x75, 0xA0, -0x30, 0x93, 0x42, 0x90, 0x31, 0x67, 0x92, 0x20, 0x32, 0x73, 0x24, 0x90, 0x33, 0x47, 0x74, 0x20, -0x34, 0x53, 0x06, 0x90, 0x35, 0x27, 0x56, 0x20, 0x36, 0x32, 0xE8, 0x90, 0x37, 0x07, 0x38, 0x20, -0x38, 0x1C, 0x05, 0x10, 0x38, 0xE7, 0x1A, 0x20, 0x39, 0xFB, 0xE7, 0x10, 0x3A, 0xC6, 0xFC, 0x20, -0x3B, 0xDB, 0xC9, 0x10, 0x3C, 0xB0, 0x18, 0xA0, 0x3D, 0xBB, 0xAB, 0x10, 0x3E, 0x8F, 0xFA, 0xA0, -0x3F, 0x9B, 0x8D, 0x10, 0x40, 0x6F, 0xDC, 0xA0, 0x41, 0x84, 0xA9, 0x90, 0x42, 0x4F, 0xBE, 0xA0, -0x43, 0x64, 0x8B, 0x90, 0x44, 0x2F, 0xA0, 0xA0, 0x45, 0x44, 0x6D, 0x90, 0x45, 0xF3, 0xD3, 0x20, -0x47, 0x2D, 0x8A, 0x10, 0x47, 0xD3, 0xB5, 0x20, 0x49, 0x0D, 0x6C, 0x10, 0x49, 0xB3, 0x97, 0x20, -0x4A, 0xED, 0x4E, 0x10, 0x4B, 0x9C, 0xB3, 0xA0, 0x4C, 0xD6, 0x6A, 0x90, 0x4D, 0x7C, 0x95, 0xA0, -0x4E, 0xB6, 0x4C, 0x90, 0x4F, 0x5C, 0x77, 0xA0, 0x50, 0x96, 0x2E, 0x90, 0x51, 0x3C, 0x59, 0xA0, -0x52, 0x76, 0x10, 0x90, 0x53, 0x1C, 0x3B, 0xA0, 0x54, 0x55, 0xF2, 0x90, 0x54, 0xFC, 0x1D, 0xA0, -0x56, 0x35, 0xD4, 0x90, 0x56, 0xE5, 0x3A, 0x20, 0x58, 0x1E, 0xF1, 0x10, 0x58, 0xC5, 0x1C, 0x20, -0x59, 0xFE, 0xD3, 0x10, 0x5A, 0xA4, 0xFE, 0x20, 0x5B, 0xDE, 0xB5, 0x10, 0x5C, 0x84, 0xE0, 0x20, -0x5D, 0xBE, 0x97, 0x10, 0x5E, 0x64, 0xC2, 0x20, 0x5F, 0x9E, 0x79, 0x10, 0x60, 0x4D, 0xDE, 0xA0, -0x61, 0x87, 0x95, 0x90, 0x62, 0x2D, 0xC0, 0xA0, 0x63, 0x67, 0x77, 0x90, 0x64, 0x0D, 0xA2, 0xA0, -0x65, 0x47, 0x59, 0x90, 0x65, 0xED, 0x84, 0xA0, 0x67, 0x27, 0x3B, 0x90, 0x67, 0xCD, 0x66, 0xA0, -0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 0x6B, 0x96, 0x65, 0x20, -0x6C, 0xD0, 0x1C, 0x10, 0x6D, 0x76, 0x47, 0x20, 0x6E, 0xAF, 0xFE, 0x10, 0x6F, 0x56, 0x29, 0x20, -0x70, 0x8F, 0xE0, 0x10, 0x71, 0x36, 0x0B, 0x20, 0x72, 0x6F, 0xC2, 0x10, 0x73, 0x15, 0xED, 0x20, -0x74, 0x4F, 0xA4, 0x10, 0x74, 0xFF, 0x09, 0xA0, 0x76, 0x38, 0xC0, 0x90, 0x76, 0xDE, 0xEB, 0xA0, -0x78, 0x18, 0xA2, 0x90, 0x78, 0xBE, 0xCD, 0xA0, 0x79, 0xF8, 0x84, 0x90, 0x7A, 0x9E, 0xAF, 0xA0, -0x7B, 0xD8, 0x66, 0x90, 0x7C, 0x7E, 0x91, 0xA0, 0x7D, 0xB8, 0x48, 0x90, 0x7E, 0x5E, 0x73, 0xA0, -0x7F, 0x98, 0x2A, 0x90, 0x05, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, -0x91, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, -0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x8F, 0x80, -0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, -0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, -0xFF, 0xFF, 0x5E, 0x04, 0x1A, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x48, 0xA0, 0xFF, 0xFF, -0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x2A, 0xA0, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x9A, 0xF7, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, -0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xD6, 0xFE, 0x74, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x80, 0xAD, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xDA, 0xFE, 0xC3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x90, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xDC, 0xDE, 0xA5, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0xAC, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xDE, 0xBE, 0x87, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x8E, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xE0, 0x9E, 0x69, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x70, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xE2, 0x7E, 0x4B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x52, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xE4, 0x5E, 0x2D, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x34, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xE6, 0x47, 0x4A, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x51, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xE8, 0x27, 0x2C, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xF2, 0x33, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xEA, 0x07, 0x0E, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xD2, 0x15, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xEB, 0xE6, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xB1, 0xF7, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xED, 0xC6, 0xD2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x91, 0xD9, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xEF, 0xAF, 0xEE, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x71, 0xBB, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xF1, 0x8F, 0xD0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xC1, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xF3, 0x6F, 0xB2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0xA3, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xF5, 0x4F, 0x94, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x85, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xF7, 0x2F, 0x76, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0xA2, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xF9, 0x0F, 0x58, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x84, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xFA, 0xF8, 0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xFC, 0xD8, 0x65, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, -0x00, 0x00, 0x00, 0x98, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x0C, 0x10, 0x00, 0x00, -0x00, 0x00, 0x02, 0x78, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x28, 0x90, 0x00, 0x00, -0x00, 0x00, 0x04, 0x61, 0x27, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, -0x00, 0x00, 0x06, 0x41, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x07, 0x8D, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, -0x00, 0x00, 0x09, 0xAD, 0xBF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, -0x00, 0x00, 0x0B, 0xE0, 0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, -0x00, 0x00, 0x0D, 0xC0, 0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, -0x00, 0x00, 0x0F, 0xA9, 0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, -0x00, 0x00, 0x11, 0x89, 0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x73, 0x10, 0x00, 0x00, -0x00, 0x00, 0x13, 0x69, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, -0x00, 0x00, 0x15, 0x49, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, -0x00, 0x00, 0x17, 0x29, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, -0x00, 0x00, 0x19, 0x09, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, -0x00, 0x00, 0x1A, 0xF2, 0x34, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x17, 0x90, 0x00, 0x00, -0x00, 0x00, 0x1C, 0xD2, 0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xF9, 0x90, 0x00, 0x00, -0x00, 0x00, 0x1E, 0xB1, 0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xDB, 0x90, 0x00, 0x00, -0x00, 0x00, 0x20, 0x76, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xBD, 0x90, 0x00, 0x00, -0x00, 0x00, 0x22, 0x56, 0x0D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xDA, 0x10, 0x00, 0x00, -0x00, 0x00, 0x24, 0x35, 0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xBC, 0x10, 0x00, 0x00, -0x00, 0x00, 0x26, 0x15, 0xD1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x9E, 0x10, 0x00, 0x00, -0x00, 0x00, 0x27, 0xFE, 0xED, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x80, 0x10, 0x00, 0x00, -0x00, 0x00, 0x29, 0xDE, 0xCF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x62, 0x10, 0x00, 0x00, -0x00, 0x00, 0x2B, 0xBE, 0xB1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x7E, 0x90, 0x00, 0x00, -0x00, 0x00, 0x2D, 0x9E, 0x93, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x60, 0x90, 0x00, 0x00, -0x00, 0x00, 0x2F, 0x7E, 0x75, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x42, 0x90, 0x00, 0x00, -0x00, 0x00, 0x31, 0x67, 0x92, 0x20, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x24, 0x90, 0x00, 0x00, -0x00, 0x00, 0x33, 0x47, 0x74, 0x20, 0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x06, 0x90, 0x00, 0x00, -0x00, 0x00, 0x35, 0x27, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xE8, 0x90, 0x00, 0x00, -0x00, 0x00, 0x37, 0x07, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, 0x05, 0x10, 0x00, 0x00, -0x00, 0x00, 0x38, 0xE7, 0x1A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xE7, 0x10, 0x00, 0x00, -0x00, 0x00, 0x3A, 0xC6, 0xFC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xC9, 0x10, 0x00, 0x00, -0x00, 0x00, 0x3C, 0xB0, 0x18, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0xAB, 0x10, 0x00, 0x00, -0x00, 0x00, 0x3E, 0x8F, 0xFA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x8D, 0x10, 0x00, 0x00, -0x00, 0x00, 0x40, 0x6F, 0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, -0x00, 0x00, 0x42, 0x4F, 0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, -0x00, 0x00, 0x44, 0x2F, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, -0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, 0x00, -0x00, 0x00, 0x47, 0xD3, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, 0x00, -0x00, 0x00, 0x49, 0xB3, 0x97, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, 0x00, -0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4D, 0x7C, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4F, 0x5C, 0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, -0x00, 0x00, 0x51, 0x3C, 0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, -0x00, 0x00, 0x53, 0x1C, 0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, -0x00, 0x00, 0x54, 0xFC, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, -0x00, 0x00, 0x56, 0xE5, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, -0x00, 0x00, 0x58, 0xC5, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5A, 0xA4, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5C, 0x84, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5E, 0x64, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, -0x00, 0x00, 0x60, 0x4D, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, -0x00, 0x00, 0x62, 0x2D, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, -0x00, 0x00, 0x64, 0x0D, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, -0x00, 0x00, 0x65, 0xED, 0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, -0x00, 0x00, 0x67, 0xCD, 0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, -0x00, 0x00, 0x69, 0xAD, 0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 0x00, 0x00, -0x00, 0x00, 0x6B, 0x96, 0x65, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x1C, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6D, 0x76, 0x47, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xFE, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6F, 0x56, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xE0, 0x10, 0x00, 0x00, -0x00, 0x00, 0x71, 0x36, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xC2, 0x10, 0x00, 0x00, -0x00, 0x00, 0x73, 0x15, 0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0xA4, 0x10, 0x00, 0x00, -0x00, 0x00, 0x74, 0xFF, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xC0, 0x90, 0x00, 0x00, -0x00, 0x00, 0x76, 0xDE, 0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0xA2, 0x90, 0x00, 0x00, -0x00, 0x00, 0x78, 0xBE, 0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x84, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7A, 0x9E, 0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x66, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7C, 0x7E, 0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x48, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7E, 0x5E, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x2A, 0x90, 0x05, 0x01, -0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0x91, 0x26, 0x00, 0x00, 0xFF, 0xFF, -0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, -0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, -0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x50, 0x53, 0x54, -0x38, 0x50, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, -0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x9E, 0xA6, 0x48, 0xA0, +0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, 0xCB, 0x89, 0x1A, 0xA0, +0xD2, 0x61, 0x26, 0x10, 0xFA, 0xF8, 0x83, 0x20, 0xFB, 0xE8, 0x66, 0x10, 0xFC, 0xD8, 0x65, 0x20, +0xFD, 0xC8, 0x48, 0x10, 0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x98, 0x29, 0x20, +0x01, 0x88, 0x0C, 0x10, 0x02, 0x78, 0x0B, 0x20, 0x03, 0x71, 0x28, 0x90, 0x04, 0x61, 0x27, 0xA0, +0x05, 0x51, 0x0A, 0x90, 0x06, 0x41, 0x09, 0xA0, 0x07, 0x30, 0xEC, 0x90, 0x07, 0x8D, 0x43, 0xA0, +0x09, 0x10, 0xCE, 0x90, 0x09, 0xAD, 0xBF, 0x20, 0x0A, 0xF0, 0xB0, 0x90, 0x0B, 0xE0, 0xAF, 0xA0, +0x0C, 0xD9, 0xCD, 0x10, 0x0D, 0xC0, 0x91, 0xA0, 0x0E, 0xB9, 0xAF, 0x10, 0x0F, 0xA9, 0xAE, 0x20, +0x10, 0x99, 0x91, 0x10, 0x11, 0x89, 0x90, 0x20, 0x12, 0x79, 0x73, 0x10, 0x13, 0x69, 0x72, 0x20, +0x14, 0x59, 0x55, 0x10, 0x15, 0x49, 0x54, 0x20, 0x16, 0x39, 0x37, 0x10, 0x17, 0x29, 0x36, 0x20, +0x18, 0x22, 0x53, 0x90, 0x19, 0x09, 0x18, 0x20, 0x1A, 0x02, 0x35, 0x90, 0x1A, 0xF2, 0x34, 0xA0, +0x1B, 0xE2, 0x17, 0x90, 0x1C, 0xD2, 0x16, 0xA0, 0x1D, 0xC1, 0xF9, 0x90, 0x1E, 0xB1, 0xF8, 0xA0, +0x1F, 0xA1, 0xDB, 0x90, 0x20, 0x76, 0x2B, 0x20, 0x21, 0x81, 0xBD, 0x90, 0x22, 0x56, 0x0D, 0x20, +0x23, 0x6A, 0xDA, 0x10, 0x24, 0x35, 0xEF, 0x20, 0x25, 0x4A, 0xBC, 0x10, 0x26, 0x15, 0xD1, 0x20, +0x27, 0x2A, 0x9E, 0x10, 0x27, 0xFE, 0xED, 0xA0, 0x29, 0x0A, 0x80, 0x10, 0x29, 0xDE, 0xCF, 0xA0, +0x2A, 0xEA, 0x62, 0x10, 0x2B, 0xBE, 0xB1, 0xA0, 0x2C, 0xD3, 0x7E, 0x90, 0x2D, 0x9E, 0x93, 0xA0, +0x2E, 0xB3, 0x60, 0x90, 0x2F, 0x7E, 0x75, 0xA0, 0x30, 0x93, 0x42, 0x90, 0x31, 0x67, 0x92, 0x20, +0x32, 0x73, 0x24, 0x90, 0x33, 0x47, 0x74, 0x20, 0x34, 0x53, 0x06, 0x90, 0x35, 0x27, 0x56, 0x20, +0x36, 0x32, 0xE8, 0x90, 0x37, 0x07, 0x38, 0x20, 0x38, 0x1C, 0x05, 0x10, 0x38, 0xE7, 0x1A, 0x20, +0x39, 0xFB, 0xE7, 0x10, 0x3A, 0xC6, 0xFC, 0x20, 0x3B, 0xDB, 0xC9, 0x10, 0x3C, 0xB0, 0x18, 0xA0, +0x3D, 0xBB, 0xAB, 0x10, 0x3E, 0x8F, 0xFA, 0xA0, 0x3F, 0x9B, 0x8D, 0x10, 0x40, 0x6F, 0xDC, 0xA0, +0x41, 0x84, 0xA9, 0x90, 0x42, 0x4F, 0xBE, 0xA0, 0x43, 0x64, 0x8B, 0x90, 0x44, 0x2F, 0xA0, 0xA0, +0x45, 0x44, 0x6D, 0x90, 0x45, 0xF3, 0xD3, 0x20, 0x47, 0x2D, 0x8A, 0x10, 0x47, 0xD3, 0xB5, 0x20, +0x49, 0x0D, 0x6C, 0x10, 0x49, 0xB3, 0x97, 0x20, 0x4A, 0xED, 0x4E, 0x10, 0x4B, 0x9C, 0xB3, 0xA0, +0x4C, 0xD6, 0x6A, 0x90, 0x4D, 0x7C, 0x95, 0xA0, 0x4E, 0xB6, 0x4C, 0x90, 0x4F, 0x5C, 0x77, 0xA0, +0x50, 0x96, 0x2E, 0x90, 0x51, 0x3C, 0x59, 0xA0, 0x52, 0x76, 0x10, 0x90, 0x53, 0x1C, 0x3B, 0xA0, +0x54, 0x55, 0xF2, 0x90, 0x54, 0xFC, 0x1D, 0xA0, 0x56, 0x35, 0xD4, 0x90, 0x56, 0xE5, 0x3A, 0x20, +0x58, 0x1E, 0xF1, 0x10, 0x58, 0xC5, 0x1C, 0x20, 0x59, 0xFE, 0xD3, 0x10, 0x5A, 0xA4, 0xFE, 0x20, +0x5B, 0xDE, 0xB5, 0x10, 0x5C, 0x84, 0xE0, 0x20, 0x5D, 0xBE, 0x97, 0x10, 0x5E, 0x64, 0xC2, 0x20, +0x5F, 0x9E, 0x79, 0x10, 0x60, 0x4D, 0xDE, 0xA0, 0x61, 0x87, 0x95, 0x90, 0x62, 0x2D, 0xC0, 0xA0, +0x63, 0x67, 0x77, 0x90, 0x64, 0x0D, 0xA2, 0xA0, 0x65, 0x47, 0x59, 0x90, 0x65, 0xED, 0x84, 0xA0, +0x67, 0x27, 0x3B, 0x90, 0x67, 0xCD, 0x66, 0xA0, 0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, +0x6A, 0xE6, 0xFF, 0x90, 0x6B, 0x96, 0x65, 0x20, 0x6C, 0xD0, 0x1C, 0x10, 0x6D, 0x76, 0x47, 0x20, +0x6E, 0xAF, 0xFE, 0x10, 0x6F, 0x56, 0x29, 0x20, 0x70, 0x8F, 0xE0, 0x10, 0x71, 0x36, 0x0B, 0x20, +0x72, 0x6F, 0xC2, 0x10, 0x73, 0x15, 0xED, 0x20, 0x74, 0x4F, 0xA4, 0x10, 0x74, 0xFF, 0x09, 0xA0, +0x76, 0x38, 0xC0, 0x90, 0x76, 0xDE, 0xEB, 0xA0, 0x78, 0x18, 0xA2, 0x90, 0x78, 0xBE, 0xCD, 0xA0, +0x79, 0xF8, 0x84, 0x90, 0x7A, 0x9E, 0xAF, 0xA0, 0x7B, 0xD8, 0x66, 0x90, 0x7C, 0x7E, 0x91, 0xA0, +0x7D, 0xB8, 0x48, 0x90, 0x7E, 0x5E, 0x73, 0xA0, 0x7F, 0x98, 0x2A, 0x90, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, +0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, +0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, +0x9E, 0xA6, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, +0xA0, 0x86, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xF7, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, +0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, +0xFA, 0xF8, 0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, +0xFC, 0xD8, 0x65, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, +0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x98, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, +0x02, 0x78, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, +0x04, 0x61, 0x27, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, +0x06, 0x41, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, +0x07, 0x8D, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, +0x09, 0xAD, 0xBF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, +0x0B, 0xE0, 0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, +0x0D, 0xC0, 0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, +0x0F, 0xA9, 0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, +0x11, 0x89, 0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x73, 0x10, 0x00, 0x00, 0x00, 0x00, +0x13, 0x69, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, +0x15, 0x49, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, 0x00, 0x00, +0x17, 0x29, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, 0x00, 0x00, +0x19, 0x09, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, +0x1A, 0xF2, 0x34, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x17, 0x90, 0x00, 0x00, 0x00, 0x00, +0x1C, 0xD2, 0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xF9, 0x90, 0x00, 0x00, 0x00, 0x00, +0x1E, 0xB1, 0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xDB, 0x90, 0x00, 0x00, 0x00, 0x00, +0x20, 0x76, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xBD, 0x90, 0x00, 0x00, 0x00, 0x00, +0x22, 0x56, 0x0D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xDA, 0x10, 0x00, 0x00, 0x00, 0x00, +0x24, 0x35, 0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xBC, 0x10, 0x00, 0x00, 0x00, 0x00, +0x26, 0x15, 0xD1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x9E, 0x10, 0x00, 0x00, 0x00, 0x00, +0x27, 0xFE, 0xED, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, +0x29, 0xDE, 0xCF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, +0x2B, 0xBE, 0xB1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, +0x2D, 0x9E, 0x93, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, +0x2F, 0x7E, 0x75, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, +0x31, 0x67, 0x92, 0x20, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, +0x33, 0x47, 0x74, 0x20, 0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x06, 0x90, 0x00, 0x00, 0x00, 0x00, +0x35, 0x27, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xE8, 0x90, 0x00, 0x00, 0x00, 0x00, +0x37, 0x07, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, +0x38, 0xE7, 0x1A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xE7, 0x10, 0x00, 0x00, 0x00, 0x00, +0x3A, 0xC6, 0xFC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xC9, 0x10, 0x00, 0x00, 0x00, 0x00, +0x3C, 0xB0, 0x18, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0xAB, 0x10, 0x00, 0x00, 0x00, 0x00, +0x3E, 0x8F, 0xFA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x8D, 0x10, 0x00, 0x00, 0x00, 0x00, +0x40, 0x6F, 0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, +0x42, 0x4F, 0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, +0x44, 0x2F, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, +0x45, 0xF3, 0xD3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, 0x00, 0x00, 0x00, +0x47, 0xD3, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, 0x00, 0x00, 0x00, +0x49, 0xB3, 0x97, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, 0x00, 0x00, 0x00, +0x4B, 0x9C, 0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, 0x00, 0x00, +0x4D, 0x7C, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00, +0x4F, 0x5C, 0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, 0x00, 0x00, +0x51, 0x3C, 0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, 0x00, 0x00, +0x53, 0x1C, 0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00, +0x54, 0xFC, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, 0x00, 0x00, +0x56, 0xE5, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, 0x00, 0x00, +0x58, 0xC5, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x00, +0x5A, 0xA4, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, 0x00, 0x00, +0x5C, 0x84, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, 0x00, 0x00, +0x5E, 0x64, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00, +0x60, 0x4D, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, 0x00, 0x00, +0x62, 0x2D, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, +0x64, 0x0D, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, 0x00, 0x00, +0x65, 0xED, 0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, 0x00, 0x00, +0x67, 0xCD, 0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, 0x00, 0x00, +0x69, 0xAD, 0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, +0x6B, 0x96, 0x65, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, +0x6D, 0x76, 0x47, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xFE, 0x10, 0x00, 0x00, 0x00, 0x00, +0x6F, 0x56, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xE0, 0x10, 0x00, 0x00, 0x00, 0x00, +0x71, 0x36, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xC2, 0x10, 0x00, 0x00, 0x00, 0x00, +0x73, 0x15, 0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00, +0x74, 0xFF, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xC0, 0x90, 0x00, 0x00, 0x00, 0x00, +0x76, 0xDE, 0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0xA2, 0x90, 0x00, 0x00, 0x00, 0x00, +0x78, 0xBE, 0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x84, 0x90, 0x00, 0x00, 0x00, 0x00, +0x7A, 0x9E, 0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, +0x7C, 0x7E, 0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x48, 0x90, 0x00, 0x00, 0x00, 0x00, +0x7E, 0x5E, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x2A, 0x90, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, +0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, +0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, +0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, /* ROC */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -69264,8 +68926,8 @@ 0x1A, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x1E, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x23, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x41, 0x48, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, -0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, +0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -69414,8 +69076,8 @@ 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x18, 0xFF, 0xFF, 0x81, 0x70, 0x01, 0x1D, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x41, 0x48, -0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x53, 0x54, 0x31, +0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x53, 0x54, 0x31, 0x30, 0x48, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -71028,4 +70690,4 @@ }; #endif -const timelib_tzdb timezonedb_builtin = { "2026.3", 598, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2026.5", 598, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff -Nru php8.4-8.4.26/ext/date/tests/bug35499.phpt php8.4-8.4.27/ext/date/tests/bug35499.phpt --- php8.4-8.4.26/ext/date/tests/bug35499.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/bug35499.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -69,9 +69,11 @@ array(0) { } ["error_count"]=> - int(0) + int(1) ["errors"]=> - array(0) { + array(1) { + [0]=> + string(12) "Empty string" } ["is_localtime"]=> bool(false) diff -Nru php8.4-8.4.26/ext/date/tests/oom_date_create.phpt php8.4-8.4.27/ext/date/tests/oom_date_create.phpt --- php8.4-8.4.26/ext/date/tests/oom_date_create.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_date_create.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,10 @@ +--TEST-- +date_create() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- + +--EXPECT-- +bool(false) diff -Nru php8.4-8.4.26/ext/date/tests/oom_date_create_immutable.phpt php8.4-8.4.27/ext/date/tests/oom_date_create_immutable.phpt --- php8.4-8.4.26/ext/date/tests/oom_date_create_immutable.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_date_create_immutable.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,10 @@ +--TEST-- +date_create_immutable() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- + +--EXPECT-- +bool(false) diff -Nru php8.4-8.4.26/ext/date/tests/oom_date_interval_create_from_date_string.phpt php8.4-8.4.27/ext/date/tests/oom_date_interval_create_from_date_string.phpt --- php8.4-8.4.26/ext/date/tests/oom_date_interval_create_from_date_string.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_date_interval_create_from_date_string.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +date_interval_create_from_date_string() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- + +--EXPECTF-- +Warning: date_interval_create_from_date_string(): Unknown or bad format (%s) at position 0 (%s): Unexpected character in %s on line %d +bool(false) diff -Nru php8.4-8.4.26/ext/date/tests/oom_date_modify.phpt php8.4-8.4.27/ext/date/tests/oom_date_modify.phpt --- php8.4-8.4.26/ext/date/tests/oom_date_modify.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_date_modify.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +date_modify() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- + +--EXPECTF-- +Warning: date_modify(): Failed to parse time string (%s) at position 0 (%s): Unexpected character in %s on line %d +bool(false) diff -Nru php8.4-8.4.26/ext/date/tests/oom_date_parse.phpt php8.4-8.4.27/ext/date/tests/oom_date_parse.phpt --- php8.4-8.4.26/ext/date/tests/oom_date_parse.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_date_parse.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +date_parse() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- + +--EXPECT-- +int(1000) diff -Nru php8.4-8.4.26/ext/date/tests/oom_dateinterval_construct.phpt php8.4-8.4.27/ext/date/tests/oom_dateinterval_construct.phpt --- php8.4-8.4.26/ext/date/tests/oom_dateinterval_construct.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_dateinterval_construct.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +DateInterval::__construct() doesn't reach hard limit +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECTF-- +DateMalformedIntervalStringException: Unknown or bad format (%s) diff -Nru php8.4-8.4.26/ext/date/tests/oom_dateinterval_createfromdatestring.phpt php8.4-8.4.27/ext/date/tests/oom_dateinterval_createfromdatestring.phpt --- php8.4-8.4.26/ext/date/tests/oom_dateinterval_createfromdatestring.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_dateinterval_createfromdatestring.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +DateInterval::createFromDateString() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECTF-- +DateMalformedIntervalStringException: Unknown or bad format (%s) at position 0 (%s): Unexpected character diff -Nru php8.4-8.4.26/ext/date/tests/oom_dateperiod_construct.phpt php8.4-8.4.27/ext/date/tests/oom_dateperiod_construct.phpt --- php8.4-8.4.26/ext/date/tests/oom_dateperiod_construct.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_dateperiod_construct.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +DatePeriod::__construct() doesn't reach hard limit +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECTF-- +Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d +DateMalformedPeriodStringException: Unknown or bad format (%s) diff -Nru php8.4-8.4.26/ext/date/tests/oom_datetime_construct.phpt php8.4-8.4.27/ext/date/tests/oom_datetime_construct.phpt --- php8.4-8.4.26/ext/date/tests/oom_datetime_construct.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_datetime_construct.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +DateTime::__construct() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECTF-- +DateMalformedStringException: Failed to parse time string (%s) at position 0 (%s): Unexpected character diff -Nru php8.4-8.4.26/ext/date/tests/oom_datetime_modify.phpt php8.4-8.4.27/ext/date/tests/oom_datetime_modify.phpt --- php8.4-8.4.26/ext/date/tests/oom_datetime_modify.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_datetime_modify.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +DateTime::modify() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- +modify(str_repeat("\x01", 4 * 1024 * 1024))); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), "\n"; +} +?> +--EXPECTF-- +DateMalformedStringException: DateTime::modify(): Failed to parse time string (%s) at position 0 (%s): Unexpected character diff -Nru php8.4-8.4.26/ext/date/tests/oom_datetimeimmutable_construct.phpt php8.4-8.4.27/ext/date/tests/oom_datetimeimmutable_construct.phpt --- php8.4-8.4.26/ext/date/tests/oom_datetimeimmutable_construct.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_datetimeimmutable_construct.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +DateTimeImmutable::__construct() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECTF-- +DateMalformedStringException: Failed to parse time string (%s) at position 0 (%s): Unexpected character diff -Nru php8.4-8.4.26/ext/date/tests/oom_datetimeimmutable_modify.phpt php8.4-8.4.27/ext/date/tests/oom_datetimeimmutable_modify.phpt --- php8.4-8.4.26/ext/date/tests/oom_datetimeimmutable_modify.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_datetimeimmutable_modify.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +DateTimeImmutable::modify() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- +modify(str_repeat("\x01", 4 * 1024 * 1024))); +} catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), "\n"; +} +?> +--EXPECTF-- +DateMalformedStringException: DateTimeImmutable::modify(): Failed to parse time string (%s) at position 0 (%s): Unexpected character diff -Nru php8.4-8.4.26/ext/date/tests/oom_strtotime.phpt php8.4-8.4.27/ext/date/tests/oom_strtotime.phpt --- php8.4-8.4.26/ext/date/tests/oom_strtotime.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/date/tests/oom_strtotime.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,10 @@ +--TEST-- +strtotime() doesn't reach hard limit +--INI-- +memory_limit=64M +--FILE-- + +--EXPECT-- +bool(false) diff -Nru php8.4-8.4.26/ext/dl_test/dl_test.c php8.4-8.4.27/ext/dl_test/dl_test.c --- php8.4-8.4.26/ext/dl_test/dl_test.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dl_test/dl_test.c 2026-10-19 14:38:59.000000000 +0000 @@ -52,6 +52,28 @@ } /* }}}*/ +PHP_FUNCTION(dl_test_frameless) +{ + zend_long value; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(value) + ZEND_PARSE_PARAMETERS_END(); + + RETURN_LONG(value); +} + +ZEND_FRAMELESS_FUNCTION(dl_test_frameless, 1) +{ + zend_long value; + + Z_FLF_PARAM_LONG(1, value); + + RETVAL_LONG(value); + +flf_clean:; +} + /* {{{ PHP_DL_TEST_USE_REGISTER_FUNCTIONS_DIRECTLY */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dl_test_use_register_functions_directly, 0, 0, IS_STRING, 0) ZEND_END_ARG_INFO() diff -Nru php8.4-8.4.26/ext/dl_test/dl_test.stub.php php8.4-8.4.27/ext/dl_test/dl_test.stub.php --- php8.4-8.4.26/ext/dl_test/dl_test.stub.php 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dl_test/dl_test.stub.php 2026-10-19 14:38:59.000000000 +0000 @@ -9,6 +9,11 @@ function dl_test_test2(string $str = ""): string {} +/** + * @frameless-function {"arity": 1} + */ +function dl_test_frameless(int $value): int {} + class DlTest { public function test(string $str = ""): string {} } diff -Nru php8.4-8.4.26/ext/dl_test/dl_test_arginfo.h php8.4-8.4.27/ext/dl_test/dl_test_arginfo.h --- php8.4-8.4.26/ext/dl_test/dl_test_arginfo.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dl_test/dl_test_arginfo.h 2026-10-19 14:38:59.000000000 +0000 @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 0641a8eeff00e6c8083fe4a8639f970e3ba80db9 */ + * Stub hash: 0ab7bc0f3289a77ecb1850a1cc7056b7c5297fda */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dl_test_test1, 0, 0, IS_VOID, 0) ZEND_END_ARG_INFO() @@ -8,18 +8,31 @@ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, str, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dl_test_frameless, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, value, IS_LONG, 0) +ZEND_END_ARG_INFO() + #define arginfo_class_DlTest_test arginfo_dl_test_test2 #define arginfo_class_DlTestSuperClass_test arginfo_dl_test_test2 + +ZEND_FRAMELESS_FUNCTION(dl_test_frameless, 1); +static const zend_frameless_function_info frameless_function_infos_dl_test_frameless[] = { + { ZEND_FRAMELESS_FUNCTION_NAME(dl_test_frameless, 1), 1 }, + { 0 }, +}; + ZEND_FUNCTION(dl_test_test1); ZEND_FUNCTION(dl_test_test2); +ZEND_FUNCTION(dl_test_frameless); ZEND_METHOD(DlTest, test); ZEND_METHOD(DlTestSuperClass, test); static const zend_function_entry ext_functions[] = { ZEND_FE(dl_test_test1, arginfo_dl_test_test1) ZEND_FE(dl_test_test2, arginfo_dl_test_test2) + ZEND_RAW_FENTRY("dl_test_frameless", zif_dl_test_frameless, arginfo_dl_test_frameless, 0, frameless_function_infos_dl_test_frameless, NULL) ZEND_FE_END }; diff -Nru php8.4-8.4.26/ext/dl_test/tests/frameless_temporary.inc php8.4-8.4.27/ext/dl_test/tests/frameless_temporary.inc --- php8.4-8.4.26/ext/dl_test/tests/frameless_temporary.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dl_test/tests/frameless_temporary.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,8 @@ +getMessage(), "\n"; +} diff -Nru php8.4-8.4.26/ext/dl_test/tests/frameless_temporary.phpt php8.4-8.4.27/ext/dl_test/tests/frameless_temporary.phpt --- php8.4-8.4.26/ext/dl_test/tests/frameless_temporary.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dl_test/tests/frameless_temporary.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,53 @@ +--TEST-- +dl() of a frameless function does not keep the freed function record +--SKIPIF-- + +--FILE-- + ['pipe', 'r'], + 1 => ['pipe', 'w'], + 2 => ['pipe', 'w'], +], $pipes); +fclose($pipes[0]); +$out = stream_get_contents($pipes[1]); +stream_get_contents($pipes[2]); +fclose($pipes[1]); +fclose($pipes[2]); +echo $out; +$code = proc_close($proc); +if ($code !== 0) { + echo "exit:$code\n"; +} +?> +--EXPECT-- +int(7) +dl_test_frameless(): Argument #1 ($value) must be of type int, string given +int(7) +dl_test_frameless(): Argument #1 ($value) must be of type int, string given diff -Nru php8.4-8.4.26/ext/dl_test/tests/frameless_temporary_cgi.inc php8.4-8.4.27/ext/dl_test/tests/frameless_temporary_cgi.inc --- php8.4-8.4.26/ext/dl_test/tests/frameless_temporary_cgi.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dl_test/tests/frameless_temporary_cgi.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,7 @@ + +--EXTENSIONS-- +opcache +--INI-- +enable_dl=1 +opcache.enable_cli=1 +opcache.opt_debug_level=0x10000 +--FILE-- + +--EXPECTF-- +%A0001 INIT_FCALL 1 %d string("dl_test_frameless") +%Aint(7) +dl_test_frameless(): Argument #1 ($value) must be of type int, string given diff -Nru php8.4-8.4.26/ext/dom/config.m4 php8.4-8.4.27/ext/dom/config.m4 --- php8.4-8.4.26/ext/dom/config.m4 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/config.m4 2026-10-19 14:38:59.000000000 +0000 @@ -8,7 +8,7 @@ PHP_SETUP_LIBXML([DOM_SHARED_LIBADD], [ AC_DEFINE([HAVE_DOM], [1], [Define to 1 if the PHP extension 'dom' is available.]) - PHP_LEXBOR_CFLAGS="-I@ext_srcdir@/lexbor -DLEXBOR_STATIC" + PHP_LEXBOR_CFLAGS="-Wno-unknown-warning-option -Wno-unterminated-string-initialization -I@ext_srcdir@/lexbor -DLEXBOR_STATIC" LEXBOR_DIR="lexbor/lexbor" LEXBOR_SOURCES=m4_normalize([" $LEXBOR_DIR/core/array_obj.c diff -Nru php8.4-8.4.26/ext/dom/html5_parser.c php8.4-8.4.27/ext/dom/html5_parser.c --- php8.4-8.4.26/ext/dom/html5_parser.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/html5_parser.c 2026-10-19 14:38:59.000000000 +0000 @@ -241,7 +241,7 @@ lxml_attr->children = lxml_attr->last = lxml_text; lxml_text->parent = (xmlNodePtr) lxml_attr; - if (attr->node.ns == LXB_NS_XMLNS) { + if (attr->node.ns == LXB_NS_XMLNS && (attr->node.prefix || strcmp((const char *) local_name, "xmlns") == 0)) { if (strcmp((const char *) local_name, "xmlns") != 0) { if (prefixed_xmlns_ns == NULL) { prefixed_xmlns_ns = php_dom_libxml_ns_mapper_get_ns_raw_strings_nullsafe(ns_mapper, "xmlns", DOM_XMLNS_NS_URI); @@ -251,13 +251,13 @@ lxml_attr->ns = php_dom_libxml_ns_mapper_ensure_prefixless_xmlns_ns(ns_mapper); } lxml_attr->ns->_private = (void *) php_dom_ns_is_xmlns_magic_token; - } else if (attr->node.ns == LXB_NS_XLINK) { + } else if (attr->node.prefix && attr->node.ns == LXB_NS_XLINK) { if (xlink_ns == NULL) { xlink_ns = php_dom_libxml_ns_mapper_get_ns_raw_strings_nullsafe(ns_mapper, "xlink", DOM_XLINK_NS_URI); xlink_ns->_private = (void *) php_dom_ns_is_xlink_magic_token; } lxml_attr->ns = xlink_ns; - } else if (attr->node.ns == LXB_NS_XML) { + } else if (attr->node.prefix && attr->node.ns == LXB_NS_XML) { if (xml_ns == NULL) { xml_ns = php_dom_libxml_ns_mapper_get_ns_raw_strings_nullsafe(ns_mapper, "xml", DOM_XML_NS_URI); xml_ns->_private = (void *) php_dom_ns_is_xml_magic_token; @@ -274,7 +274,7 @@ last_added_attr = lxml_attr; /* xmlIsID does some other stuff too that is irrelevant here. */ - if (local_name_length == 2 && local_name[0] == 'i' && local_name[1] == 'd' && attr->node.ns == LXB_NS_HTML) { + if (local_name_length == 2 && local_name[0] == 'i' && local_name[1] == 'd' && lxml_attr->ns == NULL) { if (xmlAddID(NULL, lxml_doc, value, lxml_attr) == 0) { /* If the ID already exists, the ID attribute still needs to be marked as an ID. */ lxml_attr->atype = XML_ATTRIBUTE_ID; diff -Nru php8.4-8.4.26/ext/dom/lexbor/lexbor/css/selectors/pseudo_state.c php8.4-8.4.27/ext/dom/lexbor/lexbor/css/selectors/pseudo_state.c --- php8.4-8.4.26/ext/dom/lexbor/lexbor/css/selectors/pseudo_state.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/lexbor/css/selectors/pseudo_state.c 2026-10-19 14:38:59.000000000 +0000 @@ -227,13 +227,12 @@ contains->insensitive = false; str = &contains->str; - str->data = lexbor_mraw_alloc(parser->memory->mraw, - sizeof(lexbor_str_t)); + str->data = lexbor_mraw_alloc(parser->memory->mraw, length + 1); if (str->data == NULL) { return lxb_css_parser_memory_fail(parser); } - memcpy(str->data, data, length + 1); + memcpy(str->data, data, length); str->length = length; str->data[length] = '\0'; diff -Nru php8.4-8.4.26/ext/dom/lexbor/lexbor/encoding/decode.c php8.4-8.4.27/ext/dom/lexbor/lexbor/encoding/decode.c --- php8.4-8.4.26/ext/dom/lexbor/lexbor/encoding/decode.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/lexbor/encoding/decode.c 2026-10-19 14:38:59.000000000 +0000 @@ -912,6 +912,13 @@ } LXB_ENCODING_DECODE_ERROR_END(); + if (ctx->buffer_used >= ctx->buffer_length) { + iso->prepand = iso->lead; + iso->lead = 0x00; + + return LXB_STATUS_SMALL_BUFFER; + } + byte = iso->lead; iso->lead = 0x00; @@ -1279,6 +1286,12 @@ } LXB_ENCODING_DECODE_ERROR_END(); + if (ctx->buffer_used >= ctx->buffer_length) { + ctx->u.lead = lead + 0x01; + + return LXB_STATUS_SMALL_BUFFER; + } + goto lead_state; } @@ -1723,6 +1736,13 @@ } LXB_ENCODING_DECODE_ERROR_END(); + if (ctx->buffer_used >= ctx->buffer_length) { + ctx->prepend = true; + ctx->u.gb18030.first = second; + + return LXB_STATUS_SMALL_BUFFER; + } + first = second; goto prepend_first; @@ -1756,11 +1776,8 @@ } LXB_ENCODING_DECODE_ERROR_END(); - LXB_ENCODING_DECODE_APPEND_WO_CHECK(ctx, second); - - if (ctx->buffer_used == ctx->buffer_length) { + if (ctx->buffer_used >= ctx->buffer_length) { ctx->prepend = true; - ctx->have_error = true; /* First is a fake for trigger */ ctx->u.gb18030.first = 0x01; @@ -1769,6 +1786,18 @@ return LXB_STATUS_SMALL_BUFFER; } + + LXB_ENCODING_DECODE_APPEND_WO_CHECK(ctx, second); + + if (ctx->buffer_used >= ctx->buffer_length) { + ctx->prepend = true; + + ctx->u.gb18030.first = third; + ctx->u.gb18030.second = 0x00; + ctx->u.gb18030.third = 0x00; + + return LXB_STATUS_SMALL_BUFFER; + } first = third; diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch php8.4-8.4.27/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sat, 26 Aug 2023 15:08:59 +0200 -Subject: [PATCH 1/6] Expose line and column information for use in PHP +Subject: [PATCH 1/8] Expose line and column information for use in PHP --- source/lexbor/dom/interfaces/node.h | 2 ++ diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch php8.4-8.4.27/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Mon, 14 Aug 2023 20:18:51 +0200 -Subject: [PATCH 2/6] Track implied added nodes for options use in PHP +Subject: [PATCH 2/8] Track implied added nodes for options use in PHP --- source/lexbor/html/tree.h | 3 +++ diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch php8.4-8.4.27/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Thu, 24 Aug 2023 22:57:48 +0200 -Subject: [PATCH 3/6] Patch utilities and data structure to be able to generate +Subject: [PATCH 3/8] Patch utilities and data structure to be able to generate smaller lookup tables Changed the generation script to check if everything fits in 32-bits. diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch php8.4-8.4.27/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:26:47 +0100 -Subject: [PATCH 4/6] Remove unused upper case tag static data +Subject: [PATCH 4/8] Remove unused upper case tag static data --- source/lexbor/tag/res.h | 2 ++ diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch php8.4-8.4.27/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:29:31 +0100 -Subject: [PATCH 5/6] Shrink size of static binary search tree +Subject: [PATCH 5/8] Shrink size of static binary search tree This also makes it more efficient on the data cache. --- diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch php8.4-8.4.27/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 7 Jan 2024 21:59:28 +0100 -Subject: [PATCH 6/6] Patch out unused CSS style code +Subject: [PATCH 6/8] Patch out unused CSS style code --- source/lexbor/css/rule.h | 2 ++ diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0007-CSS-fixed-heap-buffer-overflow-in-lexbor-contains-pa.patch php8.4-8.4.27/ext/dom/lexbor/patches/0007-CSS-fixed-heap-buffer-overflow-in-lexbor-contains-pa.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0007-CSS-fixed-heap-buffer-overflow-in-lexbor-contains-pa.patch 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0007-CSS-fixed-heap-buffer-overflow-in-lexbor-contains-pa.patch 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alexander Borisov +Date: Fri, 5 Jun 2026 22:34:23 +0300 +Subject: [PATCH 7/8] CSS: fixed heap buffer overflow in :lexbor-contains() + parsing. + +The contains string buffer was allocated by the size of the string +structure instead of the content length, so any value longer than +that overflowed the buffer. + +Per report from Xiansheng Cao (@HMF2021) +--- + source/lexbor/css/selectors/pseudo_state.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/source/lexbor/css/selectors/pseudo_state.c b/source/lexbor/css/selectors/pseudo_state.c +index 263ca52..2321ddf 100644 +--- a/source/lexbor/css/selectors/pseudo_state.c ++++ b/source/lexbor/css/selectors/pseudo_state.c +@@ -227,13 +227,12 @@ again: + contains->insensitive = false; + str = &contains->str; + +- str->data = lexbor_mraw_alloc(parser->memory->mraw, +- sizeof(lexbor_str_t)); ++ str->data = lexbor_mraw_alloc(parser->memory->mraw, length + 1); + if (str->data == NULL) { + return lxb_css_parser_memory_fail(parser); + } + +- memcpy(str->data, data, length + 1); ++ memcpy(str->data, data, length); + + str->length = length; + str->data[length] = '\0'; diff -Nru php8.4-8.4.26/ext/dom/lexbor/patches/0008-Encoding-fixed-buffer-overflows-in-malformed-decode-.patch php8.4-8.4.27/ext/dom/lexbor/patches/0008-Encoding-fixed-buffer-overflows-in-malformed-decode-.patch --- php8.4-8.4.26/ext/dom/lexbor/patches/0008-Encoding-fixed-buffer-overflows-in-malformed-decode-.patch 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/lexbor/patches/0008-Encoding-fixed-buffer-overflows-in-malformed-decode-.patch 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,97 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alexander Borisov +Date: Wed, 10 Jun 2026 19:50:10 +0300 +Subject: [PATCH 8/8] Encoding: fixed buffer overflows in malformed decode + replay. + +Fixed out-of-bounds writes in buffering decoders when replacement output +fills the caller-provided codepoint buffer and decoder replay continues in +the same call. + +Affected decoders: +- GB18030 malformed third/fourth byte replay. +- ISO-2022-JP malformed escape replay. +- UTF-16BE/LE invalid surrogate replay. + +Per report from @hurric9-droid on GitHub. +--- + source/lexbor/encoding/decode.c | 37 +++++++++++++++++++++++++++++---- + 1 file changed, 33 insertions(+), 4 deletions(-) + +diff --git a/source/lexbor/encoding/decode.c b/source/lexbor/encoding/decode.c +index 3e48971..05c4b9b 100644 +--- a/source/lexbor/encoding/decode.c ++++ b/source/lexbor/encoding/decode.c +@@ -912,6 +912,13 @@ lxb_encoding_decode_iso_2022_jp(lxb_encoding_decode_t *ctx, + } + LXB_ENCODING_DECODE_ERROR_END(); + ++ if (ctx->buffer_used >= ctx->buffer_length) { ++ iso->prepand = iso->lead; ++ iso->lead = 0x00; ++ ++ return LXB_STATUS_SMALL_BUFFER; ++ } ++ + byte = iso->lead; + iso->lead = 0x00; + +@@ -1279,6 +1286,12 @@ lxb_encoding_decode_utf_16(lxb_encoding_decode_t *ctx, bool is_be, + } + LXB_ENCODING_DECODE_ERROR_END(); + ++ if (ctx->buffer_used >= ctx->buffer_length) { ++ ctx->u.lead = lead + 0x01; ++ ++ return LXB_STATUS_SMALL_BUFFER; ++ } ++ + goto lead_state; + } + +@@ -1723,6 +1736,13 @@ lxb_encoding_decode_gb18030(lxb_encoding_decode_t *ctx, + } + LXB_ENCODING_DECODE_ERROR_END(); + ++ if (ctx->buffer_used >= ctx->buffer_length) { ++ ctx->prepend = true; ++ ctx->u.gb18030.first = second; ++ ++ return LXB_STATUS_SMALL_BUFFER; ++ } ++ + first = second; + + goto prepend_first; +@@ -1756,11 +1776,8 @@ lxb_encoding_decode_gb18030(lxb_encoding_decode_t *ctx, + } + LXB_ENCODING_DECODE_ERROR_END(); + +- LXB_ENCODING_DECODE_APPEND_WO_CHECK(ctx, second); +- +- if (ctx->buffer_used == ctx->buffer_length) { ++ if (ctx->buffer_used >= ctx->buffer_length) { + ctx->prepend = true; +- ctx->have_error = true; + + /* First is a fake for trigger */ + ctx->u.gb18030.first = 0x01; +@@ -1770,6 +1787,18 @@ lxb_encoding_decode_gb18030(lxb_encoding_decode_t *ctx, + return LXB_STATUS_SMALL_BUFFER; + } + ++ LXB_ENCODING_DECODE_APPEND_WO_CHECK(ctx, second); ++ ++ if (ctx->buffer_used >= ctx->buffer_length) { ++ ctx->prepend = true; ++ ++ ctx->u.gb18030.first = third; ++ ctx->u.gb18030.second = 0x00; ++ ctx->u.gb18030.third = 0x00; ++ ++ return LXB_STATUS_SMALL_BUFFER; ++ } ++ + first = third; + + goto prepend_first; diff -Nru php8.4-8.4.26/ext/dom/node.c php8.4-8.4.27/ext/dom/node.c --- php8.4-8.4.26/ext/dom/node.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/node.c 2026-10-19 14:38:59.000000000 +0000 @@ -931,6 +931,9 @@ php_dom_throw_error(NOT_FOUND_ERR, stricterror); RETURN_FALSE; } + if (refp == child) { + refp = child->next; + } } if (child->doc == NULL && parentp->doc != NULL) { @@ -940,7 +943,7 @@ php_libxml_invalidate_node_list_cache(intern->document); - if (ref != NULL) { + if (refp != NULL) { if (child->parent != NULL) { xmlUnlinkNode(child); } diff -Nru php8.4-8.4.26/ext/dom/php_dom.h php8.4-8.4.27/ext/dom/php_dom.h --- php8.4-8.4.26/ext/dom/php_dom.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/php_dom.h 2026-10-19 14:38:59.000000000 +0000 @@ -66,6 +66,7 @@ typedef struct dom_xpath_object { php_dom_xpath_callbacks xpath_callbacks; + uint32_t evaluation_depth; bool register_node_ns; dom_object dom; } dom_xpath_object; diff -Nru php8.4-8.4.26/ext/dom/tests/DOMDocument_saveHTMLFile_failed_output_encoding.phpt php8.4-8.4.27/ext/dom/tests/DOMDocument_saveHTMLFile_failed_output_encoding.phpt --- php8.4-8.4.26/ext/dom/tests/DOMDocument_saveHTMLFile_failed_output_encoding.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/DOMDocument_saveHTMLFile_failed_output_encoding.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +DOMDocument::saveHTMLFile() does not close the encoder twice when opening the output fails +--EXTENSIONS-- +dom +--FILE-- +loadHTML('value'); + $doc->getElementsByTagName('meta')->item(0)->setAttribute('content', 'text/html; charset=' . $encoding); + for ($i = 0; $i < 3; $i++) { + $result = @$doc->saveHTMLFile($filename); + var_dump($result === 0 || $result === false); + } + var_dump($doc->getElementsByTagName('body')->item(0)->textContent === 'value'); +} +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) diff -Nru php8.4-8.4.26/ext/dom/tests/DOMXPath_reconstruct_callbacks_gc.phpt php8.4-8.4.27/ext/dom/tests/DOMXPath_reconstruct_callbacks_gc.phpt --- php8.4-8.4.26/ext/dom/tests/DOMXPath_reconstruct_callbacks_gc.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/DOMXPath_reconstruct_callbacks_gc.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,50 @@ +--TEST-- +Re-constructing a DOMXPath does not expose freed php:function registrations to the cycle collector +--EXTENSIONS-- +dom +--ENV-- +USE_ZEND_ALLOC=0 +--FILE-- +loadXML(''); +$doc->registerNodeClass(DOMElement::class, GcElement::class); + +$xp = new DOMXPath($doc); +$xp->registerNamespace('php', 'http://php.net/xpath'); + +$holder = new Holder(); +$holder->self = $holder; +$xp->registerPhpFunctions(['cb' => [$holder, 'cb']]); + +$xp->query('/r/*[php:function("cb", .)]'); +unset($holder); + +/* Make the object a collector root candidate, then re-construct it: the + registration teardown must not stay reachable while it is being freed. */ +$tmp = $xp; +unset($tmp); +$xp->__construct($doc); + +var_dump($xp->query('/r/a')->length); +?> +--EXPECT-- +int(1) diff -Nru php8.4-8.4.26/ext/dom/tests/DOMXPath_reconstruct_callbacks_ns_gc.phpt php8.4-8.4.27/ext/dom/tests/DOMXPath_reconstruct_callbacks_ns_gc.phpt --- php8.4-8.4.26/ext/dom/tests/DOMXPath_reconstruct_callbacks_ns_gc.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/DOMXPath_reconstruct_callbacks_ns_gc.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,50 @@ +--TEST-- +Re-constructing a DOMXPath does not expose freed namespaced php:function registrations to the cycle collector +--EXTENSIONS-- +dom +--ENV-- +USE_ZEND_ALLOC=0 +--FILE-- +loadXML(''); +$doc->registerNodeClass(DOMElement::class, GcElement::class); + +$xp = new DOMXPath($doc); +$xp->registerNamespace('my', 'urn:my'); + +$holder = new Holder(); +$holder->self = $holder; +$xp->registerPhpFunctionNS('urn:my', 'cb', [$holder, 'cb']); + +$xp->query('/r/*[my:cb(.)]'); +unset($holder); + +/* Make the object a collector root candidate, then re-construct it: the + registration teardown must not stay reachable while it is being freed. */ +$tmp = $xp; +unset($tmp); +$xp->__construct($doc); + +var_dump($xp->query('/r/a')->length); +?> +--EXPECT-- +int(1) diff -Nru php8.4-8.4.26/ext/dom/tests/gh23365.phpt php8.4-8.4.27/ext/dom/tests/gh23365.phpt --- php8.4-8.4.26/ext/dom/tests/gh23365.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/gh23365.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,53 @@ +--TEST-- +GH-23365 (DOMNode::insertBefore($n, $n) drops the node and leaves a self-referencing sibling list) +--CREDITS-- +Alexandre Daubois +--EXTENSIONS-- +dom +--FILE-- +loadXML('text'); +$root = $doc->documentElement; + +$text = $root->firstChild; +var_dump($root->insertBefore($text, $text) === $text); +var_dump($root->childNodes->length); +var_dump($text->parentNode === $root, $text->nextSibling === $text, $text->previousSibling === $text); + +$child = $root->lastChild; +var_dump($root->insertBefore($child, $child) === $child); +var_dump($root->childNodes->length); + +echo $doc->saveXML($root), PHP_EOL; + +$doc2 = new DOMDocument(); +$doc2->loadXML(''); +$el = $doc2->documentElement; +$attr = $el->getAttributeNode('a'); +var_dump($el->insertBefore($attr, $attr) === $attr); +echo $doc2->saveXML($el), PHP_EOL; + +$doc3 = new DOMDocument(); +$root3 = $doc3->appendChild($doc3->createElement('root')); +$root3->appendChild($doc3->createTextNode('A')); +$t = $root3->appendChild($doc3->createTextNode('B')); +$root3->insertBefore($t, $t); +$root3->appendChild($t); +echo $doc3->saveXML($root3), PHP_EOL; +unset($t, $root3, $doc3); +echo "done", PHP_EOL; +?> +--EXPECT-- +bool(true) +int(2) +bool(true) +bool(false) +bool(false) +bool(true) +int(2) +text +bool(true) + +AB +done diff -Nru php8.4-8.4.26/ext/dom/tests/gh23729.phpt php8.4-8.4.27/ext/dom/tests/gh23729.phpt --- php8.4-8.4.26/ext/dom/tests/gh23729.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/gh23729.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,73 @@ +--TEST-- +GH-23729 (Use-after-free when DOMXPath is reconstructed during an evaluation) +--CREDITS-- +djarfluka +--EXTENSIONS-- +dom +--FILE-- +__construct($GLOBALS['other']); + } catch (Error $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + return 'r'; +} + +function nested() { + echo 'nested: ', $GLOBALS['xpath']->evaluate('string(/root/b)'), PHP_EOL; + return 'n'; +} + +function test(string $class, object $doc, object $other) { + $xpath = new $class($doc); + $xpath->registerNamespace('php', 'http://php.net/xpath'); + $xpath->registerPhpFunctions(); + + $GLOBALS['xpath'] = $xpath; + $GLOBALS['other'] = $other; + + var_dump($xpath->evaluate('string(php:function("reconstruct"))')); + /* The evaluation the callback tried to destroy must still be usable. */ + var_dump($xpath->evaluate('string(/root/a)')); + /* A nested evaluation must not lift the guard of the outer one. */ + var_dump($xpath->evaluate('concat(php:function("nested"), php:function("reconstruct"))')); + var_dump($xpath->query('//b[php:function("reconstruct")]')->length); + + /* Reconstructing outside of an evaluation is still allowed. */ + $xpath->__construct($other); + var_dump($xpath->document->documentElement->nodeName); +} + +$doc = new DOMDocument(); +$doc->loadXML('12'); +$other = new DOMDocument(); +$other->loadXML(''); +test(DOMXPath::class, $doc, $other); + +$doc = Dom\XMLDocument::createFromString('12'); +$other = Dom\XMLDocument::createFromString(''); +test(Dom\XPath::class, $doc, $other); + +?> +--EXPECT-- +Error: Cannot call DOMXPath::__construct() while an XPath evaluation is in progress +string(1) "r" +string(1) "1" +nested: 2 +Error: Cannot call DOMXPath::__construct() while an XPath evaluation is in progress +string(2) "nr" +Error: Cannot call DOMXPath::__construct() while an XPath evaluation is in progress +int(1) +string(5) "other" +Error: Cannot call Dom\XPath::__construct() while an XPath evaluation is in progress +string(1) "r" +string(1) "1" +nested: 2 +Error: Cannot call Dom\XPath::__construct() while an XPath evaluation is in progress +string(2) "nr" +Error: Cannot call Dom\XPath::__construct() while an XPath evaluation is in progress +int(1) +string(5) "other" diff -Nru php8.4-8.4.26/ext/dom/tests/gh23897.phpt php8.4-8.4.27/ext/dom/tests/gh23897.phpt --- php8.4-8.4.26/ext/dom/tests/gh23897.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/gh23897.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +GH-23897 (Assertion failure in php_dom_xpath_callback_dispatch() after failed registerPhpFunctions()) +--EXTENSIONS-- +dom +--FILE-- +loadXML(''); + +$xpath = new DOMXPath($dom); +$xpath->registerNamespace('php', 'http://php.net/xpath'); +try { + $xpath->registerPhpFunctions('testPhpFunction'); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +try { + var_dump($xpath->evaluate('php:function("testPhpFunction")')); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +?> +--EXPECT-- +TypeError: DOMXPath::registerPhpFunctions(): Argument #1 ($restrict) must be a callable, function "testPhpFunction" not found or invalid function name +Error: No callbacks were registered diff -Nru php8.4-8.4.26/ext/dom/tests/modern/css_selectors/lexbor_contains.phpt php8.4-8.4.27/ext/dom/tests/modern/css_selectors/lexbor_contains.phpt --- php8.4-8.4.26/ext/dom/tests/modern/css_selectors/lexbor_contains.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/modern/css_selectors/lexbor_contains.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +CSS Selectors - Pseudo classes: :lexbor-contains() with an argument longer than its string header +--EXTENSIONS-- +dom +--FILE-- +needle

', LIBXML_NOERROR); + +var_dump($dom->querySelectorAll(':lexbor-contains("' . str_repeat('needle', 1024) . '")')->length); +var_dump($dom->querySelectorAll(':lexbor-contains("needle")')->length); + +?> +--EXPECT-- +int(0) +int(0) diff -Nru php8.4-8.4.26/ext/dom/tests/modern/html/parser/HTMLDocument_unprefixed_attributes_in_foreign_content.phpt php8.4-8.4.27/ext/dom/tests/modern/html/parser/HTMLDocument_unprefixed_attributes_in_foreign_content.phpt --- php8.4-8.4.26/ext/dom/tests/modern/html/parser/HTMLDocument_unprefixed_attributes_in_foreign_content.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/modern/html/parser/HTMLDocument_unprefixed_attributes_in_foreign_content.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,59 @@ +--TEST-- +Unprefixed attributes in foreign content are in no namespace +--EXTENSIONS-- +dom +--FILE-- +

'; +$doc = Dom\HTMLDocument::createFromString($html, LIBXML_NOERROR); + +var_dump([ + 'svg #s' => $doc->getElementById('s')?->tagName, + 'math #m' => $doc->getElementById('m')?->tagName, + 'html #p' => $doc->getElementById('p')?->tagName, + 'xml:id #r' => $doc->getElementById('r')?->tagName, +]); + +foreach ($doc->getElementById('s')->attributes as $attr) { + echo $attr->name, ' => ', var_export($attr->namespaceURI, true), "\n"; +} + +$contexts = [ + 'http://www.w3.org/1999/xlink' => 'z', + 'http://www.w3.org/XML/1998/namespace' => 'z', + 'http://www.w3.org/2000/xmlns/' => 'xmlns', +]; +foreach ($contexts as $uri => $name) { + $fragment_doc = Dom\HTMLDocument::createEmpty(); + $context = $fragment_doc->createElementNS($uri, $name); + $fragment_doc->appendChild($context); + $context->innerHTML = ''; + + echo $uri, "\n ", $context->innerHTML, "\n "; + var_dump($fragment_doc->getElementById('q')?->tagName); +} +?> +--EXPECT-- +array(4) { + ["svg #s"]=> + string(3) "svg" + ["math #m"]=> + string(4) "math" + ["html #p"]=> + string(1) "P" + ["xml:id #r"]=> + NULL +} +id => NULL +xlink:href => 'http://www.w3.org/1999/xlink' +xml:lang => 'http://www.w3.org/XML/1998/namespace' +xmlns:xlink => 'http://www.w3.org/2000/xmlns/' +http://www.w3.org/1999/xlink + + string(1) "Z" +http://www.w3.org/XML/1998/namespace + + string(1) "Z" +http://www.w3.org/2000/xmlns/ + + string(1) "Z" diff -Nru php8.4-8.4.26/ext/dom/tests/oom_xpath.phpt php8.4-8.4.27/ext/dom/tests/oom_xpath.phpt --- php8.4-8.4.26/ext/dom/tests/oom_xpath.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/oom_xpath.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +DOMXPath::query() with large result set doesn't reach hard memory limit +--EXTENSIONS-- +dom +--INI-- +memory_limit=64M +--FILE-- +' . str_repeat('', 1000000) . ''); + +$xml = new DOMDocument; +$xml->load($path); +$result = (new DOMXPath($xml))->query("//a"); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d + diff -Nru php8.4-8.4.26/ext/dom/tests/xpath_reentrant_context.phpt php8.4-8.4.27/ext/dom/tests/xpath_reentrant_context.phpt --- php8.4-8.4.26/ext/dom/tests/xpath_reentrant_context.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/dom/tests/xpath_reentrant_context.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,54 @@ +--TEST-- +DOMXPath: Reentrant evaluation must restore the context node and namespaces +--EXTENSIONS-- +dom +--FILE-- +loadXML('AA2BB2B3'); +$xp = new DOMXPath($doc); +$xp->registerNamespace('php', 'http://php.net/xpath'); +$xp->registerPhpFunctions(); +$b = $doc->documentElement->lastElementChild; +$GLOBALS['xp'] = $xp; +$GLOBALS['b'] = $b; +function callback($node) { + $GLOBALS['xp']->query('x[2]', $GLOBALS['b']); + return true; +} + +echo "context node:\n"; +var_dump($xp->query('a[php:function("callback", .) and x]', $doc->documentElement)->length); +var_dump($xp->evaluate('count(a[php:function("callback", .) and x])', $doc->documentElement)); + +echo "in-scope namespace:\n"; +var_dump($xp->query('a[php:function("callback", .) and p:y]', $doc->documentElement)->length); + +echo "position and size:\n"; +var_dump($xp->query('a[php:function("callback", .) and position() = 2]', $doc->documentElement)->length); +var_dump($xp->query('a[php:function("callback", .) and last() = 2]', $doc->documentElement)->length); + +echo "after reentry:\n"; +var_dump($xp->query('a[x]', $doc->documentElement)->length); + +echo "Dom\\XPath:\n"; +$modern = Dom\XMLDocument::createFromString('AA2BB2B3'); +$GLOBALS['xp'] = new Dom\XPath($modern); +$GLOBALS['xp']->registerNamespace('php', 'http://php.net/xpath'); +$GLOBALS['xp']->registerPhpFunctions(); +$GLOBALS['b'] = $modern->documentElement->lastElementChild; +var_dump($GLOBALS['xp']->query('a[php:function("callback", .) and x]', $modern->documentElement)->length); +?> +--EXPECT-- +context node: +int(2) +float(2) +in-scope namespace: +int(1) +position and size: +int(1) +int(2) +after reentry: +int(2) +Dom\XPath: +int(2) diff -Nru php8.4-8.4.26/ext/dom/xpath.c php8.4-8.4.27/ext/dom/xpath.c --- php8.4-8.4.26/ext/dom/xpath.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/xpath.c 2026-10-19 14:38:59.000000000 +0000 @@ -126,6 +126,13 @@ RETURN_THROWS(); } + dom_xpath_object *intern = Z_XPATHOBJ_P(ZEND_THIS); + if (UNEXPECTED(intern->evaluation_depth > 0)) { + zend_throw_error(NULL, "Cannot call %s::__construct() while an XPath evaluation is in progress", + ZSTR_VAL(Z_OBJCE_P(ZEND_THIS)->name)); + RETURN_THROWS(); + } + DOM_GET_OBJ(docp, doc, xmlDocPtr, docobj); xmlXPathContextPtr ctx = xmlXPathNewContext(docp); @@ -134,7 +141,6 @@ RETURN_THROWS(); } - dom_xpath_object *intern = Z_XPATHOBJ_P(ZEND_THIS); xmlXPathContextPtr oldctx = intern->dom.ptr; if (oldctx != NULL) { php_libxml_decrement_doc_ref((php_libxml_node_object *) &intern->dom); @@ -287,6 +293,10 @@ RETURN_THROWS(); } + xmlNodePtr old_node = ctxp->node; + xmlNsPtr *old_namespaces = ctxp->namespaces; + int old_nsNr = ctxp->nsNr; + ctxp->node = nodep; php_dom_in_scope_ns in_scope_ns; @@ -301,13 +311,15 @@ ctxp->nsNr = in_scope_ns.count; } + intern->evaluation_depth++; xmlXPathObjectPtr xpathobjp = xmlXPathEvalExpression(BAD_CAST expr, ctxp); - ctxp->node = NULL; + intern->evaluation_depth--; + ctxp->node = old_node; + ctxp->namespaces = old_namespaces; + ctxp->nsNr = old_nsNr; if (register_node_ns && nodep != NULL) { php_dom_in_scope_ns_destroy(&in_scope_ns); - ctxp->namespaces = NULL; - ctxp->nsNr = 0; } if (! xpathobjp) { @@ -337,7 +349,9 @@ if (xpathobjp->type == XPATH_NODESET && NULL != (nodesetp = xpathobjp->nodesetval) && nodesetp->nodeNr) { array_init_size(&retval, nodesetp->nodeNr); - zend_hash_real_init_packed(Z_ARRVAL_P(&retval)); + if (zend_hash_real_finit_packed(Z_ARRVAL(retval), /* fallible */ true) != SUCCESS) { + goto oom_nodeset; + } for (int i = 0; i < nodesetp->nodeNr; i++) { xmlNodePtr node = nodesetp->nodeTab[i]; zval child; @@ -367,6 +381,9 @@ php_dom_create_object(node, &child, &intern->dom); } add_next_index_zval(&retval, &child); + if (ZEND_HAS_OOM()) { + goto oom_nodeset; + } } } else { ZVAL_EMPTY_ARRAY(&retval); @@ -375,6 +392,13 @@ nodeobj = Z_DOMOBJ_P(return_value); dom_xpath_iter(&retval, nodeobj); break; + +oom_nodeset: + zval_ptr_dtor(&retval); + xmlXPathFreeObject(xpathobjp); + zval_ptr_dtor(return_value); + ZVAL_NULL(return_value); + RETURN_OOM(); } case XPATH_BOOLEAN: diff -Nru php8.4-8.4.26/ext/dom/xpath_callbacks.c php8.4-8.4.27/ext/dom/xpath_callbacks.c --- php8.4-8.4.26/ext/dom/xpath_callbacks.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/dom/xpath_callbacks.c 2026-10-19 14:38:59.000000000 +0000 @@ -76,18 +76,22 @@ PHP_DOM_EXPORT void php_dom_xpath_callbacks_dtor(php_dom_xpath_callbacks *registry) { if (registry->php_ns) { - php_dom_xpath_callback_ns_dtor(registry->php_ns); - efree(registry->php_ns); + php_dom_xpath_callback_ns *php_ns = registry->php_ns; + registry->php_ns = NULL; + php_dom_xpath_callback_ns_dtor(php_ns); + efree(php_ns); } if (registry->namespaces) { + HashTable *namespaces = registry->namespaces; + registry->namespaces = NULL; php_dom_xpath_callback_ns *ns; - ZEND_HASH_MAP_FOREACH_PTR(registry->namespaces, ns) { + ZEND_HASH_MAP_FOREACH_PTR(namespaces, ns) { php_dom_xpath_callback_ns_dtor(ns); efree(ns); } ZEND_HASH_FOREACH_END(); - zend_hash_destroy(registry->namespaces); - FREE_HASHTABLE(registry->namespaces); + zend_hash_destroy(namespaces); + FREE_HASHTABLE(namespaces); } php_dom_xpath_callbacks_clean_node_list(registry); } @@ -403,7 +407,7 @@ { zval callback_retval; - if (UNEXPECTED(ns == NULL)) { + if (UNEXPECTED(ns == NULL || ns->mode == PHP_DOM_REG_FUNC_MODE_NONE)) { zend_throw_error(NULL, "No callbacks were registered"); return FAILURE; } diff -Nru php8.4-8.4.26/ext/exif/exif.c php8.4-8.4.27/ext/exif/exif.c --- php8.4-8.4.26/ext/exif/exif.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/exif/exif.c 2026-10-19 14:38:59.000000000 +0000 @@ -2147,7 +2147,10 @@ EXIF_ERRLOG_FSREALLOC(ImageInfo) return -1; } - tmp = safe_erealloc(ImageInfo->file.list[section_index].data, 1, size, 0); + tmp = safe_ferealloc(ImageInfo->file.list[section_index].data, 1, size, 0, /* fallible */ true); + if (!tmp) { + return -1; + } ImageInfo->file.list[section_index].data = tmp; ImageInfo->file.list[section_index].size = size; return 0; @@ -2262,7 +2265,11 @@ break; } if (length>1) { - info_value->list = safe_emalloc(length, sizeof(image_info_value), 0); + info_value->list = safe_femalloc(length, sizeof(image_info_value), 0, /* fallible */ true); + if (!info_value->list) { + info_data->length = 0; + return; + } } else { info_value = &info_data->value; } @@ -2448,13 +2455,13 @@ /* {{{ add_assoc_image_info * Add image_info to associative array value. */ -static void add_assoc_image_info(zval *value, int sub_array, image_info_type *image_info, int section_index) +static zend_result add_assoc_image_info(zval *value, int sub_array, image_info_type *image_info, int section_index) { char buffer[64], uname[64]; int idx = 0, unknown = 0; if (!image_info->info_list[section_index].count) { - return; + return SUCCESS; } zval tmpi; @@ -2592,6 +2599,12 @@ } break; } + if (ZEND_HAS_OOM()) { + if (l > 1) { + zval_ptr_dtor(&array); + } + goto failure; + } } if (l > 1) { add_assoc_zval(&tmpi, name, &array); @@ -2600,10 +2613,20 @@ } } } + if (ZEND_HAS_OOM()) { + goto failure; + } } if (sub_array) { add_assoc_zval(value, exif_get_sectionname(section_index), &tmpi); } + return ZEND_HAS_OOM() ? FAILURE : SUCCESS; + +failure: + if (sub_array) { + zval_ptr_dtor(&tmpi); + } + return FAILURE; } /* }}} */ @@ -2872,6 +2895,10 @@ if (!ImageInfo->read_thumbnail || !ImageInfo->Thumbnail.offset || !ImageInfo->Thumbnail.size) { return; /* ignore this call */ } + /* new_size below sums the accumulated tag values, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + return; + } #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Thumbnail: filetype = %d", ImageInfo->Thumbnail.filetype); #endif @@ -2948,6 +2975,17 @@ } /* }}} */ +/* Rejects a thumbnail whose data is not actually present in the file. */ +static bool exif_thumbnail_in_file(image_info_type *ImageInfo) +{ + if (ImageInfo->Thumbnail.size > ImageInfo->FileSize + || ImageInfo->Thumbnail.offset > ImageInfo->FileSize - ImageInfo->Thumbnail.size) { + EXIF_ERRLOG_THUMBEOF(ImageInfo) + return false; + } + return true; +} + /* {{{ exif_thumbnail_extract * Grab the thumbnail, corrected */ static void exif_thumbnail_extract(image_info_type *ImageInfo, const exif_offset_info *info) { @@ -3305,7 +3343,10 @@ } if (byte_count>sizeof(cbuf)) { /* mark as outside range and get buffer */ - value_ptr = safe_emalloc(byte_count, 1, 0); + value_ptr = safe_femalloc(byte_count, 1, 0, /* fallible */ true); + if (!value_ptr) { + return false; + } outside = value_ptr; } else { /* In most cases we only access a small range so @@ -3593,6 +3634,10 @@ exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "corrupt EXIF header: maximum directory nesting level reached"); return false; } + /* Each tag may retain up to FileSize bytes, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + return false; + } ImageInfo->ifd_nesting_level++; result = exif_process_IFD_TAG_impl(ImageInfo, dir_entry, info, displacement, section_index, ReadNextIFD, tag_table); ImageInfo->ifd_nesting_level--; @@ -3792,6 +3837,10 @@ jpeg_sof_info sof_info; while (true) { + /* Every section is retained, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + return false; + } #ifdef EXIF_DEBUG fpos = php_stream_tell(ImageInfo->infile); exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Needing section %d @ 0x%08X", ImageInfo->file.count, fpos); @@ -4201,8 +4250,11 @@ #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "%s THUMBNAIL @0x%04X + 0x%04X", ImageInfo->Thumbnail.data ? "Ignore" : "Read", ImageInfo->Thumbnail.offset, ImageInfo->Thumbnail.size); #endif - if (!ImageInfo->Thumbnail.data) { - ImageInfo->Thumbnail.data = safe_emalloc(ImageInfo->Thumbnail.size, 1, 0); + if (!ImageInfo->Thumbnail.data && exif_thumbnail_in_file(ImageInfo)) { + ImageInfo->Thumbnail.data = safe_femalloc(ImageInfo->Thumbnail.size, 1, 0, /* fallible */ true); + if (!ImageInfo->Thumbnail.data) { + return false; + } php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET); fgot = exif_read_from_stream_file_looped(ImageInfo->infile, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size); if (fgot != ImageInfo->Thumbnail.size) { @@ -4241,8 +4293,12 @@ #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "%s THUMBNAIL @0x%04X + 0x%04X", ImageInfo->Thumbnail.data ? "Ignore" : "Read", ImageInfo->Thumbnail.offset, ImageInfo->Thumbnail.size); #endif - if (!ImageInfo->Thumbnail.data && ImageInfo->Thumbnail.offset && ImageInfo->Thumbnail.size && ImageInfo->read_thumbnail) { - ImageInfo->Thumbnail.data = safe_emalloc(ImageInfo->Thumbnail.size, 1, 0); + if (!ImageInfo->Thumbnail.data && ImageInfo->Thumbnail.offset && ImageInfo->Thumbnail.size && ImageInfo->read_thumbnail + && exif_thumbnail_in_file(ImageInfo)) { + ImageInfo->Thumbnail.data = safe_femalloc(ImageInfo->Thumbnail.size, 1, 0, /* fallible */ true); + if (!ImageInfo->Thumbnail.data) { + return false; + } php_stream_seek(ImageInfo->infile, ImageInfo->Thumbnail.offset, SEEK_SET); fgot = exif_read_from_stream_file_looped(ImageInfo->infile, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size); if (fgot != ImageInfo->Thumbnail.size) { @@ -4282,6 +4338,9 @@ if (ImageInfo->ifd_nesting_level > MAX_IFD_NESTING_LEVEL) { return false; } + if (ZEND_HAS_OOM()) { + return false; + } ImageInfo->ifd_nesting_level++; result = exif_process_IFD_in_TIFF_impl(ImageInfo, dir_offset, section_index); ImageInfo->ifd_nesting_level--; @@ -4676,19 +4735,21 @@ exif_error_docref(NULL EXIFERR_CC, &ImageInfo, E_NOTICE, "Adding image infos"); #endif - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_FILE ); - add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_COMPUTED ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_ANY_TAG ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_IFD0 ); - add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_THUMBNAIL ); - add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_COMMENT ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_EXIF ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_GPS ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_INTEROP ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_FPIX ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_APP12 ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_WINXP ); - add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_MAKERNOTE ); + if (UNEXPECTED(add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_FILE) == FAILURE + || add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_COMPUTED ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_ANY_TAG ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_IFD0 ) == FAILURE + || add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_THUMBNAIL ) == FAILURE + || add_assoc_image_info(return_value, 1, &ImageInfo, SECTION_COMMENT ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_EXIF ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_GPS ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_INTEROP ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_FPIX ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_APP12 ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_WINXP ) == FAILURE + || add_assoc_image_info(return_value, sub_arrays, &ImageInfo, SECTION_MAKERNOTE ) == FAILURE)) { + goto oom; + } #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, &ImageInfo, E_NOTICE, "Discarding info"); @@ -4699,6 +4760,13 @@ #ifdef EXIF_DEBUG php_error_docref1(NULL, (Z_TYPE_P(stream) == IS_RESOURCE ? "" : Z_STRVAL_P(stream)), E_NOTICE, "Done"); #endif + return; + +oom: + exif_discard_imageinfo(&ImageInfo); + zval_ptr_dtor(return_value); + ZVAL_NULL(return_value); + RETURN_OOM(); } /* }}} */ @@ -4763,7 +4831,7 @@ exif_error_docref(NULL EXIFERR_CC, &ImageInfo, E_NOTICE, "Returning thumbnail(%d)", ImageInfo.Thumbnail.size); #endif - ZVAL_STRINGL(return_value, ImageInfo.Thumbnail.data, ImageInfo.Thumbnail.size); + RETVAL_FSTRINGL(ImageInfo.Thumbnail.data, ImageInfo.Thumbnail.size); if (arg_c >= 3) { if (!ImageInfo.Thumbnail.width || !ImageInfo.Thumbnail.height) { if (!exif_scan_thumbnail(&ImageInfo)) { diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_big_thumbnail.inc php8.4-8.4.27/ext/exif/tests/oom_exif_big_thumbnail.inc --- php8.4-8.4.26/ext/exif/tests/oom_exif_big_thumbnail.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_big_thumbnail.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,47 @@ + real data + $t .= pack('vvVV', 0x0117, 4, 1, $size); // StripByteCounts + $t .= pack('V', 0); + + $fp = fopen($path, 'wb'); + fwrite($fp, $t); + $chunk = str_repeat("\xAB", 1024 * 1024); + for ($written = 0; $written < $size; $written += strlen($chunk)) { + fwrite($fp, $chunk); + } + fclose($fp); +} + +/* Writes a TIFF with a single tag of $count elements of $format, whose value + * really is present in the file. $bytes_per is the format's element size. */ +function oom_exif_write_big_tag(string $path, int $tag, int $format, int $count, int $bytes_per = 1): void +{ + $payload_off = 8 + 2 + 12 + 4; + $t = "II*\x00" . pack('V', 8); + $t .= pack('v', 1); + $t .= pack('vvVV', $tag, $format, $count, $payload_off); + $t .= pack('V', 0); + + $fp = fopen($path, 'wb'); + fwrite($fp, $t); + $size = $count * $bytes_per; + $chunk = str_repeat("\x01", 1024 * 1024); + for ($written = 0; $written < $size; $written += strlen($chunk)) { + fwrite($fp, substr($chunk, 0, min(strlen($chunk), $size - $written))); + } + fclose($fp); +} diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_numeric_metadata.phpt php8.4-8.4.27/ext/exif/tests/oom_exif_numeric_metadata.phpt --- php8.4-8.4.26/ext/exif/tests/oom_exif_numeric_metadata.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_numeric_metadata.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +exif_read_data() with expanded numeric metadata doesn't reach hard limit +--EXTENSIONS-- +exif +--INI-- +memory_limit=128M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_read_data_tags.phpt php8.4-8.4.27/ext/exif/tests/oom_exif_read_data_tags.phpt --- php8.4-8.4.26/ext/exif/tests/oom_exif_read_data_tags.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_read_data_tags.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +exif_read_data() doesn't reach hard limit when tag values accumulate +--EXTENSIONS-- +exif +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_scan_jpeg_header.phpt php8.4-8.4.27/ext/exif/tests/oom_exif_scan_jpeg_header.phpt --- php8.4-8.4.26/ext/exif/tests/oom_exif_scan_jpeg_header.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_scan_jpeg_header.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +exif_read_data() doesn't reach hard limit when JPEG sections accumulate +--EXTENSIONS-- +exif +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_thumbnail_large_file_001.phpt php8.4-8.4.27/ext/exif/tests/oom_exif_thumbnail_large_file_001.phpt --- php8.4-8.4.26/ext/exif/tests/oom_exif_thumbnail_large_file_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_thumbnail_large_file_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +exif_thumbnail() doesn't reach hard limit when the thumbnail is larger than the memory limit +--EXTENSIONS-- +exif +--INI-- +memory_limit=8M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_thumbnail_large_file_002.phpt php8.4-8.4.27/ext/exif/tests/oom_exif_thumbnail_large_file_002.phpt --- php8.4-8.4.26/ext/exif/tests/oom_exif_thumbnail_large_file_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_thumbnail_large_file_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +exif_read_data() doesn't reach hard limit reading a thumbnail larger than the hard limit +--EXTENSIONS-- +exif +--INI-- +memory_limit=8M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/exif/tests/oom_exif_thumbnail_tiff.phpt php8.4-8.4.27/ext/exif/tests/oom_exif_thumbnail_tiff.phpt --- php8.4-8.4.26/ext/exif/tests/oom_exif_thumbnail_tiff.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/exif/tests/oom_exif_thumbnail_tiff.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +exif_thumbnail() rejects a TIFF thumbnail that is not present in the file +--EXTENSIONS-- +exif +--INI-- +memory_limit=128M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Warning: exif_thumbnail(%s): Thumbnail goes IFD boundary or end of file reached in %s on line %d +bool(false) diff -Nru php8.4-8.4.26/ext/ffi/ffi.c php8.4-8.4.27/ext/ffi/ffi.c --- php8.4-8.4.26/ext/ffi/ffi.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/ffi/ffi.c 2026-10-19 14:38:59.000000000 +0000 @@ -923,9 +923,7 @@ zend_ffi_callback_data *callback_data = Z_PTR_P(zv); ffi_closure_free(callback_data->callback); - if (callback_data->fcc.function_handler->common.fn_flags & ZEND_ACC_CLOSURE) { - OBJ_RELEASE(ZEND_CLOSURE_OBJECT(callback_data->fcc.function_handler)); - } + zend_fcc_dtor(&callback_data->fcc); for (int i = 0; i < callback_data->arg_count; ++i) { if (callback_data->arg_types[i]->type == FFI_TYPE_STRUCT) { efree(callback_data->arg_types[i]); @@ -941,18 +939,12 @@ static void zend_ffi_callback_trampoline(ffi_cif* cif, void* ret, void** args, void* data) /* {{{ */ { zend_ffi_callback_data *callback_data = (zend_ffi_callback_data*)data; - zend_fcall_info fci; + zval *params; zend_ffi_type *ret_type; zval retval; ALLOCA_FLAG(use_heap) - fci.size = sizeof(zend_fcall_info); - ZVAL_UNDEF(&fci.function_name); - fci.retval = &retval; - fci.params = do_alloca(sizeof(zval) *callback_data->arg_count, use_heap); - fci.object = NULL; - fci.param_count = callback_data->arg_count; - fci.named_params = NULL; + params = do_alloca(sizeof(zval) *callback_data->arg_count, use_heap); if (callback_data->type->func.args) { int n = 0; @@ -960,24 +952,21 @@ ZEND_HASH_PACKED_FOREACH_PTR(callback_data->type->func.args, arg_type) { arg_type = ZEND_FFI_TYPE(arg_type); - zend_ffi_cdata_to_zval(NULL, args[n], arg_type, BP_VAR_R, &fci.params[n], (zend_ffi_flags)(arg_type->attr & ZEND_FFI_ATTR_CONST), 0, 0); + zend_ffi_cdata_to_zval(NULL, args[n], arg_type, BP_VAR_R, ¶ms[n], (zend_ffi_flags)(arg_type->attr & ZEND_FFI_ATTR_CONST), 0, 0); n++; } ZEND_HASH_FOREACH_END(); } - ZVAL_UNDEF(&retval); - if (zend_call_function(&fci, &callback_data->fcc) != SUCCESS) { - zend_throw_error(zend_ffi_exception_ce, "Cannot call callback"); - } + zend_call_known_fcc(&callback_data->fcc, &retval, callback_data->arg_count, params, NULL); if (callback_data->arg_count) { int n = 0; for (n = 0; n < callback_data->arg_count; n++) { - zval_ptr_dtor(&fci.params[n]); + zval_ptr_dtor(¶ms[n]); } } - free_alloca(fci.params, use_heap); + free_alloca(params, use_heap); if (EG(exception)) { zend_error_noreturn(E_ERROR, "Throwing from FFI callbacks is not allowed"); @@ -1035,12 +1024,14 @@ arg_count = type->func.args ? zend_hash_num_elements(type->func.args) : 0; if (arg_count < fcc.function_handler->common.required_num_args) { zend_throw_error(zend_ffi_exception_ce, "Attempt to assign an invalid callback, insufficient number of arguments"); + zend_release_fcall_info_cache(&fcc); return NULL; } callback = ffi_closure_alloc(sizeof(ffi_closure), &code); if (!callback) { zend_throw_error(zend_ffi_exception_ce, "Cannot allocate callback"); + zend_release_fcall_info_cache(&fcc); return NULL; } @@ -1067,6 +1058,7 @@ } efree(callback_data); ffi_closure_free(callback); + zend_release_fcall_info_cache(&fcc); return NULL; } n++; @@ -1082,6 +1074,7 @@ } efree(callback_data); ffi_closure_free(callback); + zend_release_fcall_info_cache(&fcc); return NULL; } @@ -1103,6 +1096,7 @@ } efree(callback_data); ffi_closure_free(callback); + zend_release_fcall_info_cache(&fcc); return NULL; } @@ -1112,9 +1106,7 @@ } zend_hash_next_index_insert_ptr(FFI_G(callbacks), callback_data); - if (fcc.function_handler->common.fn_flags & ZEND_ACC_CLOSURE) { - GC_ADDREF(ZEND_CLOSURE_OBJECT(fcc.function_handler)); - } + zend_fcc_addref(&callback_data->fcc); return code; } diff -Nru php8.4-8.4.26/ext/ffi/tests/callback_create_failure.phpt php8.4-8.4.27/ext/ffi/tests/callback_create_failure.phpt --- php8.4-8.4.26/ext/ffi/tests/callback_create_failure.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/ffi/tests/callback_create_failure.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +FFI callback creation failure releases a __call trampoline +--EXTENSIONS-- +ffi +--INI-- +ffi.enable=1 +--FILE-- +new("struct S"); +try { + $s->f = [new Callback(), 'compare']; +} catch (FFI\Exception $e) { + echo $e::class, ": ", $e->getMessage(), PHP_EOL; +} +echo "Done\n"; +?> +--EXPECT-- +FFI\Exception: Cannot prepare callback CIF +Done diff -Nru php8.4-8.4.26/ext/ffi/tests/callback_dtor_call.phpt php8.4-8.4.27/ext/ffi/tests/callback_dtor_call.phpt --- php8.4-8.4.26/ext/ffi/tests/callback_dtor_call.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/ffi/tests/callback_dtor_call.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +FFI callback bound to a __call() trampoline +--EXTENSIONS-- +ffi +--INI-- +ffi.enable=1 +--FILE-- +new("struct S"); +$s->g = [$callback, 'unused']; +$s->f = [$callback, 'double']; +var_dump(($s->f)(1)); +var_dump(($s->f)(2)); +var_dump(($s->f)(3)); +?> +--EXPECT-- +double(1) +int(2) +double(2) +int(4) +double(3) +int(6) diff -Nru php8.4-8.4.26/ext/ffi/tests/callback_object_lifetime.phpt php8.4-8.4.27/ext/ffi/tests/callback_object_lifetime.phpt --- php8.4-8.4.26/ext/ffi/tests/callback_object_lifetime.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/ffi/tests/callback_object_lifetime.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +FFI callback keeps the object of an array callable alive +--EXTENSIONS-- +ffi +--INI-- +ffi.enable=1 +--FILE-- +factor * $x; + } + + public function __destruct() { + echo "Callback::__destruct\n"; + } +} + +$s = $ffi->new("struct S"); +$s->f = [new Callback(), 'multiply']; +var_dump(($s->f)(2)); +echo "Done\n"; +?> +--EXPECT-- +int(42) +Done +Callback::__destruct diff -Nru php8.4-8.4.26/ext/fileinfo/libmagic/apprentice.c php8.4-8.4.27/ext/fileinfo/libmagic/apprentice.c --- php8.4-8.4.26/ext/fileinfo/libmagic/apprentice.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/fileinfo/libmagic/apprentice.c 2026-10-19 14:38:59.000000000 +0000 @@ -184,7 +184,7 @@ { NULL, 0, NULL } }; -#if __has_attribute(nonstring) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 15 +#if __has_attribute(nonstring) && defined(__GNUC__) && ((!defined(__clang__) && __GNUC__ >= 15) || (defined(__clang_major__) && __clang_major__ >= 20)) # define ZEND_NONSTRING __attribute__((nonstring)) #else # define ZEND_NONSTRING diff -Nru php8.4-8.4.26/ext/fileinfo/libmagic/cdf.c php8.4-8.4.27/ext/fileinfo/libmagic/cdf.c --- php8.4-8.4.26/ext/fileinfo/libmagic/cdf.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/fileinfo/libmagic/cdf.c 2026-10-19 14:38:59.000000000 +0000 @@ -93,9 +93,44 @@ CDF_TOLE8(CAST(uint64_t, x)))) #define CDF_GETUINT32(x, y) cdf_getuint32(x, y) -#define CDF_MALLOC(n) emalloc(n) -#define CDF_REALLOC(p, n) erealloc(p, n) -#define CDF_CALLOC(n, u) ecalloc(n, u) +#define CDF_MALLOC(n) cdf_malloc(__FILE__, __LINE__, (n)) +#define CDF_REALLOC(p, n) cdf_realloc(__FILE__, __LINE__, (p), (n)) +#define CDF_CALLOC(n, u) cdf_calloc(__FILE__, __LINE__, (n), (u)) + +/*ARGSUSED*/ +static void * +cdf_malloc(const char *file, + size_t line, size_t n) +{ + DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u\n", + file, line, __func__, n)); + return femalloc(n, /* fallible */ true); +} + +/*ARGSUSED*/ +static void * +cdf_realloc(const char *file, + size_t line, void *p, size_t n) +{ + DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u\n", + file, line, __func__, n)); + return safe_ferealloc(p, 1, n, 0, /* fallible */ true); +} + +/*ARGSUSED*/ +static void * +cdf_calloc(const char *file, + size_t line, size_t n, size_t u) +{ + DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u %" + SIZE_T_FORMAT "u\n", file, line, __func__, n, u)); + void *data = safe_femalloc(n, u, 0, /* fallible */ true); + if (!data) { + return NULL; + } + memset(data, 0, n * u); + return data; +} #if defined(HAVE_BYTESWAP_H) # define _cdf_tole2(x) bswap_16(x) diff -Nru php8.4-8.4.26/ext/fileinfo/libmagic.patch php8.4-8.4.27/ext/fileinfo/libmagic.patch --- php8.4-8.4.26/ext/fileinfo/libmagic.patch 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/fileinfo/libmagic.patch 2026-10-19 14:38:59.000000000 +0000 @@ -1,6 +1,6 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c --- libmagic.orig/apprentice.c 2023-07-17 16:38:35.000000000 +0200 -+++ libmagic/apprentice.c 2024-06-09 00:31:40.345830732 +0200 ++++ libmagic/apprentice.c 2026-09-30 22:55:28.668770846 +0200 @@ -48,7 +48,9 @@ #ifdef QUICK #include @@ -22,16 +22,22 @@ file_private void apprentice_unmap(struct magic_map *); file_private int apprentice_compile(struct magic_set *, struct magic_map *, const char *); -@@ -185,6 +184,8 @@ +@@ -185,6 +184,14 @@ { NULL, 0, NULL } }; ++#if __has_attribute(nonstring) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 15 ++# define ZEND_NONSTRING __attribute__((nonstring)) ++#else ++# define ZEND_NONSTRING ++#endif ++ +#include "../data_file.c" + #ifdef COMPILE_ONLY int main(int, char *[]); -@@ -445,21 +446,13 @@ +@@ -445,21 +452,13 @@ struct mlist *ml; mlp->map = NULL; @@ -55,7 +61,7 @@ mlp->prev->next = ml; ml->prev = mlp->prev; ml->next = mlp; -@@ -537,13 +530,19 @@ +@@ -537,13 +536,19 @@ return; for (i = 0; i < MAGIC_SETS; i++) mlist_free(ms->mlist[i]); @@ -79,7 +85,7 @@ } file_protected struct magic_set * -@@ -552,7 +551,7 @@ +@@ -552,7 +557,7 @@ struct magic_set *ms; size_t i, len; @@ -88,7 +94,7 @@ sizeof(*ms)))) == NULL) return NULL; -@@ -565,7 +564,7 @@ +@@ -565,7 +570,7 @@ ms->o.blen = 0; len = (ms->c.len = 10) * sizeof(*ms->c.li); @@ -97,7 +103,7 @@ goto free; ms->event_flags = 0; -@@ -589,49 +588,35 @@ +@@ -589,49 +594,35 @@ #endif return ms; free: @@ -160,7 +166,7 @@ return NULL; } mlist->next = mlist->prev = mlist; -@@ -652,21 +637,9 @@ +@@ -652,21 +643,9 @@ file_private void mlist_free_one(struct mlist *ml) { @@ -183,7 +189,7 @@ } file_private void -@@ -685,50 +658,6 @@ +@@ -685,50 +664,6 @@ mlist_free_one(mlist); } @@ -234,7 +240,7 @@ /* const char *fn: list of magic files and directories */ file_protected int file_apprentice(struct magic_set *ms, const char *fn, int action) -@@ -739,12 +668,28 @@ +@@ -739,12 +674,28 @@ (void)file_reset(ms, 0); @@ -264,7 +270,7 @@ file_oomem(ms, strlen(fn)); return -1; } -@@ -757,7 +702,7 @@ +@@ -757,7 +708,7 @@ mlist_free(ms->mlist[j]); ms->mlist[j] = NULL; } @@ -273,7 +279,7 @@ return -1; } } -@@ -774,7 +719,7 @@ +@@ -774,7 +725,7 @@ fn = p; } @@ -282,7 +288,7 @@ if (errs == -1) { for (i = 0; i < MAGIC_SETS; i++) { -@@ -1289,7 +1234,7 @@ +@@ -1289,7 +1240,7 @@ size_t incr = mset[i].max + ALLOC_INCR; if ((mp = CAST(struct magic_entry *, @@ -291,7 +297,7 @@ NULL) { file_oomem(ms, sizeof(*mp) * incr); return -1; -@@ -1312,13 +1257,19 @@ +@@ -1312,13 +1263,19 @@ load_1(struct magic_set *ms, int action, const char *fn, int *errs, struct magic_entry_set *mset) { @@ -315,7 +321,7 @@ if (errno != ENOENT) file_error(ms, errno, "cannot read magic file `%s'", fn); -@@ -1328,8 +1279,7 @@ +@@ -1328,8 +1285,7 @@ memset(&me, 0, sizeof(me)); /* read and parse this file */ @@ -325,7 +331,7 @@ if (len == 0) /* null line, garbage, etc */ continue; if (line[len - 1] == '\n') { -@@ -1388,8 +1338,8 @@ +@@ -1388,8 +1344,8 @@ } if (me.mp) (void)addentry(ms, &me, mset); @@ -336,7 +342,7 @@ } /* -@@ -1474,7 +1424,7 @@ +@@ -1474,7 +1430,7 @@ } slen = sizeof(**ma) * mentrycount; @@ -345,7 +351,7 @@ file_oomem(ms, slen); return -1; } -@@ -1496,8 +1446,8 @@ +@@ -1496,8 +1452,8 @@ if (me == NULL) return; for (i = 0; i < nme; i++) @@ -356,7 +362,7 @@ } file_private struct magic_map * -@@ -1506,18 +1456,19 @@ +@@ -1506,18 +1462,19 @@ int errs = 0; uint32_t i, j; size_t files = 0, maxfiles = 0; @@ -381,7 +387,7 @@ { file_oomem(ms, sizeof(*map)); return NULL; -@@ -1529,52 +1480,50 @@ +@@ -1529,52 +1486,50 @@ (void)fprintf(stderr, "%s\n", usg_hdr); /* load directory or file */ @@ -453,7 +459,7 @@ } } else load_1(ms, action, fn, &errs, mset); -@@ -1612,7 +1561,6 @@ +@@ -1612,7 +1567,6 @@ } out: @@ -461,7 +467,7 @@ for (j = 0; j < MAGIC_SETS; j++) magic_entry_free(mset[j].me, mset[j].count); -@@ -2060,7 +2008,7 @@ +@@ -2060,7 +2014,7 @@ if (me->cont_count == me->max_count) { struct magic *nm; size_t cnt = me->max_count + ALLOC_CHUNK; @@ -470,7 +476,7 @@ sizeof(*nm) * cnt))) == NULL) { file_oomem(ms, sizeof(*nm) * cnt); return -1; -@@ -2075,7 +2023,7 @@ +@@ -2075,7 +2029,7 @@ static const size_t len = sizeof(*m) * ALLOC_CHUNK; if (me->mp != NULL) return 1; @@ -479,7 +485,7 @@ file_oomem(ms, len); return -1; } -@@ -2301,7 +2249,7 @@ +@@ -2301,7 +2255,7 @@ m->mask_op = 0; if (*l == '~') { @@ -488,7 +494,7 @@ m->mask_op |= FILE_OPINVERSE; else if (ms->flags & MAGIC_CHECK) file_magwarn(ms, "'~' invalid for string types"); -@@ -2310,7 +2258,7 @@ +@@ -2310,7 +2264,7 @@ m->str_range = 0; m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0; if ((op = get_op(*l)) != -1) { @@ -497,7 +503,7 @@ int r; if (op != FILE_OPDIVIDE) { -@@ -2497,7 +2445,7 @@ +@@ -2497,7 +2451,7 @@ file_private int parse_extra(struct magic_set *ms, struct magic_entry *me, const char *line, @@ -506,7 +512,7 @@ int nt) { size_t i; -@@ -2860,13 +2808,19 @@ +@@ -2860,13 +2814,19 @@ return -1; } if (m->type == FILE_REGEX) { @@ -532,7 +538,7 @@ } return 0; default: -@@ -3245,120 +3199,83 @@ +@@ -3245,120 +3205,83 @@ } /* @@ -576,21 +582,21 @@ + php_stream *stream = NULL; + php_stream_statbuf st; + -+ - fd = -1; - if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) { ++ + if ((map = CAST(struct magic_map *, ecalloc(1, sizeof(*map)))) == NULL) { file_oomem(ms, sizeof(*map)); - goto error; + return NULL; - } -- map->type = MAP_TYPE_USER; /* unspecified */ ++ } + + if (fn == NULL) { + map->p = (void *)&php_magic_database; + goto internal_loaded; -+ } + } +- map->type = MAP_TYPE_USER; /* unspecified */ + +#ifdef PHP_WIN32 + /* Don't bother on windows with php_stream_open_wrapper, @@ -663,10 +669,12 @@ goto error; } -#endif -- + - free(dbname); - return map; -- ++ php_stream_close(stream); ++ stream = NULL; + -error: - if (fd != -1) - (void)close(fd); @@ -674,7 +682,7 @@ - free(dbname); - return rv; -} - +- -file_private int -check_buffer(struct magic_set *ms, struct magic_map *map, const char *dbname) -{ @@ -682,9 +690,7 @@ - uint32_t entries, nentries; - uint32_t version; - int i, needsbyteswap; -+ php_stream_close(stream); -+ stream = NULL; - +- - ptr = CAST(uint32_t *, map->p); +internal_loaded: + ptr = (uint32_t *)(void *)map->p; @@ -696,7 +702,7 @@ } needsbyteswap = 1; } else -@@ -3368,17 +3285,29 @@ +@@ -3368,17 +3291,29 @@ else version = ptr[1]; if (version != VERSIONNO) { @@ -735,7 +741,7 @@ } map->magic[0] = CAST(struct magic *, map->p) + 1; nentries = 0; -@@ -3391,15 +3320,29 @@ +@@ -3391,15 +3326,29 @@ map->magic[i + 1] = map->magic[i] + map->nmagic[i]; nentries += map->nmagic[i]; } @@ -768,7 +774,7 @@ } /* -@@ -3410,7 +3353,7 @@ +@@ -3410,7 +3359,7 @@ { static const size_t nm = sizeof(*map->nmagic) * MAGIC_SETS; static const size_t m = sizeof(**map->magic); @@ -777,7 +783,7 @@ size_t len; char *dbname; int rv = -1; -@@ -3425,8 +3368,10 @@ +@@ -3425,8 +3374,10 @@ if (dbname == NULL) goto out; @@ -790,7 +796,7 @@ file_error(ms, errno, "cannot open `%s'", dbname); goto out; } -@@ -3435,26 +3380,25 @@ +@@ -3435,26 +3386,25 @@ hdr.h[1] = VERSIONNO; memcpy(hdr.h + 2, map->nmagic, nm); @@ -825,7 +831,7 @@ return rv; } -@@ -3488,17 +3432,18 @@ +@@ -3488,17 +3438,18 @@ q++; /* Compatibility with old code that looked in .mime */ if (ms->flags & MAGIC_MIME) { @@ -851,7 +857,7 @@ /* Compatibility with old code that looked in .mime */ if (strstr(fn, ".mime") != NULL) -@@ -3620,7 +3565,7 @@ +@@ -3620,7 +3571,7 @@ m->offset = swap4(CAST(uint32_t, m->offset)); m->in_offset = swap4(CAST(uint32_t, m->in_offset)); m->lineno = swap4(CAST(uint32_t, m->lineno)); @@ -860,7 +866,7 @@ m->str_range = swap4(m->str_range); m->str_flags = swap4(m->str_flags); } -@@ -3717,7 +3662,6 @@ +@@ -3717,7 +3668,6 @@ continue; if (strcmp(ma[i].value.s, name) == 0) { v->magic = &ma[i]; @@ -971,7 +977,7 @@ } diff -u libmagic.orig/cdf.c libmagic/cdf.c --- libmagic.orig/cdf.c 2022-09-24 22:56:49.000000000 +0200 -+++ libmagic/cdf.c 2024-06-09 00:31:40.345830732 +0200 ++++ libmagic/cdf.c 2026-10-02 19:35:01.765068091 +0200 @@ -43,7 +43,9 @@ #include #endif @@ -982,55 +988,61 @@ #include #include #include -@@ -91,44 +93,9 @@ - CDF_TOLE8(CAST(uint64_t, x)))) - #define CDF_GETUINT32(x, y) cdf_getuint32(x, y) - --#define CDF_MALLOC(n) cdf_malloc(__FILE__, __LINE__, (n)) --#define CDF_REALLOC(p, n) cdf_realloc(__FILE__, __LINE__, (p), (n)) --#define CDF_CALLOC(n, u) cdf_calloc(__FILE__, __LINE__, (n), (u)) -- +@@ -95,39 +97,39 @@ + #define CDF_REALLOC(p, n) cdf_realloc(__FILE__, __LINE__, (p), (n)) + #define CDF_CALLOC(n, u) cdf_calloc(__FILE__, __LINE__, (n), (u)) + - --/*ARGSUSED*/ --static void * + /*ARGSUSED*/ + static void * -cdf_malloc(const char *file __attribute__((__unused__)), - size_t line __attribute__((__unused__)), size_t n) --{ -- DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u\n", -- file, line, __func__, n)); ++cdf_malloc(const char *file, ++ size_t line, size_t n) + { + DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u\n", + file, line, __func__, n)); - if (n == 0) - n++; - return malloc(n); --} -- --/*ARGSUSED*/ --static void * ++ return femalloc(n, /* fallible */ true); + } + + /*ARGSUSED*/ + static void * -cdf_realloc(const char *file __attribute__((__unused__)), - size_t line __attribute__((__unused__)), void *p, size_t n) --{ -- DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u\n", -- file, line, __func__, n)); ++cdf_realloc(const char *file, ++ size_t line, void *p, size_t n) + { + DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u\n", + file, line, __func__, n)); - return realloc(p, n); --} -- --/*ARGSUSED*/ --static void * ++ return safe_ferealloc(p, 1, n, 0, /* fallible */ true); + } + + /*ARGSUSED*/ + static void * -cdf_calloc(const char *file __attribute__((__unused__)), - size_t line __attribute__((__unused__)), size_t n, size_t u) --{ -- DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u %" -- SIZE_T_FORMAT "u\n", file, line, __func__, n, u)); ++cdf_calloc(const char *file, ++ size_t line, size_t n, size_t u) + { + DPRINTF(("%s,%" SIZE_T_FORMAT "u: %s %" SIZE_T_FORMAT "u %" + SIZE_T_FORMAT "u\n", file, line, __func__, n, u)); - if (n == 0) - n++; - return calloc(n, u); --} -+#define CDF_MALLOC(n) emalloc(n) -+#define CDF_REALLOC(p, n) erealloc(p, n) -+#define CDF_CALLOC(n, u) ecalloc(n, u) ++ void *data = safe_femalloc(n, u, 0, /* fallible */ true); ++ if (!data) { ++ return NULL; ++ } ++ memset(data, 0, n * u); ++ return data; + } #if defined(HAVE_BYTESWAP_H) - # define _cdf_tole2(x) bswap_16(x) -@@ -334,7 +301,7 @@ +@@ -334,7 +336,7 @@ scn->sst_len = 0; scn->sst_dirlen = 0; scn->sst_ss = 0; @@ -1039,7 +1051,7 @@ scn->sst_tab = NULL; return -1; } -@@ -342,9 +309,11 @@ +@@ -342,9 +344,11 @@ static size_t cdf_check_stream(const cdf_stream_t *sst, const cdf_header_t *h) { @@ -1051,7 +1063,7 @@ return sst->sst_ss; } -@@ -367,11 +336,11 @@ +@@ -367,11 +371,11 @@ } static ssize_t @@ -1065,7 +1077,7 @@ goto out; if (info->i_buf != NULL && info->i_len >= siz) { -@@ -382,7 +351,10 @@ +@@ -382,7 +386,10 @@ if (info->i_fd == -1) goto out; @@ -1077,7 +1089,7 @@ return -1; return CAST(ssize_t, len); -@@ -397,7 +369,7 @@ +@@ -397,7 +404,7 @@ char buf[512]; (void)memcpy(cdf_bo.s, "\01\02\03\04", 4); @@ -1086,7 +1098,7 @@ return -1; cdf_unpack_header(h, buf); cdf_swap_header(h); -@@ -544,14 +516,14 @@ +@@ -544,14 +551,14 @@ } out: sat->sat_len = i; @@ -1104,7 +1116,7 @@ return -1; } -@@ -719,7 +691,7 @@ +@@ -719,7 +726,7 @@ return -1; if ((buf = CAST(char *, CDF_MALLOC(ss))) == NULL) { @@ -1113,7 +1125,7 @@ return -1; } -@@ -742,11 +714,11 @@ +@@ -742,11 +749,11 @@ if (NEED_SWAP) for (i = 0; i < dir->dir_len; i++) cdf_swap_dir(&dir->dir_tab[i]); @@ -1128,7 +1140,7 @@ errno = EFTYPE; return -1; } -@@ -791,7 +763,7 @@ +@@ -791,7 +798,7 @@ out: errno = EFTYPE; out1: @@ -1137,7 +1149,7 @@ return -1; } -@@ -953,7 +925,7 @@ +@@ -953,7 +960,7 @@ *maxcount = newcount; return inp; out: @@ -1146,7 +1158,7 @@ *maxcount = 0; *info = NULL; return NULL; -@@ -1136,7 +1108,7 @@ +@@ -1136,7 +1143,7 @@ } return 0; out: @@ -1155,7 +1167,7 @@ *info = NULL; *count = 0; *maxcount = 0; -@@ -1428,7 +1400,7 @@ +@@ -1428,7 +1435,7 @@ cdf_directory_t *d; char name[__arraycount(d->d_name)]; cdf_stream_t scn; @@ -1164,7 +1176,7 @@ static const char *types[] = { "empty", "user storage", "user stream", "lockbytes", "property", "root storage" }; -@@ -1470,7 +1442,7 @@ +@@ -1470,7 +1477,7 @@ break; } cdf_dump_stream(&scn); @@ -1173,7 +1185,7 @@ break; default: break; -@@ -1483,7 +1455,7 @@ +@@ -1483,7 +1490,7 @@ cdf_dump_property_info(const cdf_property_info_t *info, size_t count) { cdf_timestamp_t tp; @@ -1182,7 +1194,7 @@ char buf[64]; size_t i, j; -@@ -1568,7 +1540,7 @@ +@@ -1568,7 +1575,7 @@ (void)fprintf(stderr, "Class %s\n", buf); (void)fprintf(stderr, "Count %d\n", ssi.si_count); cdf_dump_property_info(info, count); @@ -1191,7 +1203,7 @@ } -@@ -1589,7 +1561,7 @@ +@@ -1589,7 +1596,7 @@ cdf_u16tos8(sbuf, ce[i].ce_namlen, ce[i].ce_name), cdf_ctime(&ts.tv_sec, tbuf)); } diff -Nru php8.4-8.4.26/ext/fileinfo/tests/cdf_unknown_property_id.phpt php8.4-8.4.27/ext/fileinfo/tests/cdf_unknown_property_id.phpt --- php8.4-8.4.26/ext/fileinfo/tests/cdf_unknown_property_id.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/fileinfo/tests/cdf_unknown_property_id.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +Unknown CDF property IDs are printed with the 0x prefix +--EXTENSIONS-- +fileinfo +--FILE-- +buffer($data); +echo substr($desc, strrpos($desc, ', ') + 2), "\n"; +?> +--EXPECT-- +0x1f: 0 diff -Nru php8.4-8.4.26/ext/fileinfo/tests/oom_cdf_sector_chain.phpt php8.4-8.4.27/ext/fileinfo/tests/oom_cdf_sector_chain.phpt --- php8.4-8.4.26/ext/fileinfo/tests/oom_cdf_sector_chain.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/fileinfo/tests/oom_cdf_sector_chain.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,76 @@ +--TEST-- +fileinfo on cdf file doesn't reach hard limit +--EXTENSIONS-- +fileinfo +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +exit_status=255 + +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +exit_status=255 + +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +exit_status=255 diff -Nru php8.4-8.4.26/ext/filter/filter.c php8.4-8.4.27/ext/filter/filter.c --- php8.4-8.4.26/ext/filter/filter.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/filter/filter.c 2026-10-19 14:38:59.000000000 +0000 @@ -328,17 +328,25 @@ if (array_ptr) { /* Store the RAW variable internally */ - ZVAL_STRINGL(&raw_var, *val, val_len); + if (UNEXPECTED(!ZVAL_FSTRINGL(&raw_var, *val, val_len))) { + return 0; + } php_register_variable_ex(var, &raw_var, array_ptr); + if (ZEND_HAS_OOM()) { + return 0; + } } if (val_len) { /* Register mangled variable */ + if (UNEXPECTED(!ZVAL_FSTRINGL(&new_var, *val, val_len))) { + return 0; + } if (IF_G(default_filter) != FILTER_UNSAFE_RAW) { - ZVAL_STRINGL(&new_var, *val, val_len); php_zval_filter(&new_var, IF_G(default_filter), IF_G(default_filter_flags), NULL, NULL, 0); - } else { - ZVAL_STRINGL(&new_var, *val, val_len); + if (ZEND_HAS_OOM()) { + return 0; + } } } else { /* empty string */ ZVAL_EMPTY_STRING(&new_var); @@ -356,7 +364,19 @@ } efree(*val); if (ZSTR_LEN(str)) { - *val = estrndup(ZSTR_VAL(str), ZSTR_LEN(str)); + *val = femalloc(ZSTR_LEN(str) + 1, /* fallible */ true); + if (UNEXPECTED(!*val)) { + /* The caller frees *val either way, so leave it pointing at + * something. */ + *val = estrdup(""); + if (new_val_len) { + *new_val_len = 0; + } + zend_tmp_string_release(tmp_str); + zval_ptr_dtor(&new_var); + return 0; + } + memcpy(*val, ZSTR_VAL(str), ZSTR_LEN(str) + 1); } else { *val = estrdup(""); } diff -Nru php8.4-8.4.26/ext/filter/sanitizing_filters.c php8.4-8.4.27/ext/filter/sanitizing_filters.c --- php8.4-8.4.26/ext/filter/sanitizing_filters.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/filter/sanitizing_filters.c 2026-10-19 14:38:59.000000000 +0000 @@ -25,7 +25,7 @@ /* }}} */ /* {{{ HELPER FUNCTIONS */ -static void php_filter_encode_html(zval *value, const unsigned char *chars) +static bool php_filter_encode_html(zval *value, const unsigned char *chars) { smart_str str = {0}; size_t len = Z_STRLEN_P(value); @@ -33,7 +33,7 @@ unsigned char *e = s + len; if (Z_STRLEN_P(value) == 0) { - return; + return true; } while (s < e) { @@ -46,10 +46,18 @@ smart_str_appendc(&str, *s); } s++; + + if (ZEND_HAS_OOM()) { + smart_str_free(&str); + zval_ptr_dtor(value); + ZVAL_EMPTY_STRING(value); + return false; + } } zval_ptr_dtor(value); ZVAL_STR(value, smart_str_extract(&str)); + return true; } static const unsigned char hexchars[] = "0123456789ABCDEF"; @@ -74,7 +82,12 @@ tmp[*s++] = '\0'; } - str = zend_string_safe_alloc(Z_STRLEN_P(value), 3, 0, 0); + str = zend_string_safe_falloc(Z_STRLEN_P(value), 3, 0, /* persistent */ false, /* fallible */ true); + if (!str) { + zval_ptr_dtor(value); + ZVAL_EMPTY_STRING(value); + return; + } p = (unsigned char *) ZSTR_VAL(str); s = (unsigned char *) Z_STRVAL_P(value); e = s + Z_STRLEN_P(value); @@ -192,7 +205,9 @@ memset(enc + 127, 1, sizeof(enc) - 127); } - php_filter_encode_html(value, enc); + if (!php_filter_encode_html(value, enc)) { + return; + } /* strip tags, implicitly also removes \0 chars */ new_len = php_strip_tags_ex(Z_STRVAL_P(value), Z_STRLEN_P(value), NULL, 0, 1); diff -Nru php8.4-8.4.26/ext/filter/tests/oom_filter_default_encoded.phpt php8.4-8.4.27/ext/filter/tests/oom_filter_default_encoded.phpt --- php8.4-8.4.26/ext/filter/tests/oom_filter_default_encoded.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/filter/tests/oom_filter_default_encoded.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,126 @@ +--TEST-- +filter.default=encoded doesn't reach hard limit while parsing POST data +--EXTENSIONS-- +filter +--SKIPIF-- + +--FILE-- + ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes, + null, + [ + 'REQUEST_METHOD' => 'POST', + 'CONTENT_TYPE' => 'application/x-www-form-urlencoded', + 'CONTENT_LENGTH' => (string) strlen($body), + 'SCRIPT_FILENAME' => $script, + 'REDIRECT_STATUS' => '1', + ] + ); + fwrite($pipes[0], $body); + fclose($pipes[0]); + $out = stream_get_contents($pipes[1]) . stream_get_contents($pipes[2]); + fclose($pipes[1]); + fclose($pipes[2]); + proc_close($p); + + echo $out; +} + +for ($kb = 2016; $kb <= 2064; $kb += 4) { + oom_post_encoded('a=' . str_repeat('x', $kb * 1024), $script); +} +?> +--CLEAN-- + +--EXPECTF-- +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/filter/tests/oom_filter_input.phpt php8.4-8.4.27/ext/filter/tests/oom_filter_input.phpt --- php8.4-8.4.26/ext/filter/tests/oom_filter_input.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/filter/tests/oom_filter_input.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,56 @@ +--TEST-- +filter_input() doesn't reach hard limit +--EXTENSIONS-- +filter +--SKIPIF-- + +--FILE-- + ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes, + null, + [ + 'REQUEST_METHOD' => 'POST', + 'CONTENT_TYPE' => "multipart/form-data; boundary=$boundary", + 'CONTENT_LENGTH' => (string) strlen($body), + 'SCRIPT_FILENAME' => $script, + 'REDIRECT_STATUS' => '1', + ] +); +fwrite($pipes[0], $body); +fclose($pipes[0]); +$out = stream_get_contents($pipes[1]) . stream_get_contents($pipes[2]); +fclose($pipes[1]); +fclose($pipes[2]); +proc_close($p); + +echo $out; +?> +--CLEAN-- + +--EXPECTF-- +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 12582912 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/filter/tests/oom_filter_input_array.phpt php8.4-8.4.27/ext/filter/tests/oom_filter_input_array.phpt --- php8.4-8.4.26/ext/filter/tests/oom_filter_input_array.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/filter/tests/oom_filter_input_array.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,56 @@ +--TEST-- +filter_input_array() doesn't reach hard limit +--EXTENSIONS-- +filter +--SKIPIF-- + +--FILE-- + ['filter' => FILTER_SANITIZE_SPECIAL_CHARS, 'flags' => FILTER_FLAG_ENCODE_HIGH]]); +echo "no OOM\n"; +TARGET); + +$boundary = '----X'; +$body = "--$boundary\r\nContent-Disposition: form-data; name=\"k\"\r\n\r\n" + . str_repeat("\xFF", 2 * 1024 * 1024) + . "\r\n--$boundary--\r\n"; + +$p = proc_open( + [getenv('TEST_PHP_CGI_EXECUTABLE'), '-n', '-d', 'memory_limit=12M', '-d', 'html_errors=0'], + [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes, + null, + [ + 'REQUEST_METHOD' => 'POST', + 'CONTENT_TYPE' => "multipart/form-data; boundary=$boundary", + 'CONTENT_LENGTH' => (string) strlen($body), + 'SCRIPT_FILENAME' => $script, + 'REDIRECT_STATUS' => '1', + ] +); +fwrite($pipes[0], $body); +fclose($pipes[0]); +$out = stream_get_contents($pipes[1]) . stream_get_contents($pipes[2]); +fclose($pipes[1]); +fclose($pipes[2]); +proc_close($p); + +echo $out; +?> +--CLEAN-- + +--EXPECTF-- +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + + +Fatal error: Allowed memory size of 12582912 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/filter/tests/oom_filter_var.phpt php8.4-8.4.27/ext/filter/tests/oom_filter_var.phpt --- php8.4-8.4.26/ext/filter/tests/oom_filter_var.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/filter/tests/oom_filter_var.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +filter_var(filter: FILTER_SANITIZE_SPECIAL_CHARS) doesn't reach hard limit +--EXTENSIONS-- +filter +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/filter/tests/oom_filter_var_array.phpt php8.4-8.4.27/ext/filter/tests/oom_filter_var_array.phpt --- php8.4-8.4.26/ext/filter/tests/oom_filter_var_array.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/filter/tests/oom_filter_var_array.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +filter_var_array() doesn't reach hard limit +--EXTENSIONS-- +filter +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + $value], + ["k" => ["filter" => FILTER_SANITIZE_SPECIAL_CHARS, "flags" => FILTER_FLAG_ENCODE_HIGH]] +); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/filter/tests/oom_filter_var_full_special_chars.phpt php8.4-8.4.27/ext/filter/tests/oom_filter_var_full_special_chars.phpt --- php8.4-8.4.26/ext/filter/tests/oom_filter_var_full_special_chars.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/filter/tests/oom_filter_var_full_special_chars.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +filter_var(filter: FILTER_SANITIZE_FULL_SPECIAL_CHARS) doesn't reach hard limit +--EXTENSIONS-- +filter +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/ftp/ftp.c php8.4-8.4.27/ext/ftp/ftp.c --- php8.4-8.4.26/ext/ftp/ftp.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/ftp/ftp.c 2026-10-19 14:38:59.000000000 +0000 @@ -1904,7 +1904,10 @@ /* get the session from the control connection so we can re-use it */ session = ftp->last_ssl_session; if (session == NULL) { - php_error_docref(NULL, E_WARNING, "data_accept: failed to retrieve the existing SSL session"); + php_error_docref(NULL, E_WARNING, "data_accept: failed to retrieve the existing SSL session from the control connection. " + "The server does not support TLS session resumption on the data connection, " + "which is necessary to protect against session data stealing. " + "PHP does not support such configuration."); SSL_free(data->ssl_handle); return 0; } diff -Nru php8.4-8.4.26/ext/gd/libgd/gd.c php8.4-8.4.27/ext/gd/libgd/gd.c --- php8.4-8.4.26/ext/gd/libgd/gd.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/gd/libgd/gd.c 2026-10-19 14:38:59.000000000 +0000 @@ -156,7 +156,11 @@ im = (gdImage *) gdCalloc(1, sizeof(gdImage)); /* Row-major ever since gd 1.3 */ - im->pixels = (unsigned char **) gdMalloc(sizeof(unsigned char *) * sy); + im->pixels = (unsigned char **) gdFMalloc(sizeof(unsigned char *) * sy); + if (im->pixels == NULL) { + gdFree(im); + return NULL; + } im->polyInts = 0; im->polyAllocated = 0; im->brush = 0; @@ -164,7 +168,15 @@ im->style = 0; for (i = 0; i < sy; i++) { /* Row-major ever since gd 1.3 */ - im->pixels[i] = (unsigned char *) gdCalloc(sx, sizeof(unsigned char)); + im->pixels[i] = (unsigned char *) gdFCalloc(sx, sizeof(unsigned char)); + if (im->pixels[i] == NULL) { + while (i > 0) { + gdFree(im->pixels[--i]); + } + gdFree(im->pixels); + gdFree(im); + return NULL; + } } im->sx = sx; im->sy = sy; @@ -209,14 +221,26 @@ im = (gdImage *) gdMalloc(sizeof(gdImage)); memset(im, 0, sizeof(gdImage)); - im->tpixels = (int **) gdMalloc(sizeof(int *) * sy); + im->tpixels = (int **) gdFMalloc(sizeof(int *) * sy); + if (im->tpixels == NULL) { + gdFree(im); + return NULL; + } im->polyInts = 0; im->polyAllocated = 0; im->brush = 0; im->tile = 0; im->style = 0; for (i = 0; i < sy; i++) { - im->tpixels[i] = (int *) gdCalloc(sx, sizeof(int)); + im->tpixels[i] = (int *) gdFCalloc(sx, sizeof(int)); + if (im->tpixels[i] == NULL) { + while (i > 0) { + gdFree(im->tpixels[--i]); + } + gdFree(im->tpixels); + gdFree(im); + return NULL; + } } im->sx = sx; im->sy = sy; @@ -3171,7 +3195,7 @@ // due to a bug with a certain memory_limit INI value treshold, // imagepalettetotruecolor crashes with even unrelated ZendMM allocations. // See GH-17772 for an use case. - src->tpixels = (int **) gdCalloc(sizeof(int *), sy); + src->tpixels = (int **) gdFCalloc(sizeof(int *), sy); if (src->tpixels == NULL) { return 0; } @@ -3181,7 +3205,7 @@ int * dst_row; /* no need to calloc it, we overwrite all pxl anyway */ - src->tpixels[y] = (int *) gdMalloc(sx * sizeof(int)); + src->tpixels[y] = (int *) gdFMalloc(sx * sizeof(int)); if (src->tpixels[y] == NULL) { goto clean_on_error; } @@ -3221,5 +3245,6 @@ gdFree(src->tpixels[yy]); } gdFree(src->tpixels); + src->tpixels = NULL; return 0; } diff -Nru php8.4-8.4.26/ext/gd/libgd/gd_gd2.c php8.4-8.4.27/ext/gd/libgd/gd_gd2.c --- php8.4-8.4.26/ext/gd/libgd/gd_gd2.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/gd/libgd/gd_gd2.c 2026-10-19 14:38:59.000000000 +0000 @@ -150,7 +150,7 @@ if (sidx <= 0) { goto fail1; } - cidx = gdCalloc(sidx, 1); + cidx = gdFCalloc(sidx, 1); if (cidx == NULL) { goto fail1; } @@ -164,7 +164,7 @@ gdFree(cidx); goto fail1; } - if (cidx[i].offset < 0 || cidx[i].size < 0) { + if (cidx[i].offset < 0 || cidx[i].size < 0 || cidx[i].size == INT_MAX) { gdFree(cidx); goto fail1; } @@ -306,8 +306,14 @@ if (chunkMax <= 0) { return 0; } - chunkBuf = gdCalloc(chunkMax, 1); - compBuf = gdCalloc(compMax, 1); + chunkBuf = gdFCalloc(chunkMax, 1); + if (chunkBuf == NULL) { + goto fail2; + } + compBuf = gdFCalloc(compMax, 1); + if (compBuf == NULL) { + goto fail2; + } GD2_DBG(gd_error("Largest compressed chunk is %d bytes", compMax)); } @@ -503,8 +509,14 @@ goto fail2; } - chunkBuf = gdCalloc(chunkMax, 1); - compBuf = gdCalloc(compMax, 1); + chunkBuf = gdFCalloc(chunkMax, 1); + if (chunkBuf == NULL) { + goto fail2; + } + compBuf = gdFCalloc(compMax, 1); + if (compBuf == NULL) { + goto fail2; + } } /* Work out start/end chunks */ diff -Nru php8.4-8.4.26/ext/gd/libgd/gd_gif_in.c php8.4-8.4.27/ext/gd/libgd/gd_gif_in.c --- php8.4-8.4.26/ext/gd/libgd/gd_gif_in.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/gd/libgd/gd_gif_in.c 2026-10-19 14:38:59.000000000 +0000 @@ -517,12 +517,20 @@ /* Bad compressed data stream */ return -1; } + if(code >= (1 << MAX_LWZ_BITS)) { + /* Corrupted code */ + return -1; + } *sd->sp++ = sd->table[1][code]; if (code == sd->table[0][code]) { /* Oh well */ } code = sd->table[0][code]; } + if(code >= (1 << MAX_LWZ_BITS)) { + /* Corrupted code */ + return -1; + } *sd->sp++ = sd->firstcode = sd->table[1][code]; diff -Nru php8.4-8.4.26/ext/gd/libgd/gd_tga.c php8.4-8.4.27/ext/gd/libgd/gd_tga.c --- php8.4-8.4.26/ext/gd/libgd/gd_tga.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/gd/libgd/gd_tga.c 2026-10-19 14:38:59.000000000 +0000 @@ -239,7 +239,7 @@ /*! \brief Allocate memmory for image block * Allocate a chunk of memory for the image block to be passed into. */ - tga->bitmap = (int *) gdMalloc(image_block_size * sizeof(int)); + tga->bitmap = (int *) gdFMalloc(image_block_size * sizeof(int)); if (tga->bitmap == NULL) return -1; @@ -248,7 +248,7 @@ /*! \brief Read in uncompressed RGB TGA * Chunk load the pixel data from an uncompressed RGB type TGA. */ - conversion_buffer = (unsigned char *) gdMalloc(image_block_size * sizeof(unsigned char)); + conversion_buffer = (unsigned char *) gdFMalloc(image_block_size * sizeof(unsigned char)); if (conversion_buffer == NULL) { return -1; } @@ -271,11 +271,11 @@ /*! \brief Read in RLE compressed RGB TGA * Chunk load the pixel data from an RLE compressed RGB type TGA. */ - decompression_buffer = (int*) gdMalloc(image_block_size * sizeof(int)); + decompression_buffer = (int*) gdFMalloc(image_block_size * sizeof(int)); if (decompression_buffer == NULL) { return -1; } - conversion_buffer = (unsigned char *) gdMalloc(image_block_size * sizeof(unsigned char)); + conversion_buffer = (unsigned char *) gdFMalloc(image_block_size * sizeof(unsigned char)); if (conversion_buffer == NULL) { gd_error("gd-tga: premature end of image data\n"); gdFree( decompression_buffer ); diff -Nru php8.4-8.4.26/ext/gd/libgd/gdhelpers.h php8.4-8.4.27/ext/gd/libgd/gdhelpers.h --- php8.4-8.4.26/ext/gd/libgd/gdhelpers.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/gd/libgd/gdhelpers.h 2026-10-19 14:38:59.000000000 +0000 @@ -13,8 +13,10 @@ free memory allocated by these functions with the right version of free(). */ #define gdCalloc(nmemb, size) ecalloc(nmemb, size) +#define gdFCalloc(nmemb, size) fecalloc(nmemb, size, true) #define gdMalloc(size) emalloc(size) #define gdRealloc(ptr, size) erealloc(ptr, size) +#define gdFMalloc(size) femalloc(size, true) #define gdEstrdup(ptr) estrdup(ptr) #define gdFree(ptr) efree(ptr) #define gdPMalloc(ptr) pemalloc(ptr, 1) @@ -49,4 +51,3 @@ #define DPI2DPM(dpi) (unsigned int)((dpi)/0.0254 + 0.5) #endif /* GDHELPERS_H */ - diff -Nru php8.4-8.4.26/ext/gd/libgd/wbmp.c php8.4-8.4.27/ext/gd/libgd/wbmp.c --- php8.4-8.4.26/ext/gd/libgd/wbmp.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/gd/libgd/wbmp.c 2026-10-19 14:38:59.000000000 +0000 @@ -196,7 +196,7 @@ return (-1); } - if ((wbmp->bitmap = (int *) safe_emalloc((size_t)wbmp->width * wbmp->height, sizeof(int), 0)) == NULL) + if ((wbmp->bitmap = (int *) safe_femalloc((size_t)wbmp->width * wbmp->height, sizeof(int), 0, /* fallible */ 1)) == NULL) { gdFree (wbmp); return (-1); diff -Nru php8.4-8.4.26/ext/gd/tests/createfromstring-overflow.phpt php8.4-8.4.27/ext/gd/tests/createfromstring-overflow.phpt --- php8.4-8.4.26/ext/gd/tests/createfromstring-overflow.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/createfromstring-overflow.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,42 @@ +--TEST-- +imagecreatefromstring overflow with compressed chunk of size INT_MAX +--EXTENSIONS-- +gd +--FILE-- + "gd2\x00", + "version" => "\x00\x02", + "width" => "\x00\x01", + "height" => "\x00\x01", + "chunk_size" => "\x00\x40", + "format" => "\x00\x04", // compressed truecolor image data + "x_chunk_count" => "\x00\x01", + "y_chunk_count" => "\x00\x01", +]; +$fileHeader = implode("", $fileHeaderParts); + +$chunkHeaderParts = [ + "offset" => "\x00\x00\x00\x20", + "size" =>"\x7F\xFF\xFF\xFF", // INT_MAX +]; +$chunkHeader = implode("", $chunkHeaderParts); + +$trueColorHeaderParts = [ + "truecolor" => "\x01", + "transparent" => "\x00\x00\x00\x00", +]; +$trueColorHeader = implode("", $trueColorHeaderParts); + +$source = $fileHeader . $chunkHeader . $trueColorHeader; +$img = imagecreatefromstring($source); +var_dump($img); + +?> +--EXPECTF-- +Warning: imagecreatefromstring(): Passed data is not in "GD2" format in %s on line %d + +Warning: imagecreatefromstring(): Couldn't create GD Image Stream out of Data in %s on line %d +bool(false) diff -Nru php8.4-8.4.26/ext/gd/tests/gif-oob.phpt php8.4-8.4.27/ext/gd/tests/gif-oob.phpt --- php8.4-8.4.26/ext/gd/tests/gif-oob.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/gif-oob.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,63 @@ +--TEST-- +GIF OOB array access when using code size of 12 +--EXTENSIONS-- +gd +--FILE-- + "GIF", + "version" => "89a", +]; +$fileHeader = implode("", $fileHeaderParts); + +$logicalScreenDescriptorParts = [ + // little-endian format + "width" => "\x04\x00", + "height" => "\x04\x00", + // packed data: global color table flag (most significant bit), + // color resolution (3 bits, only meaningful if global color table is enabled + // and we don't enable it here) + // sort flag (one bit, again only meaningful if global color table is enabled) + // size of global color table (3 bits) + "packed_info" => "\x00", + "background_color_index" => "\x00", + "pixel_aspect_ratio" => "\x00", +]; +$logicalScreenDescriptor = implode("", $logicalScreenDescriptorParts); + +$startImage = ","; + +$imgDescParts = [ + // little-ending format + "left" => "\x00\x00", + "top" => "\x00\x00", + "width" => "\x04\x00", + "height" => "\x04\x00", + // more packed data: local color table flag, interlace flag, sort flag, + // 2 bits reserved for future use, then 3 bits for size of local color + // table, which we don't have + "packed_info" => "\x00", +]; +$imgDesc = implode("", $imgDescParts); + +$imgDataParts = [ + "lzw_min_code_size" => "\x0c", // 12 + "sub_block_num_bytes" => "\x05", + // Data in the block: 3 12-bit codes, and then 4 trailing 0 bits + "sub_block_bytes" => "\xff\x5f\x00\x06\x40", + // end of data + "end" => "\x00" +]; +$imgData = implode("", $imgDataParts); + +$trailer = ";"; + +$source = $fileHeader . $logicalScreenDescriptor . $startImage . $imgDesc . $imgData . $trailer; +$img = imagecreatefromstring($source); +var_dump($img); + +?> +--EXPECTF-- +object(GdImage)#%d (0) { +} diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefrombmp.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefrombmp.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefrombmp.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefrombmp.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +imagecreatefrombmp() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +imagecreatefromgd2() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + pack('n', $v); // big-endian 16-bit +$gd2 = "gd2\x00" // magic + . $w(2) // version + . $w(1) . $w(1) // image dimensions (small) + . $w(64) // chunk size + . $w(2) // GD2_FMT_COMPRESSED + . $w(65535) . $w(512); // ncx, ncy -> 33.5M chunk-index entries + +$path = __DIR__ . '/' . basename(__FILE__, '.php') . '.tmp.gd2'; +file_put_contents($path, $gd2); +imagecreatefromgd2($path); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2_chunkbuf.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2_chunkbuf.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2_chunkbuf.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2_chunkbuf.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +imagecreatefromgd2() chunk buffer doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + pack('n', $v); // big-endian 16-bit +$N = fn($v) => pack('N', $v); // big-endian 32-bit + +// chunkBuf is sized cs * bytesPerPixel * cs, all of it from the header, so a +// 1x1 image still asks for 4096 * 4 * 4096 = 64 MB. GD2_CHUNKSIZE_MAX caps the +// chunk size at 4096, hence the small memory_limit. +$gd2 = "gd2\0" // magic + . $n(2) // version + . $n(1) . $n(1) // image dimensions + . $n(4096) // chunk size + . $n(4) // GD2_FMT_TRUECOLOR_COMPRESSED + . $n(1) . $n(1) // ncx, ncy -> one chunk + . $N(31) . $N(16) // chunk index: offset, compressed size + . "\x01" . $N(-1); +// The chunk data itself is never reached: the buffers are allocated first. + +$path = __DIR__ . '/oom_imagecreatefromgd2_chunkbuf.tmp.gd2'; +file_put_contents($path, $gd2); +imagecreatefromgd2($path); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2_compbuf.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2_compbuf.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2_compbuf.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2_compbuf.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +imagecreatefromgd2() compressed chunk buffer doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + pack('n', $v); // big-endian 16-bit +$N = fn($v) => pack('N', $v); // big-endian 32-bit + +// compBuf is sized from the largest "size" in the chunk index, which is only +// checked for being non-negative, so a 1x1 image can ask for 2 GB. +$gd2 = "gd2\0" // magic + . $n(2) // version + . $n(1) . $n(1) // image dimensions + . $n(64) // chunk size + . $n(4) // GD2_FMT_TRUECOLOR_COMPRESSED + . $n(1) . $n(1) // ncx, ncy -> one chunk + . $N(31) . $N(0x7ffffff0) // chunk index: offset, compressed size + . "\x01" . $N(-1); +// The chunk data itself is never reached: the buffers are allocated first. + +$path = __DIR__ . '/oom_imagecreatefromgd2_compbuf.tmp.gd2'; +file_put_contents($path, $gd2); +imagecreatefromgd2($path); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2part.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2part.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2part.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2part.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +imagecreatefromgd2part() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + pack('n', $v); // big-endian 16-bit +$gd2 = "gd2\x00" // magic + . $w(2) // version + . $w(1) . $w(1) // image dimensions (small) + . $w(64) // chunk size + . $w(2) // GD2_FMT_COMPRESSED + . $w(65535) . $w(512); // ncx, ncy -> 33.5M chunk-index entries + +$path = __DIR__ . '/' . basename(__FILE__, '.php') . '.tmp.gd2'; +file_put_contents($path, $gd2); +imagecreatefromgd2part($path, 0, 0, 10, 10); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2part_chunkbuf.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2part_chunkbuf.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2part_chunkbuf.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2part_chunkbuf.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +imagecreatefromgd2part() chunk buffer doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + pack('n', $v); // big-endian 16-bit +$N = fn($v) => pack('N', $v); // big-endian 32-bit + +// chunkBuf is sized cs * bytesPerPixel * cs, all of it from the header, so a +// 1x1 image still asks for 4096 * 4 * 4096 = 64 MB. GD2_CHUNKSIZE_MAX caps the +// chunk size at 4096, hence the small memory_limit. +$gd2 = "gd2\0" // magic + . $n(2) // version + . $n(1) . $n(1) // image dimensions + . $n(4096) // chunk size + . $n(4) // GD2_FMT_TRUECOLOR_COMPRESSED + . $n(1) . $n(1) // ncx, ncy -> one chunk + . $N(31) . $N(16) // chunk index: offset, compressed size + . "\x01" . $N(-1); +// The chunk data itself is never reached: the buffers are allocated first. + +$path = __DIR__ . '/oom_imagecreatefromgd2part_chunkbuf.tmp.gd2'; +file_put_contents($path, $gd2); +imagecreatefromgd2part($path, 0, 0, 1, 1); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2part_compbuf.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2part_compbuf.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgd2part_compbuf.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgd2part_compbuf.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +imagecreatefromgd2part() compressed chunk buffer doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + pack('n', $v); // big-endian 16-bit +$N = fn($v) => pack('N', $v); // big-endian 32-bit + +// compBuf is sized from the largest "size" in the chunk index, which is only +// checked for being non-negative, so a 1x1 image can ask for 2 GB. +$gd2 = "gd2\0" // magic + . $n(2) // version + . $n(1) . $n(1) // image dimensions + . $n(64) // chunk size + . $n(4) // GD2_FMT_TRUECOLOR_COMPRESSED + . $n(1) . $n(1) // ncx, ncy -> one chunk + . $N(31) . $N(0x7ffffff0) // chunk index: offset, compressed size + . "\x01" . $N(-1); +// The chunk data itself is never reached: the buffers are allocated first. + +$path = __DIR__ . '/oom_imagecreatefromgd2part_compbuf.tmp.gd2'; +file_put_contents($path, $gd2); +imagecreatefromgd2part($path, 0, 0, 1, 1); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgif.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgif.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromgif.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromgif.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +imagecreatefromgif() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefrompng.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefrompng.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefrompng.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefrompng.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +imagecreatefrompng() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromstring.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromstring.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromstring.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromstring.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +imagecreatefromstring() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromtga.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromtga.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromtga.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromtga.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +imagecreatefromtga() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromwbmp.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromwbmp.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromwbmp.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromwbmp.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +imagecreatefromwbmp() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- +>= 7; $v > 0; $v >>= 7) { + $out = chr(0x80 | ($v & 0x7f)) . $out; + } + return $out; +}; +// 16384 x 16384 x sizeof(int) = 1 GB +$wbmp = "\x00\x00" . $mbi(16384) . $mbi(16384) . str_repeat("\x00", 64); + +$path = __DIR__ . '/oom_imagecreatefromwbmp.tmp.wbmp'; +file_put_contents($path, $wbmp); +imagecreatefromwbmp($path); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromxbm.phpt php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromxbm.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagecreatefromxbm.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagecreatefromxbm.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +imagecreatefromxbm() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/gd/tests/oom_imagepalettetotruecolor.phpt php8.4-8.4.27/ext/gd/tests/oom_imagepalettetotruecolor.phpt --- php8.4-8.4.26/ext/gd/tests/oom_imagepalettetotruecolor.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/gd/tests/oom_imagepalettetotruecolor.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +imagepalettetotruecolor() doesn't reach hard limit +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/hash/hash.c php8.4-8.4.27/ext/hash/hash.c --- php8.4-8.4.26/ext/hash/hash.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/hash/hash.c 2026-10-19 14:38:59.000000000 +0000 @@ -1328,7 +1328,7 @@ context = php_hash_alloc_context(ops); ops->hash_init(context, NULL); - key = ecalloc(1, times * block_size); + key = ecalloc(times, block_size); digest = emalloc(ops->digest_size + 1); for (i = 0; i < times; i++) { diff -Nru php8.4-8.4.26/ext/hash/tests/hash_pbkdf2_max_length.phpt php8.4-8.4.27/ext/hash/tests/hash_pbkdf2_max_length.phpt --- php8.4-8.4.26/ext/hash/tests/hash_pbkdf2_max_length.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/hash/tests/hash_pbkdf2_max_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -14,4 +14,6 @@ ?> --EXPECTF-- -Fatal error: Allowed memory size of 134217728 bytes exhausted%s(tried to allocate 4611686018427387904 bytes) in %s on line %d +Hard memory limit of 268435456 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d + +Termsig=9 diff -Nru php8.4-8.4.26/ext/hash/tests/hash_pbkdf2_max_length_raw.phpt php8.4-8.4.27/ext/hash/tests/hash_pbkdf2_max_length_raw.phpt --- php8.4-8.4.26/ext/hash/tests/hash_pbkdf2_max_length_raw.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/hash/tests/hash_pbkdf2_max_length_raw.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -14,4 +14,6 @@ ?> --EXPECTF-- -Fatal error: Allowed memory size of 134217728 bytes exhausted%s(tried to allocate 9223372036854775808 bytes) in %s on line %d +Hard memory limit of 268435456 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d + +Termsig=9 diff -Nru php8.4-8.4.26/ext/iconv/iconv.c php8.4-8.4.27/ext/iconv/iconv.c --- php8.4-8.4.26/ext/iconv/iconv.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/iconv.c 2026-10-19 14:38:59.000000000 +0000 @@ -363,7 +363,9 @@ if (in_p != NULL) { while (in_left > 0) { out_left = buf_growth; - smart_str_alloc(d, out_left, 0); + if (UNEXPECTED(smart_str_falloc(d, out_left, 0, /* fallible */ true) == (size_t)-1)) { + return PHP_ICONV_ERR_ALLOC; + } out_p = ZSTR_VAL((d)->s) + ZSTR_LEN((d)->s); @@ -388,7 +390,9 @@ } else { for (;;) { out_left = buf_growth; - smart_str_alloc(d, out_left, 0); + if (UNEXPECTED(smart_str_falloc(d, out_left, 0, /* fallible */ true) == (size_t)-1)) { + return PHP_ICONV_ERR_ALLOC; + } out_p = ZSTR_VAL((d)->s) + ZSTR_LEN((d)->s); @@ -441,7 +445,7 @@ char *out_p; size_t bsz, result = 0; php_iconv_err_t retval = PHP_ICONV_ERR_SUCCESS; - zend_string *out_buf; + zend_string *out_buf = NULL; int ignore_ilseq = _php_check_ignore(out_charset); *out = NULL; @@ -461,7 +465,12 @@ bsz = out_left; zend_try { - out_buf = zend_string_alloc(bsz, 0); + out_buf = zend_string_falloc(bsz, 0, /* fallible */ true); + if (UNEXPECTED(out_buf == NULL)) { + result = -1; + errno = 0; + goto fail; + } out_p = ZSTR_VAL(out_buf); while (in_left > 0) { @@ -483,7 +492,13 @@ /* converted string is longer than out buffer */ bsz += in_len; - out_buf = zend_string_extend(out_buf, bsz, 0); + zend_string *grown = zend_string_fextend(out_buf, bsz, 0, /* fallible */ true); + if (UNEXPECTED(grown == NULL)) { + result = -1; + errno = 0; + goto fail; + } + out_buf = grown; out_p = ZSTR_VAL(out_buf); out_p += out_size; out_left = bsz - out_size; @@ -505,7 +520,13 @@ if (errno == E2BIG) { bsz += 16; - out_buf = zend_string_extend(out_buf, bsz, 0); + zend_string *grown = zend_string_fextend(out_buf, bsz, 0, /* fallible */ true); + if (UNEXPECTED(grown == NULL)) { + result = -1; + errno = 0; + goto fail; + } + out_buf = grown; out_p = ZSTR_VAL(out_buf); out_p += out_size; out_left = bsz - out_size; @@ -514,6 +535,7 @@ } } } +fail:; } zend_catch { iconv_close(cd); zend_bailout(); @@ -538,7 +560,9 @@ default: /* other error */ - zend_string_efree(out_buf); + if (out_buf) { + zend_string_efree(out_buf); + } return PHP_ICONV_ERR_UNKNOWN; } } @@ -978,7 +1002,11 @@ } zend_try { - buf = safe_emalloc(1, max_line_len, 5); + buf = safe_femalloc(1, max_line_len, 5, /* fallible */ true); + if (UNEXPECTED(buf == NULL)) { + err = PHP_ICONV_ERR_ALLOC; + goto out_try; + } char_cnt = max_line_len; @@ -1184,7 +1212,7 @@ } break; /* case PHP_ICONV_ENC_SCHEME_QPRINT: */ } - } while (in_left > 0); + } while (in_left > 0 && !ZEND_HAS_OOM()); smart_str_0(pretval); @@ -2158,7 +2186,7 @@ enc_str_tmp = ZSTR_VAL(encoded_str); enc_str_len_tmp = ZSTR_LEN(encoded_str); - while (enc_str_len_tmp > 0) { + while (enc_str_len_tmp > 0 && !ZEND_HAS_OOM()) { smart_str decoded_header = {0}; char *header_name = NULL; size_t header_name_len = 0; @@ -2567,9 +2595,11 @@ php_stream_bucket_unlink(bucket); - if (php_iconv_stream_filter_append_bucket(self, stream, filter, - buckets_out, bucket->buf, bucket->buflen, &consumed, - php_stream_is_persistent(stream)) != SUCCESS) { + /* The conversion may grow the input several times over. */ + if (!ZEND_HAS_OOM() + && php_iconv_stream_filter_append_bucket(self, stream, filter, + buckets_out, bucket->buf, bucket->buflen, &consumed, + php_stream_is_persistent(stream)) != SUCCESS) { php_stream_bucket_delref(bucket); return PSFS_ERR_FATAL; } diff -Nru php8.4-8.4.26/ext/iconv/tests/oom_iconv.phpt php8.4-8.4.27/ext/iconv/tests/oom_iconv.phpt --- php8.4-8.4.26/ext/iconv/tests/oom_iconv.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/tests/oom_iconv.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +iconv() doesn't reach hard limit +--EXTENSIONS-- +iconv +--SKIPIF-- + +--INI-- +memory_limit=16M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_decode.phpt php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_decode.phpt --- php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_decode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_decode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +iconv_mime_decode() doesn't reach hard limit +--EXTENSIONS-- +iconv +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_decode_headers.phpt php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_decode_headers.phpt --- php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_decode_headers.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_decode_headers.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +iconv_mime_decode_headers() doesn't reach hard limit +--EXTENSIONS-- +iconv +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_encode.phpt php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_encode.phpt --- php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_encode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_encode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +iconv_mime_encode() doesn't reach hard limit +--EXTENSIONS-- +iconv +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + "Q", + "input-charset" => "ISO-8859-1", + "output-charset" => "ISO-8859-1", +]); +?> +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_encode_line_length.phpt php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_encode_line_length.phpt --- php8.4-8.4.26/ext/iconv/tests/oom_iconv_mime_encode_line_length.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/tests/oom_iconv_mime_encode_line_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +iconv_mime_encode() line-length doesn't reach hard limit +--EXTENSIONS-- +iconv +--INI-- +memory_limit=8M +--FILE-- + PHP_INT_MAX]); +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/iconv/tests/oom_iconv_stream_filter.phpt php8.4-8.4.27/ext/iconv/tests/oom_iconv_stream_filter.phpt --- php8.4-8.4.26/ext/iconv/tests/oom_iconv_stream_filter.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/iconv/tests/oom_iconv_stream_filter.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +convert.iconv stream filter doesn't reach hard limit +--EXTENSIONS-- +iconv +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/imap/tests/oom_imap_mime_header_decode.phpt php8.4-8.4.27/ext/imap/tests/oom_imap_mime_header_decode.phpt --- php8.4-8.4.26/ext/imap/tests/oom_imap_mime_header_decode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/imap/tests/oom_imap_mime_header_decode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +imap_mime_header_decode() doesn't reach hard limit +--EXTENSIONS-- +imap +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/intl/collator/collator_attr.c php8.4-8.4.27/ext/intl/collator/collator_attr.c --- php8.4-8.4.26/ext/intl/collator/collator_attr.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/collator/collator_attr.c 2026-10-19 14:38:59.000000000 +0000 @@ -40,6 +40,10 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; + if (collator_check_initialized(co) == FAILURE) { + RETURN_THROWS(); + } + value = ucol_getAttribute( co->ucoll, attribute, COLLATOR_ERROR_CODE_P( co ) ); COLLATOR_CHECK_STATUS( co, "Error getting attribute value" ); @@ -64,6 +68,10 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; + if (collator_check_initialized(co) == FAILURE) { + RETURN_THROWS(); + } + /* Set new value for the given attribute. */ ucol_setAttribute( co->ucoll, attribute, value, COLLATOR_ERROR_CODE_P( co ) ); COLLATOR_CHECK_STATUS( co, "Error setting attribute value" ); @@ -87,6 +95,10 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; + if (collator_check_initialized(co) == FAILURE) { + RETURN_THROWS(); + } + /* Get current strength and return it. */ RETURN_LONG( ucol_getStrength( co->ucoll ) ); } @@ -109,6 +121,10 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; + if (collator_check_initialized(co) == FAILURE) { + RETURN_THROWS(); + } + /* Set given strength. */ ucol_setStrength( co->ucoll, strength ); diff -Nru php8.4-8.4.26/ext/intl/collator/collator_class.h php8.4-8.4.27/ext/intl/collator/collator_class.h --- php8.4-8.4.26/ext/intl/collator/collator_class.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/collator/collator_class.h 2026-10-19 14:38:59.000000000 +0000 @@ -46,6 +46,22 @@ } #define Z_INTL_COLLATOR_P(zv) php_intl_collator_fetch_object(Z_OBJ_P(zv)) +static zend_always_inline zend_result collator_check_initialized(Collator_object *co) +{ + ZEND_ASSERT(co != NULL); + + if (UNEXPECTED(co->ucoll == NULL)) { + intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) ); + intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ), + "Object not initialized", 0 ); + zend_throw_error(NULL, "Object not initialized"); + + return FAILURE; + } + + return SUCCESS; +} + void collator_register_Collator_symbols(int module_number); void collator_object_init( Collator_object* co ); void collator_object_destroy( Collator_object* co ); diff -Nru php8.4-8.4.26/ext/intl/collator/collator_compare.c php8.4-8.4.27/ext/intl/collator/collator_compare.c --- php8.4-8.4.26/ext/intl/collator/collator_compare.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/collator/collator_compare.c 2026-10-19 14:38:59.000000000 +0000 @@ -48,12 +48,7 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; - if (!co || !co->ucoll) { - intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) ); - intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ), - "Object not initialized", 0 ); - zend_throw_error(NULL, "Object not initialized"); - + if (collator_check_initialized(co) == FAILURE) { RETURN_THROWS(); } diff -Nru php8.4-8.4.26/ext/intl/collator/collator_locale.c php8.4-8.4.27/ext/intl/collator/collator_locale.c --- php8.4-8.4.26/ext/intl/collator/collator_locale.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/collator/collator_locale.c 2026-10-19 14:38:59.000000000 +0000 @@ -41,12 +41,7 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; - if (!co || !co->ucoll) { - intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) ); - intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ), - "Object not initialized", 0 ); - zend_throw_error(NULL, "Object not initialized"); - + if (collator_check_initialized(co) == FAILURE) { RETURN_THROWS(); } diff -Nru php8.4-8.4.26/ext/intl/collator/collator_sort.c php8.4-8.4.27/ext/intl/collator/collator_sort.c --- php8.4-8.4.26/ext/intl/collator/collator_sort.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/collator/collator_sort.c 2026-10-19 14:38:59.000000000 +0000 @@ -376,12 +376,7 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; - if (!co || !co->ucoll) { - intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) ); - intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ), - "Object not initialized", 0 ); - zend_throw_error(NULL, "Object not initialized"); - + if (collator_check_initialized(co) == FAILURE) { RETURN_THROWS(); } @@ -532,12 +527,7 @@ /* Fetch the object. */ COLLATOR_METHOD_FETCH_OBJECT; - if (!co || !co->ucoll) { - intl_error_set_code( NULL, COLLATOR_ERROR_CODE( co ) ); - intl_errors_set_custom_msg( COLLATOR_ERROR_P( co ), - "Object not initialized", 0 ); - zend_throw_error(NULL, "Object not initialized"); - + if (collator_check_initialized(co) == FAILURE) { RETURN_THROWS(); } diff -Nru php8.4-8.4.26/ext/intl/converter/converter.c php8.4-8.4.27/ext/intl/converter/converter.c --- php8.4-8.4.26/ext/intl/converter/converter.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/converter/converter.c 2026-10-19 14:38:59.000000000 +0000 @@ -642,7 +642,10 @@ THROW_UFAILURE(objval, "ucnv_toUChars", error); return NULL; } - temp = safe_emalloc(sizeof(UChar), temp_len, sizeof(UChar)); + temp = safe_femalloc(sizeof(UChar), temp_len, sizeof(UChar), /* fallible */ true); + if (!temp) { + return NULL; + } /* Convert to intermediate UChar* array */ error = U_ZERO_ERROR; @@ -662,7 +665,11 @@ return NULL; } - ret = zend_string_alloc(ret_len, 0); + ret = zend_string_falloc(ret_len, /* persistent */ false, /* fallible */ true); + if (!ret) { + efree(temp); + return NULL; + } /* Convert to final encoding */ error = U_ZERO_ERROR; diff -Nru php8.4-8.4.26/ext/intl/dateformat/dateformat_class.c php8.4-8.4.27/ext/intl/dateformat/dateformat_class.c --- php8.4-8.4.26/ext/intl/dateformat/dateformat_class.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/dateformat/dateformat_class.c 2026-10-19 14:38:59.000000000 +0000 @@ -71,6 +71,13 @@ /* clone standard parts */ zend_objects_clone_members(&new_dfo->zo, &dfo->zo); + new_dfo->date_type = dfo->date_type; + new_dfo->time_type = dfo->time_type; + new_dfo->calendar = dfo->calendar; + if (dfo->requested_locale != NULL) { + new_dfo->requested_locale = estrdup(dfo->requested_locale); + } + /* clone formatter object */ if (DATE_FORMAT_OBJECT(dfo) != NULL) { UErrorCode error = U_ZERO_ERROR; diff -Nru php8.4-8.4.26/ext/intl/dateformat/dateformat_parse.c php8.4-8.4.27/ext/intl/dateformat/dateformat_parse.c --- php8.4-8.4.26/ext/intl/dateformat/dateformat_parse.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/dateformat/dateformat_parse.c 2026-10-19 14:38:59.000000000 +0000 @@ -41,10 +41,19 @@ /* Convert timezone to UTF-16. */ intl_convert_utf8_to_utf16(&text_utf16, &text_utf16_len, text_to_parse, text_len, &INTL_DATA_ERROR_CODE(dfo)); INTL_METHOD_CHECK_STATUS(dfo, "Error converting timezone to UTF-16" ); + if (parse_pos && !intl_convert_utf8_offset_to_utf16(text_to_parse, text_len, parse_pos, &INTL_DATA_ERROR_CODE(dfo))) { + if (text_utf16) { + efree(text_utf16); + } + INTL_METHOD_CHECK_STATUS(dfo, "Invalid UTF-8 offset" ); + } if (UNEXPECTED(update_calendar)) { UCalendar *parsed_calendar = (UCalendar *)udat_getCalendar(DATE_FORMAT_OBJECT(dfo)); udat_parseCalendar(DATE_FORMAT_OBJECT(dfo), parsed_calendar, text_utf16, text_utf16_len, parse_pos, &INTL_DATA_ERROR_CODE(dfo)); + if (parse_pos) { + *parse_pos = intl_convert_utf16_offset_to_utf8(text_utf16, text_utf16_len, *parse_pos); + } if (text_utf16) { efree(text_utf16); } @@ -52,6 +61,9 @@ timestamp = ucal_getMillis( parsed_calendar, &INTL_DATA_ERROR_CODE(dfo)); } else { timestamp = udat_parse(DATE_FORMAT_OBJECT(dfo), text_utf16, text_utf16_len, parse_pos, &INTL_DATA_ERROR_CODE(dfo)); + if (parse_pos) { + *parse_pos = intl_convert_utf16_offset_to_utf8(text_utf16, text_utf16_len, *parse_pos); + } if (text_utf16) { efree(text_utf16); } @@ -95,9 +107,18 @@ /* Convert timezone to UTF-16. */ intl_convert_utf8_to_utf16(&text_utf16, &text_utf16_len, text_to_parse, text_len, &INTL_DATA_ERROR_CODE(dfo)); INTL_METHOD_CHECK_STATUS(dfo, "Error converting timezone to UTF-16" ); + if (parse_pos && !intl_convert_utf8_offset_to_utf16(text_to_parse, text_len, parse_pos, &INTL_DATA_ERROR_CODE(dfo))) { + if (text_utf16) { + efree(text_utf16); + } + INTL_METHOD_CHECK_STATUS(dfo, "Invalid UTF-8 offset" ); + } parsed_calendar = (UCalendar *)udat_getCalendar(DATE_FORMAT_OBJECT(dfo)); udat_parseCalendar( DATE_FORMAT_OBJECT(dfo), parsed_calendar, text_utf16, text_utf16_len, parse_pos, &INTL_DATA_ERROR_CODE(dfo)); + if (parse_pos) { + *parse_pos = intl_convert_utf16_offset_to_utf8(text_utf16, text_utf16_len, *parse_pos); + } if (text_utf16) { efree(text_utf16); diff -Nru php8.4-8.4.26/ext/intl/formatter/formatter_parse.c php8.4-8.4.27/ext/intl/formatter/formatter_parse.c --- php8.4-8.4.26/ext/intl/formatter/formatter_parse.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/formatter/formatter_parse.c 2026-10-19 14:38:59.000000000 +0000 @@ -27,42 +27,6 @@ #define ICU_LOCALE_BUG 1 -static bool numfmt_utf8_offset_to_utf16(const char *str, size_t str_len, int32_t *position, UErrorCode *status) -{ - int32_t utf16_position; - - if (*position < 0 || (size_t) *position > str_len) { - return true; - } - - *status = U_ZERO_ERROR; - u_strFromUTF8(NULL, 0, &utf16_position, str, *position, status); - if (*status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(*status)) { - return false; - } - *status = U_ZERO_ERROR; - - *position = utf16_position; - return true; -} - -static int32_t numfmt_utf16_offset_to_utf8(const UChar *str, int32_t str_len, int32_t position) -{ - int32_t utf8_position; - UErrorCode status = U_ZERO_ERROR; - - if (position < 0 || position > str_len) { - return position; - } - - u_strToUTF8(NULL, 0, &utf8_position, str, position, &status); - if (status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(status)) { - return position; - } - - return utf8_position; -} - /* {{{ Parse a number. */ PHP_FUNCTION( numfmt_parse ) { @@ -97,7 +61,7 @@ /* Convert given string to UTF-16. */ intl_convert_utf8_to_utf16(&sstr, &sstr_len, str, str_len, &INTL_DATA_ERROR_CODE(nfo)); INTL_METHOD_CHECK_STATUS( nfo, "String conversion to UTF-16 failed" ); - if (zposition && !numfmt_utf8_offset_to_utf16(str, str_len, &position, &INTL_DATA_ERROR_CODE(nfo))) { + if (zposition && !intl_convert_utf8_offset_to_utf16(str, str_len, &position, &INTL_DATA_ERROR_CODE(nfo))) { efree(sstr); INTL_METHOD_CHECK_STATUS(nfo, "Invalid UTF-8 offset"); } @@ -141,7 +105,7 @@ } if (zposition) { - position = numfmt_utf16_offset_to_utf8(sstr, sstr_len, position); + position = intl_convert_utf16_offset_to_utf8(sstr, sstr_len, position); ZEND_TRY_ASSIGN_REF_LONG(zposition, position); } @@ -191,7 +155,7 @@ if(zposition) { position = (int32_t) zval_get_long(zposition); - if (!numfmt_utf8_offset_to_utf16(str, str_len, &position, &INTL_DATA_ERROR_CODE(nfo))) { + if (!intl_convert_utf8_offset_to_utf16(str, str_len, &position, &INTL_DATA_ERROR_CODE(nfo))) { efree(sstr); INTL_METHOD_CHECK_STATUS(nfo, "Invalid UTF-8 offset"); } @@ -200,7 +164,7 @@ number = unum_parseDoubleCurrency(FORMATTER_OBJECT(nfo), sstr, sstr_len, position_p, currency, &INTL_DATA_ERROR_CODE(nfo)); if(zposition) { - position = numfmt_utf16_offset_to_utf8(sstr, sstr_len, position); + position = intl_convert_utf16_offset_to_utf8(sstr, sstr_len, position); ZEND_TRY_ASSIGN_REF_LONG(zposition, position); } if (sstr) { diff -Nru php8.4-8.4.26/ext/intl/grapheme/grapheme_string.c php8.4-8.4.27/ext/intl/grapheme/grapheme_string.c --- php8.4-8.4.26/ext/intl/grapheme/grapheme_string.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/grapheme/grapheme_string.c 2026-10-19 14:38:59.000000000 +0000 @@ -117,7 +117,9 @@ if (found) { RETURN_LONG(found - haystack); } - RETURN_FALSE; + if (grapheme_ascii_check((unsigned char *)needle, needle_len) >= 0) { + RETURN_FALSE; + } } /* do utf16 part of the strpos */ @@ -550,7 +552,9 @@ Z_PARAM_BOOL(part) ZEND_PARSE_PARAMETERS_END(); - if ( !f_ignore_case ) { + if ( !f_ignore_case + && grapheme_ascii_check((unsigned char *)haystack, haystack_len) >= 0 + && grapheme_ascii_check((unsigned char *)needle, needle_len) >= 0 ) { /* ASCII optimization: quick check to see if the string might be there */ found = php_memnstr(haystack, needle, needle_len, haystack + haystack_len); @@ -560,15 +564,12 @@ RETURN_FALSE; } - /* if it is there, and if the haystack is ascii, we are all done */ - if ( grapheme_ascii_check((unsigned char *)haystack, haystack_len) >= 0 ) { - size_t found_offset = found - haystack; - - if (part) { - RETURN_STRINGL(haystack, found_offset); - } else { - RETURN_STRINGL(found, haystack_len - found_offset); - } + size_t found_offset = found - haystack; + + if (part) { + RETURN_STRINGL(haystack, found_offset); + } else { + RETURN_STRINGL(found, haystack_len - found_offset); } } @@ -894,6 +895,9 @@ if (i == split_len - 1) { if ( pos != UBRK_DONE ) { add_next_index_stringl(return_value, pstr, pos - current); + if (ZEND_HAS_OOM()) { + goto oom; + } end = pstr + pos - current; i = 0; pstr += pos - current; @@ -910,6 +914,12 @@ utext_close(ut); ubrk_close(bi); + return; + +oom: + utext_close(ut); + ubrk_close(bi); + RETURN_OOM(); } /* }}} */ diff -Nru php8.4-8.4.26/ext/intl/grapheme/grapheme_util.c php8.4-8.4.27/ext/intl/grapheme/grapheme_util.c --- php8.4-8.4.26/ext/intl/grapheme/grapheme_util.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/grapheme/grapheme_util.c 2026-10-19 14:38:59.000000000 +0000 @@ -106,6 +106,9 @@ if(puchar_pos) { *puchar_pos = -1; } + if (haystack_len == 0 && needle_len > 0) { + return -1; + } /* convert the strings to UTF-16. */ status = U_ZERO_ERROR; @@ -181,6 +184,12 @@ break; } prev_pos = char_pos; + int32_t next_pos = ubrk_following(bi, char_pos); + if (next_pos == UBRK_DONE) { + break; + } + usearch_setOffset(src, next_pos, &status); + STRPOS_CHECK_STATUS(status, "Invalid search offset"); } while(1); } } else { @@ -190,7 +199,7 @@ if(char_pos != USEARCH_DONE && ubrk_isBoundary(bi, char_pos)) { ret_pos = grapheme_count_graphemes(bi, uhaystack,char_pos); if(puchar_pos) { - *puchar_pos = char_pos; + *puchar_pos = u_countChar32(uhaystack, char_pos); } } else { ret_pos = -1; diff -Nru php8.4-8.4.26/ext/intl/intl_convert.c php8.4-8.4.27/ext/intl/intl_convert.c --- php8.4-8.4.26/ext/intl/intl_convert.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/intl_convert.c 2026-10-19 14:38:59.000000000 +0000 @@ -22,6 +22,8 @@ #include "intl_common.h" #include "intl_convert.h" +#include + /* {{{ intl_convert_utf8_to_utf16 * Convert given string from UTF-8 to UTF-16 to *target buffer. * @@ -150,3 +152,43 @@ return dst; } /* }}} */ + +bool intl_convert_utf8_offset_to_utf16(const char *str, size_t str_len, int32_t *position, UErrorCode *status) +{ + int32_t utf16_position; + + if (*position < 0 || (size_t) *position > str_len) { + return true; + } + + *status = U_ZERO_ERROR; + u_strFromUTF8(NULL, 0, &utf16_position, str, *position, status); + if (*status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(*status)) { + return false; + } + *status = U_ZERO_ERROR; + + *position = utf16_position; + return true; +} + +int32_t intl_convert_utf16_offset_to_utf8(const UChar *str, int32_t str_len, int32_t position) +{ + int32_t utf8_position; + UErrorCode status = U_ZERO_ERROR; + + if (position < 0 || position > str_len) { + return position; + } + + if (position > 0 && position < str_len && U16_IS_LEAD(str[position - 1]) && U16_IS_TRAIL(str[position])) { + position--; + } + + u_strToUTF8(NULL, 0, &utf8_position, str, position, &status); + if (status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(status)) { + return position; + } + + return utf8_position; +} diff -Nru php8.4-8.4.26/ext/intl/intl_convert.h php8.4-8.4.27/ext/intl/intl_convert.h --- php8.4-8.4.26/ext/intl/intl_convert.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/intl_convert.h 2026-10-19 14:38:59.000000000 +0000 @@ -27,4 +27,12 @@ const UChar* src, int32_t src_len, UErrorCode* status ); +bool intl_convert_utf8_offset_to_utf16( + const char* str, size_t str_len, + int32_t* position, UErrorCode* status ); + +int32_t intl_convert_utf16_offset_to_utf8( + const UChar* str, int32_t str_len, + int32_t position ); + #endif // INTL_CONVERT_H diff -Nru php8.4-8.4.26/ext/intl/msgformat/msgformat_class.c php8.4-8.4.27/ext/intl/msgformat/msgformat_class.c --- php8.4-8.4.26/ext/intl/msgformat/msgformat_class.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/msgformat/msgformat_class.c 2026-10-19 14:38:59.000000000 +0000 @@ -63,6 +63,12 @@ /* clone standard parts */ zend_objects_clone_members(&new_mfo->zo, &mfo->zo); + if (mfo->mf_data.orig_format != NULL) { + new_mfo->mf_data.orig_format = estrndup(mfo->mf_data.orig_format, mfo->mf_data.orig_format_len); + new_mfo->mf_data.orig_format_len = mfo->mf_data.orig_format_len; + } + new_mfo->mf_data.tz_set = mfo->mf_data.tz_set; + /* clone formatter object */ if (MSG_FORMAT_OBJECT(mfo) != NULL) { UErrorCode error = U_ZERO_ERROR; diff -Nru php8.4-8.4.26/ext/intl/normalizer/normalizer_normalize.c php8.4-8.4.27/ext/intl/normalizer/normalizer_normalize.c --- php8.4-8.4.26/ext/intl/normalizer/normalizer_normalize.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/intl/normalizer/normalizer_normalize.c 2026-10-19 14:38:59.000000000 +0000 @@ -148,7 +148,10 @@ /* Allocate memory for the destination buffer for normalization */ uret_len = uinput_len * expansion_factor; - uret_buf = eumalloc( uret_len + 1 ); + uret_buf = safe_femalloc(uret_len + 1, sizeof(UChar), 0, /* fallible */ true); + if (!uret_buf) { + RETURN_OOM(); + } /* normalize */ #if U_ICU_VERSION_MAJOR_NUM < 56 @@ -173,7 +176,11 @@ * uret_buf = eurealloc(uret_buf, size_needed + 1); */ efree( uret_buf ); - uret_buf = eumalloc( size_needed + 1 ); + uret_buf = safe_femalloc(size_needed + 1, sizeof(UChar), 0, /* fallible */ true); + if (!uret_buf) { + efree(uinput); + RETURN_OOM(); + } uret_len = size_needed; status = U_ZERO_ERROR; diff -Nru php8.4-8.4.26/ext/intl/tests/clone_preserves_php_fields.phpt php8.4-8.4.27/ext/intl/tests/clone_preserves_php_fields.phpt --- php8.4-8.4.26/ext/intl/tests/clone_preserves_php_fields.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/clone_preserves_php_fields.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +Cloning IntlDateFormatter and MessageFormatter preserves PHP-side fields +--EXTENSIONS-- +intl +--FILE-- +getDateType()); +var_dump($c->getTimeType()); +var_dump($c->getCalendar()); +var_dump($c->format(strtotime('2024-01-02 03:04:05 UTC'))); +$c->setCalendar(IntlDateFormatter::GREGORIAN); +var_dump($c->getPattern()); + +$m = new MessageFormatter('en_US', '{0, number}'); +$mc = clone $m; +var_dump($mc->getPattern()); +var_dump($mc->format([1.5])); + +date_default_timezone_set('UTC'); +$t = new MessageFormatter('en_US', '{0,time,short}'); +$dt = new DateTimeImmutable('2024-01-02 03:04:05', new DateTimeZone('UTC')); +$t->format([$dt]); +$tc = clone $t; +date_default_timezone_set('America/New_York'); +var_dump($t->format([$dt]) === $tc->format([$dt])); +?> +--EXPECT-- +int(1) +int(2) +int(1) +string(26) "2. Januar 2024 um 03:04:05" +string(23) "d. MMMM y 'um' HH:mm:ss" +string(11) "{0, number}" +string(3) "1.5" +bool(true) diff -Nru php8.4-8.4.26/ext/intl/tests/collator_attribute_unconstructed.phpt php8.4-8.4.27/ext/intl/tests/collator_attribute_unconstructed.phpt --- php8.4-8.4.26/ext/intl/tests/collator_attribute_unconstructed.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/collator_attribute_unconstructed.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,55 @@ +--TEST-- +Collator attribute and strength methods on unconstructed object +--EXTENSIONS-- +intl +--FILE-- + fn() => $c->getAttribute(Collator::NUMERIC_COLLATION), + 'setAttribute' => fn() => $c->setAttribute(Collator::NUMERIC_COLLATION, Collator::ON), + 'getStrength' => fn() => $c->getStrength(), + 'setStrength' => fn() => $c->setStrength(Collator::SECONDARY), +]; + +foreach ($methods as $method => $call) { + try { + $call(); + } catch (Error $e) { + echo $method, ': ', $e::class, ': ', $e->getMessage(), PHP_EOL; + } +} + +$functions = [ + 'collator_get_attribute' => fn() => collator_get_attribute($c, Collator::NUMERIC_COLLATION), + 'collator_set_attribute' => fn() => collator_set_attribute($c, Collator::NUMERIC_COLLATION, Collator::ON), + 'collator_get_strength' => fn() => collator_get_strength($c), + 'collator_set_strength' => fn() => collator_set_strength($c, Collator::SECONDARY), +]; + +foreach ($functions as $function => $call) { + try { + $call(); + } catch (Error $e) { + echo $function, ': ', $e::class, ': ', $e->getMessage(), PHP_EOL; + } +} + +?> +--EXPECT-- +getAttribute: Error: Object not initialized +setAttribute: Error: Object not initialized +getStrength: Error: Object not initialized +setStrength: Error: Object not initialized +collator_get_attribute: Error: Object not initialized +collator_set_attribute: Error: Object not initialized +collator_get_strength: Error: Object not initialized +collator_set_strength: Error: Object not initialized diff -Nru php8.4-8.4.26/ext/intl/tests/dateformat_parse_utf8_offset.phpt php8.4-8.4.27/ext/intl/tests/dateformat_parse_utf8_offset.phpt --- php8.4-8.4.26/ext/intl/tests/dateformat_parse_utf8_offset.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/dateformat_parse_utf8_offset.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,68 @@ +--TEST-- +IntlDateFormatter parsing uses UTF-8 byte offsets +--EXTENSIONS-- +intl +--FILE-- +parse($text, $offset)), $offset); + +echo "localtime():\n"; +$offset = strlen($prefix); +$tm = $formatter->localtime($text, $offset); +var_dump($tm['tm_year'] + 1900, $tm['tm_mon'] + 1, $tm['tm_mday'], $offset); + +echo "parseToCalendar():\n"; +$offset = strlen($prefix); +var_dump(gmdate('Y-m-d', $formatter->parseToCalendar($text, $offset)), $offset); + +echo "failed parse:\n"; +$offset = strlen($prefix); +var_dump($formatter->parse($prefix . '2017-xx-12', $offset), $offset); + +echo "offset inside a character:\n"; +$offset = 1; +var_dump($formatter->parse($text, $offset), $offset, intl_get_error_message()); + +echo "partial match inside a surrogate pair:\n"; +$formatter = new IntlDateFormatter('en_US', IntlDateFormatter::NONE, IntlDateFormatter::NONE, 'UTC', IntlDateFormatter::GREGORIAN, "\u{20AC}\u{1F600}yyyy-MM-dd"); +$offset = 0; +var_dump($formatter->parse("\u{20AC}\u{1F601}2017-10-12", $offset), $offset); +$formatter = new IntlDateFormatter('en_US', IntlDateFormatter::NONE, IntlDateFormatter::NONE, 'UTC', IntlDateFormatter::GREGORIAN, "yyyy-MM-dd\u{1F600}"); +foreach (['parse', 'localtime', 'parseToCalendar'] as $method) { + $offset = 0; + $formatter->$method("2017-10-12\u{1F601}", $offset); + echo "$method(): "; + var_dump($offset); +} +?> +--EXPECT-- +parse(): +string(10) "2017-10-12" +int(14) +localtime(): +int(2017) +int(10) +int(12) +int(14) +parseToCalendar(): +string(10) "2017-10-12" +int(14) +failed parse: +bool(false) +int(9) +offset inside a character: +bool(false) +int(1) +string(42) "Invalid UTF-8 offset: U_INVALID_CHAR_FOUND" +partial match inside a surrogate pair: +bool(false) +int(3) +parse(): int(10) +localtime(): int(10) +parseToCalendar(): int(10) diff -Nru php8.4-8.4.26/ext/intl/tests/grapheme_search_empty_haystack.phpt php8.4-8.4.27/ext/intl/tests/grapheme_search_empty_haystack.phpt --- php8.4-8.4.26/ext/intl/tests/grapheme_search_empty_haystack.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/grapheme_search_empty_haystack.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,55 @@ +--TEST-- +Grapheme searches handle an empty haystack without ICU errors +--EXTENSIONS-- +intl +--INI-- +intl.error_level=2 +--FILE-- + +--EXPECT-- +grapheme_strpos: [false,false,false,false,0], error: 0 +grapheme_stripos: [false,false,false,false,0], error: 0 +grapheme_strrpos: [false,false,false,false,0], error: 0 +grapheme_strripos: [false,false,false,false,0], error: 0 +grapheme_strstr: [[false,false],[false,false],[false,false],[false,false],["",""]], error: 0 +grapheme_stristr: [[false,false],[false,false],[false,false],[false,false],["",""]], error: 0 +grapheme_strpos: [false,false,false,false,0], error: 0 +grapheme_stripos: [false,false,false,false,0], error: 0 +grapheme_strrpos: [false,false,false,false,0], error: 0 +grapheme_strripos: [false,false,false,false,0], error: 0 +grapheme_strstr: [[false,false],[false,false],[false,false],[false,false],["",""]], error: 0 +grapheme_stristr: [[false,false],[false,false],[false,false],[false,false],["",""]], error: 0 +grapheme_strpos(-1): ValueError +grapheme_strpos(1): ValueError +grapheme_stripos(-1): ValueError +grapheme_stripos(1): ValueError +grapheme_strrpos(-1): ValueError +grapheme_strrpos(1): ValueError +grapheme_strripos(-1): ValueError +grapheme_strripos(1): ValueError diff -Nru php8.4-8.4.26/ext/intl/tests/grapheme_strpos_ascii_haystack.phpt php8.4-8.4.27/ext/intl/tests/grapheme_strpos_ascii_haystack.phpt --- php8.4-8.4.26/ext/intl/tests/grapheme_strpos_ascii_haystack.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/grapheme_strpos_ascii_haystack.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,56 @@ +--TEST-- +grapheme_strpos() uses Unicode matching for non-ASCII needles in ASCII haystacks +--EXTENSIONS-- +intl +--INI-- +intl.use_exceptions=1 +intl.error_level=2 +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECT-- +int(0) +int(1) +int(1) +int(3) +int(3) +bool(false) +int(1) +int(3) +int(1) +bool(false) +int(1) +bool(false) +bool(false) +bool(false) +bool(false) +int(0) +int(3) +grapheme_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack) diff -Nru php8.4-8.4.26/ext/intl/tests/grapheme_strrpos_negative_offset_overlap.phpt php8.4-8.4.27/ext/intl/tests/grapheme_strrpos_negative_offset_overlap.phpt --- php8.4-8.4.26/ext/intl/tests/grapheme_strrpos_negative_offset_overlap.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/grapheme_strrpos_negative_offset_overlap.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +grapheme_strrpos() and grapheme_strripos() find overlapping matches with negative offsets +--EXTENSIONS-- +intl +--FILE-- + +--EXPECT-- +grapheme_strrpos: 1, 1, 1, 1, 0 +grapheme_strripos: 1, 1, 1, 1, 0 +grapheme_strrpos: 1, 1, 1, 1, 0 +grapheme_strripos: 1, 1, 1, 1, 0 +grapheme_strrpos: 1, 1, 1, 1, 0 +grapheme_strripos: 1, 1, 1, 1, 0 +grapheme_strrpos: 1, 1, 1, 1, 0 +grapheme_strripos: 1, 1, 1, 1, 0 +int(1) +int(3) +int(0) diff -Nru php8.4-8.4.26/ext/intl/tests/grapheme_strstr_canonical_match.phpt php8.4-8.4.27/ext/intl/tests/grapheme_strstr_canonical_match.phpt --- php8.4-8.4.26/ext/intl/tests/grapheme_strstr_canonical_match.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/grapheme_strstr_canonical_match.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +grapheme_strstr() finds canonically equivalent strings with different byte representations +--EXTENSIONS-- +intl +--FILE-- + +--EXPECT-- +["e\u0301x",""] +["\u00e9x",""] +["e\u0301x","p"] +["e\u0301x\u00e9","p"] +["bc","a"] +[false,false] diff -Nru php8.4-8.4.26/ext/intl/tests/grapheme_strstr_supplementary_prefix.phpt php8.4-8.4.27/ext/intl/tests/grapheme_strstr_supplementary_prefix.phpt --- php8.4-8.4.26/ext/intl/tests/grapheme_strstr_supplementary_prefix.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/grapheme_strstr_supplementary_prefix.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +grapheme_strstr() and grapheme_stristr() preserve match boundaries after supplementary characters +--EXTENSIONS-- +intl +--FILE-- + +--EXPECT-- +string(3) "abc" +string(4) "😀" +string(3) "abc" +string(4) "😀" +string(3) "abc" +string(8) "😀😀" +string(3) "abc" +string(8) "😀😀" +string(3) "abc" +string(7) "😀é" +string(3) "abc" +string(7) "😀é" diff -Nru php8.4-8.4.26/ext/intl/tests/oom_grapheme_str_split.phpt php8.4-8.4.27/ext/intl/tests/oom_grapheme_str_split.phpt --- php8.4-8.4.26/ext/intl/tests/oom_grapheme_str_split.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/oom_grapheme_str_split.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +grapheme_str_split() doesn't reach hard limit +--EXTENSIONS-- +intl +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/intl/tests/oom_normalizer_normalize.phpt php8.4-8.4.27/ext/intl/tests/oom_normalizer_normalize.phpt --- php8.4-8.4.26/ext/intl/tests/oom_normalizer_normalize.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/oom_normalizer_normalize.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +Normalizer::normalize() doesn't reach hard limit +--EXTENSIONS-- +intl +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/intl/tests/oom_normalizer_normalize_func.phpt php8.4-8.4.27/ext/intl/tests/oom_normalizer_normalize_func.phpt --- php8.4-8.4.26/ext/intl/tests/oom_normalizer_normalize_func.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/oom_normalizer_normalize_func.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +normalizer_normalize() doesn't reach hard limit +--EXTENSIONS-- +intl +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/intl/tests/oom_uconverter_convert.phpt php8.4-8.4.27/ext/intl/tests/oom_uconverter_convert.phpt --- php8.4-8.4.26/ext/intl/tests/oom_uconverter_convert.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/oom_uconverter_convert.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +UConverter::convert() doesn't reach hard limit +--EXTENSIONS-- +intl +--INI-- +memory_limit=8M +--FILE-- +convert($source); +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/intl/tests/oom_uconverter_transcode.phpt php8.4-8.4.27/ext/intl/tests/oom_uconverter_transcode.phpt --- php8.4-8.4.26/ext/intl/tests/oom_uconverter_transcode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/intl/tests/oom_uconverter_transcode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +UConverter::transcode() doesn't reach hard limit +--EXTENSIONS-- +intl +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/json/json_encoder.c php8.4-8.4.27/ext/json/json_encoder.c --- php8.4-8.4.26/ext/json/json_encoder.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/json/json_encoder.c 2026-10-19 14:38:59.000000000 +0000 @@ -186,11 +186,16 @@ php_json_pretty_print_indent(buf, options, encoder); if (php_json_escape_string(buf, ZSTR_VAL(prop_info->name), ZSTR_LEN(prop_info->name), - options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE && - (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) && - buf->s) { - ZSTR_LEN(buf->s) -= 4; - smart_str_appendl(buf, "\"\"", 2); + options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE) { + if (ZEND_HAS_OOM()) { + PHP_JSON_HASH_UNPROTECT_RECURSION(obj); + return FAILURE; + } + if ((options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) && buf->s) { + ZEND_ASSERT(ZSTR_LEN(buf->s) >= 4); + ZSTR_LEN(buf->s) -= 4; + smart_str_appendl(buf, "\"\"", 2); + } } smart_str_appendc(buf, ':'); @@ -302,11 +307,17 @@ php_json_pretty_print_indent(buf, options, encoder); if (php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key), - options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE && - (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) && - buf->s) { - ZSTR_LEN(buf->s) -= 4; - smart_str_appendl(buf, "\"\"", 2); + options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE) { + if (ZEND_HAS_OOM()) { + PHP_JSON_HASH_UNPROTECT_RECURSION(myht); + zend_release_properties(prop_ht); + return FAILURE; + } + if ((options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) && buf->s) { + ZEND_ASSERT(ZSTR_LEN(buf->s) >= 4); + ZSTR_LEN(buf->s) -= 4; + smart_str_appendl(buf, "\"\"", 2); + } } } else { if (need_comma) { @@ -398,7 +409,9 @@ checkpoint = buf->s ? ZSTR_LEN(buf->s) : 0; /* pre-allocate for string length plus 2 quotes */ - smart_str_alloc(buf, len+2, 0); + if (UNEXPECTED(smart_str_falloc(buf, len+2, 0, /* fallible */ true) == (size_t)-1)) { + return FAILURE; + } smart_str_appendc(buf, '"'); pos = 0; @@ -417,6 +430,11 @@ break; } } else { + /* An escaped byte can append six. */ + if (ZEND_HAS_OOM()) { + ZSTR_LEN(buf->s) = checkpoint; + return FAILURE; + } if (pos) { smart_str_appendl(buf, s, pos); s += pos; @@ -659,6 +677,9 @@ zend_result php_json_encode_zval(smart_str *buf, zval *val, int options, php_json_encoder *encoder) /* {{{ */ { + if (ZEND_HAS_OOM()) { + return FAILURE; + } again: switch (Z_TYPE_P(val)) { diff -Nru php8.4-8.4.26/ext/json/json_parser.tab.c php8.4-8.4.27/ext/json/json_parser.tab.c --- php8.4-8.4.26/ext/json/json_parser.tab.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/json/json_parser.tab.c 2026-10-19 14:38:59.000000000 +0000 @@ -567,9 +567,9 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { - 0, 79, 79, 90, 89, 107, 108, 116, 124, 128, - 135, 146, 145, 163, 164, 172, 180, 184, 189, 197, - 198, 202, 203, 204, 205, 206, 207, 208, 209, 210 + 0, 79, 79, 90, 89, 107, 108, 116, 126, 130, + 139, 150, 149, 167, 168, 176, 186, 190, 199, 209, + 210, 214, 215, 216, 217, 218, 219, 220, 221, 222 }; #endif @@ -1265,14 +1265,18 @@ if ((parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) && parser->methods.object_create == php_json_parser_object_create) { ZVAL_EMPTY_ARRAY(&(yyval.value)); } else { - parser->methods.object_create(parser, &(yyval.value)); + if (UNEXPECTED(parser->methods.object_create(parser, &(yyval.value)) == FAILURE)) { + YYERROR; + } } } break; case 9: /* member: key ':' value */ { - parser->methods.object_create(parser, &(yyval.value)); + if (UNEXPECTED(parser->methods.object_create(parser, &(yyval.value)) == FAILURE)) { + YYERROR; + } if (parser->methods.object_update(parser, &(yyval.value), Z_STR((yyvsp[-2].value)), &(yyvsp[0].value)) == FAILURE) { YYERROR; } @@ -1319,21 +1323,29 @@ if (parser->methods.array_create == php_json_parser_array_create) { ZVAL_EMPTY_ARRAY(&(yyval.value)); } else { - parser->methods.array_create(parser, &(yyval.value)); + if (UNEXPECTED(parser->methods.array_create(parser, &(yyval.value)) == FAILURE)) { + YYERROR; + } } } break; case 17: /* element: value */ { - parser->methods.array_create(parser, &(yyval.value)); - parser->methods.array_append(parser, &(yyval.value), &(yyvsp[0].value)); + if (UNEXPECTED(parser->methods.array_create(parser, &(yyval.value)) == FAILURE)) { + YYERROR; + } + if (UNEXPECTED(parser->methods.array_append(parser, &(yyval.value), &(yyvsp[0].value)) == FAILURE)) { + YYERROR; + } } break; case 18: /* element: element ',' value */ { - parser->methods.array_append(parser, &(yyvsp[-2].value), &(yyvsp[0].value)); + if (UNEXPECTED(parser->methods.array_append(parser, &(yyvsp[-2].value), &(yyvsp[0].value)) == FAILURE)) { + YYERROR; + } ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value)); } break; @@ -1535,22 +1547,34 @@ static int php_json_parser_array_create(php_json_parser *parser, zval *array) { - array_init(array); + if (UNEXPECTED(!array_finit(array))) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return FAILURE; + } return SUCCESS; } static int php_json_parser_array_append(php_json_parser *parser, zval *array, zval *zvalue) { - zend_hash_next_index_insert(Z_ARRVAL_P(array), zvalue); + if (UNEXPECTED(zend_hash_next_index_finsert(Z_ARRVAL_P(array), zvalue) == HASH_NOMEM)) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return FAILURE; + } return SUCCESS; } static int php_json_parser_object_create(php_json_parser *parser, zval *object) { + bool created; + if (parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) { - array_init(object); + created = array_finit(object); } else { - object_init(object); + created = object_finit(object); + } + if (UNEXPECTED(!created)) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return FAILURE; } return SUCCESS; } @@ -1559,7 +1583,9 @@ { /* if JSON_OBJECT_AS_ARRAY is set */ if (Z_TYPE_P(object) == IS_ARRAY) { - zend_symtable_update(Z_ARRVAL_P(object), key, zvalue); + if (UNEXPECTED(zend_symtable_fupdate(Z_ARRVAL_P(object), key, zvalue) == HASH_NOMEM)) { + return FAILURE; + } } else { if (ZSTR_LEN(key) > 0 && ZSTR_VAL(key)[0] == '\0') { parser->scanner.errcode = PHP_JSON_ERROR_INVALID_PROPERTY_NAME; @@ -1570,6 +1596,9 @@ } zend_std_write_property(Z_OBJ_P(object), key, zvalue, NULL); Z_TRY_DELREF_P(zvalue); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } zend_string_release_ex(key, 0); diff -Nru php8.4-8.4.26/ext/json/json_parser.y php8.4-8.4.27/ext/json/json_parser.y --- php8.4-8.4.26/ext/json/json_parser.y 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/json/json_parser.y 2026-10-19 14:38:59.000000000 +0000 @@ -118,7 +118,9 @@ if ((parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) && parser->methods.object_create == php_json_parser_object_create) { ZVAL_EMPTY_ARRAY(&$$); } else { - parser->methods.object_create(parser, &$$); + if (UNEXPECTED(parser->methods.object_create(parser, &$$) == FAILURE)) { + YYERROR; + } } } | member @@ -127,7 +129,9 @@ member: key ':' value { - parser->methods.object_create(parser, &$$); + if (UNEXPECTED(parser->methods.object_create(parser, &$$) == FAILURE)) { + YYERROR; + } if (parser->methods.object_update(parser, &$$, Z_STR($1), &$3) == FAILURE) { YYERROR; } @@ -174,7 +178,9 @@ if (parser->methods.array_create == php_json_parser_array_create) { ZVAL_EMPTY_ARRAY(&$$); } else { - parser->methods.array_create(parser, &$$); + if (UNEXPECTED(parser->methods.array_create(parser, &$$) == FAILURE)) { + YYERROR; + } } } | element @@ -183,12 +189,18 @@ element: value { - parser->methods.array_create(parser, &$$); - parser->methods.array_append(parser, &$$, &$1); + if (UNEXPECTED(parser->methods.array_create(parser, &$$) == FAILURE)) { + YYERROR; + } + if (UNEXPECTED(parser->methods.array_append(parser, &$$, &$1) == FAILURE)) { + YYERROR; + } } | element ',' value { - parser->methods.array_append(parser, &$1, &$3); + if (UNEXPECTED(parser->methods.array_append(parser, &$1, &$3) == FAILURE)) { + YYERROR; + } ZVAL_COPY_VALUE(&$$, &$1); } ; @@ -214,22 +226,34 @@ static int php_json_parser_array_create(php_json_parser *parser, zval *array) { - array_init(array); + if (UNEXPECTED(!array_finit(array))) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return FAILURE; + } return SUCCESS; } static int php_json_parser_array_append(php_json_parser *parser, zval *array, zval *zvalue) { - zend_hash_next_index_insert(Z_ARRVAL_P(array), zvalue); + if (UNEXPECTED(zend_hash_next_index_finsert(Z_ARRVAL_P(array), zvalue) == HASH_NOMEM)) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return FAILURE; + } return SUCCESS; } static int php_json_parser_object_create(php_json_parser *parser, zval *object) { + bool created; + if (parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) { - array_init(object); + created = array_finit(object); } else { - object_init(object); + created = object_finit(object); + } + if (UNEXPECTED(!created)) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return FAILURE; } return SUCCESS; } @@ -238,7 +262,9 @@ { /* if JSON_OBJECT_AS_ARRAY is set */ if (Z_TYPE_P(object) == IS_ARRAY) { - zend_symtable_update(Z_ARRVAL_P(object), key, zvalue); + if (UNEXPECTED(zend_symtable_fupdate(Z_ARRVAL_P(object), key, zvalue) == HASH_NOMEM)) { + return FAILURE; + } } else { if (ZSTR_LEN(key) > 0 && ZSTR_VAL(key)[0] == '\0') { parser->scanner.errcode = PHP_JSON_ERROR_INVALID_PROPERTY_NAME; @@ -249,6 +275,9 @@ } zend_std_write_property(Z_OBJ_P(object), key, zvalue, NULL); Z_TRY_DELREF_P(zvalue); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } zend_string_release_ex(key, 0); diff -Nru php8.4-8.4.26/ext/json/json_scanner.c php8.4-8.4.27/ext/json/json_scanner.c --- php8.4-8.4.26/ext/json/json_scanner.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/json/json_scanner.c 2026-10-19 14:38:59.000000000 +0000 @@ -566,7 +566,11 @@ ZVAL_EMPTY_STRING(&s->value); return PHP_JSON_T_ESTRING; } - str = zend_string_alloc(len, 0); + str = zend_string_falloc(len, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!str)) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return PHP_JSON_T_ERROR; + } ZSTR_VAL(str)[len] = '\0'; ZVAL_STR(&s->value, str); if (s->str_esc || s->utf8_invalid) { diff -Nru php8.4-8.4.26/ext/json/json_scanner.re php8.4-8.4.27/ext/json/json_scanner.re --- php8.4-8.4.26/ext/json/json_scanner.re 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/json/json_scanner.re 2026-10-19 14:38:59.000000000 +0000 @@ -264,7 +264,11 @@ ZVAL_EMPTY_STRING(&s->value); return PHP_JSON_T_ESTRING; } - str = zend_string_alloc(len, 0); + str = zend_string_falloc(len, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!str)) { + ZEND_ASSERT(ZEND_HAS_OOM()); + return PHP_JSON_T_ERROR; + } ZSTR_VAL(str)[len] = '\0'; ZVAL_STR(&s->value, str); if (s->str_esc || s->utf8_invalid) { diff -Nru php8.4-8.4.26/ext/json/tests/json_decode_oom_utf8_substitute.phpt php8.4-8.4.27/ext/json/tests/json_decode_oom_utf8_substitute.phpt --- php8.4-8.4.26/ext/json/tests/json_decode_oom_utf8_substitute.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/json/tests/json_decode_oom_utf8_substitute.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +json_decode() with JSON_INVALID_UTF8_SUBSTITUTE doesn't reach hard limit +--INI-- +memory_limit=16M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/json/tests/json_encode_oom_escape.phpt php8.4-8.4.27/ext/json/tests/json_encode_oom_escape.phpt --- php8.4-8.4.26/ext/json/tests/json_encode_oom_escape.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/json/tests/json_encode_oom_escape.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +json_encode() escaping doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/json/tests/json_encode_oom_partial_output.phpt php8.4-8.4.27/ext/json/tests/json_encode_oom_partial_output.phpt --- php8.4-8.4.26/ext/json/tests/json_encode_oom_partial_output.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/json/tests/json_encode_oom_partial_output.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +json_encode() with JSON_PARTIAL_OUTPUT_ON_ERROR doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/json/tests/json_encode_oom_pretty_print.phpt php8.4-8.4.27/ext/json/tests/json_encode_oom_pretty_print.phpt --- php8.4-8.4.26/ext/json/tests/json_encode_oom_pretty_print.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/json/tests/json_encode_oom_pretty_print.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +json_encode() with JSON_PRETTY_PRINT doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/json/tests/json_encode_oom_string_prealloc.phpt php8.4-8.4.27/ext/json/tests/json_encode_oom_string_prealloc.phpt --- php8.4-8.4.26/ext/json/tests/json_encode_oom_string_prealloc.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/json/tests/json_encode_oom_string_prealloc.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +json_encode() string pre-allocation doesn't reach hard limit +--INI-- +memory_limit=32M +memory_hard_limit_percent=110 +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 33554432 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/libxml/libxml.c php8.4-8.4.27/ext/libxml/libxml.c --- php8.4-8.4.26/ext/libxml/libxml.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/libxml/libxml.c 2026-10-19 14:38:59.000000000 +0000 @@ -618,8 +618,10 @@ return(ret); err: - /* Similarly to __xmlOutputBufferCreateFilename we should also close the encoder on failure. */ +#if LIBXML_VERSION < 21404 + /* As of libxml 2.14.4, libxml closes the encoder after this callback fails. */ xmlCharEncCloseFunc(encoder); +#endif return NULL; } @@ -687,6 +689,10 @@ { char *buf; bool output = false; + + if (ZEND_HAS_OOM()) { + return; + } size_t len = vspprintf(&buf, 0, msg, ap); size_t len_iter = len; @@ -1198,10 +1204,10 @@ ZEND_PARSE_PARAMETERS_NONE(); if (LIBXML(error_list)) { - array_init(return_value); + array_init_size(return_value, zend_llist_count(LIBXML(error_list))); error = zend_llist_get_first(LIBXML(error_list)); - while (error != NULL) { + while (error != NULL && !ZEND_HAS_OOM()) { zval z_error; php_libxml_create_error_object(&z_error, error); add_next_index_zval(return_value, &z_error); @@ -1499,6 +1505,7 @@ obj_node->_private = NULL; } } + object->node = NULL; } if (object != NULL && object->document != NULL) { /* Safe to call as if the resource were freed then doc pointer is NULL */ diff -Nru php8.4-8.4.26/ext/mbstring/libmbfl/filters/mbfilter_qprint.c php8.4-8.4.27/ext/mbstring/libmbfl/filters/mbfilter_qprint.c --- php8.4-8.4.26/ext/mbstring/libmbfl/filters/mbfilter_qprint.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/libmbfl/filters/mbfilter_qprint.c 2026-10-19 14:38:59.000000000 +0000 @@ -144,7 +144,7 @@ int mbfl_filt_conv_qprintenc_flush(mbfl_convert_filter *filter) { /* flush filter cache */ - (*filter->filter_function)('\0', filter); + CK((*filter->filter_function)('\0', filter)); filter->status &= ~0xffff; filter->cache = 0; diff -Nru php8.4-8.4.26/ext/mbstring/libmbfl/filters/mbfilter_utf8.c php8.4-8.4.27/ext/mbstring/libmbfl/filters/mbfilter_utf8.c --- php8.4-8.4.26/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2026-10-19 14:38:59.000000000 +0000 @@ -548,6 +548,12 @@ } else if (w < 0x800) { MB_CONVERT_BUF_ENSURE(buf, out, limit, len + 2); out = mb_convert_buf_add2(out, ((w >> 6) & 0x1F) | 0xC0, (w & 0x3F) | 0x80); + } else if (w >= 0xD800 && w <= 0xDFFF && buf->error_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_BADUTF8) { + /* Surrogate codepoints (which may come from UCS-2, UCS-4 or numeric entities) are not valid in UTF-8. + * BADUTF8 mode is only used internally to search strings; there, encoding them keeps them distinct + * instead of turning them all into the same error marker. */ + MB_CONVERT_ERROR(buf, out, limit, w, mb_wchar_to_utf8); + MB_CONVERT_BUF_ENSURE(buf, out, limit, len); } else if (w < 0x10000) { MB_CONVERT_BUF_ENSURE(buf, out, limit, len + 3); out = mb_convert_buf_add3(out, ((w >> 12) & 0xF) | 0xE0, ((w >> 6) & 0x3F) | 0x80, (w & 0x3F) | 0x80); diff -Nru php8.4-8.4.26/ext/mbstring/libmbfl/mbfl/mbfilter.c php8.4-8.4.27/ext/mbstring/libmbfl/mbfl/mbfilter.c --- php8.4-8.4.26/ext/mbstring/libmbfl/mbfl/mbfilter.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/libmbfl/mbfl/mbfilter.c 2026-10-19 14:38:59.000000000 +0000 @@ -216,13 +216,17 @@ return NULL; } - mbfl_memory_device_init(&device, length + 8, 0); + /* clamp init size to avoid over allocation */ + size_t init_size = MIN(string->len, length) + 8; + mbfl_memory_device_init(&device, init_size, 0); p = string->val; /* search start position */ for (q = string->val + from; p < q; p++) { - (*encoder->filter_function)(*p, encoder); + if ((*encoder->filter_function)(*p, encoder) < 0) { + goto err; + } } /* switch the drain direction */ @@ -246,7 +250,9 @@ /* output a little shorter than "length" */ /* XXX: the constant "20" was determined purely on the heuristics. */ for (r = p + length - 20; p < r; p++) { - (*encoder->filter_function)(*p, encoder); + if ((*encoder->filter_function)(*p, encoder) < 0) { + goto err_prev_bk; + } } /* if the offset of the resulting string exceeds the length, @@ -310,7 +316,9 @@ /* detect end position */ while (p < q) { - (*encoder->filter_function)(*p, encoder); + if ((*encoder->filter_function)(*p, encoder) < 0) { + goto err_bk; + } if (device.pos > length) { /* restore filter */ @@ -382,6 +390,31 @@ mbfl_convert_filter_delete(encoder); mbfl_convert_filter_delete(decoder); + + return result; + + /* Conversion failed, which for these filters means the output device + * could not be grown. Release the saved filter state which the normal + * exit path would have released, then everything else. */ +err_bk: + if (bk.decoder.filter_dtor) + bk.decoder.filter_dtor(&bk.decoder); + if (bk.encoder.filter_dtor) + bk.encoder.filter_dtor(&bk.encoder); + goto err; + +err_prev_bk: + if (_bk.decoder.filter_dtor) + _bk.decoder.filter_dtor(&_bk.decoder); + if (_bk.encoder.filter_dtor) + _bk.encoder.filter_dtor(&_bk.encoder); + +err: + mbfl_convert_filter_delete(encoder); + mbfl_convert_filter_delete(decoder); + mbfl_memory_device_clear(&device); + + return NULL; } return result; diff -Nru php8.4-8.4.26/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h php8.4-8.4.27/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h --- php8.4-8.4.26/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h 2026-10-19 14:38:59.000000000 +0000 @@ -162,17 +162,34 @@ buf->error_mode = err_mode; } +static inline zend_result mb_convert_buf_ensure(mb_convert_buf *buf, unsigned char **out, unsigned char **limit, size_t needed) +{ + ZEND_ASSERT(*out <= *limit); + if ((size_t)(*limit - *out) < needed) { + size_t oldsize = *limit - (unsigned char*)ZSTR_VAL((buf)->str); + size_t newsize = oldsize + MAX(oldsize >> 1, needed); + zend_string *newstr = safe_ferealloc((buf)->str, 1, newsize, _ZSTR_STRUCT_SIZE(0), /* fallible */ true); + if (!newstr) { + /* An earlier growth may have moved the buffer. */ + buf->out = *out; + buf->limit = *limit; + return FAILURE; + } + *out = (unsigned char*)ZSTR_VAL(newstr) + (*out - (unsigned char*)ZSTR_VAL((buf)->str)); + *limit = (unsigned char*)ZSTR_VAL(newstr) + newsize; + (buf)->str = newstr; + } + return SUCCESS; +} + #define MB_CONVERT_BUF_ENSURE(buf, out, limit, needed) \ - ZEND_ASSERT(out <= limit); \ - if ((size_t)(limit - out) < (needed)) { \ - size_t oldsize = limit - (unsigned char*)ZSTR_VAL((buf)->str); \ - size_t newsize = oldsize + MAX(oldsize >> 1, needed); \ - zend_string *newstr = erealloc((buf)->str, _ZSTR_STRUCT_SIZE(newsize)); \ - out = (unsigned char*)ZSTR_VAL(newstr) + (out - (unsigned char*)ZSTR_VAL((buf)->str)); \ - limit = (unsigned char*)ZSTR_VAL(newstr) + newsize; \ - (buf)->str = newstr; \ + if (!MB_CONVERT_BUF_ENSURE_EX(buf, out, limit, needed)) { \ + return; \ } +#define MB_CONVERT_BUF_ENSURE_EX(buf, out, limit, needed) \ + EXPECTED(mb_convert_buf_ensure(buf, &(out), &(limit), (needed)) == SUCCESS) + #define MB_CONVERT_BUF_STORE(buf, _out, _limit) (buf)->out = _out; (buf)->limit = _limit #define MB_CONVERT_BUF_LOAD(buf, _out, _limit) _out = (buf)->out; _limit = (buf)->limit diff -Nru php8.4-8.4.26/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c php8.4-8.4.27/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c --- php8.4-8.4.26/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c 2026-10-19 14:38:59.000000000 +0000 @@ -98,7 +98,11 @@ } size_t newlen = device->length + device->allocsz; - device->buffer = erealloc(device->buffer, newlen); + unsigned char *newbuffer = safe_ferealloc(device->buffer, 1, newlen, 0, /* fallible */ true); + if (!newbuffer) { + return -1; + } + device->buffer = newbuffer; device->length = newlen; } @@ -123,7 +127,11 @@ } size_t newlen = device->length + len + MBFL_MEMORY_DEVICE_ALLOC_SIZE; - device->buffer = erealloc(device->buffer, newlen); + unsigned char *newbuffer = safe_ferealloc(device->buffer, 1, newlen, 0, /* fallible */ true); + if (!newbuffer) { + return -1; + } + device->buffer = newbuffer; device->length = newlen; } @@ -175,7 +183,12 @@ return -1; } - device->buffer = erealloc(device->buffer, newlen * sizeof(int)); + unsigned int * newbuffer = safe_ferealloc(device->buffer, newlen, sizeof(int), 0, /* fallible */ true); + if (!newbuffer) { + return -1; + } + + device->buffer = newbuffer; device->length = newlen; } diff -Nru php8.4-8.4.26/ext/mbstring/mb_gpc.c php8.4-8.4.27/ext/mbstring/mb_gpc.c --- php8.4-8.4.26/ext/mbstring/mb_gpc.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/mb_gpc.c 2026-10-19 14:38:59.000000000 +0000 @@ -185,8 +185,15 @@ } num *= 2; /* need space for variable name and value */ - val_list = (char **)ecalloc(num, sizeof(char *)); - len_list = (size_t *)ecalloc(num, sizeof(size_t)); + val_list = (char **)fecalloc(num, sizeof(char *), /* fallible */ true); + if (!val_list) { + goto out; + } + + len_list = (size_t *)fecalloc(num, sizeof(size_t), /* fallible */ true); + if (!len_list) { + goto out; + } /* split and decode the query */ n = 0; @@ -267,6 +274,11 @@ n++; } efree(val); + + if (ZEND_HAS_OOM()) { + from_encoding = NULL; + goto out; + } } out: diff -Nru php8.4-8.4.26/ext/mbstring/mbstring.c php8.4-8.4.27/ext/mbstring/mbstring.c --- php8.4-8.4.26/ext/mbstring/mbstring.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/mbstring.c 2026-10-19 14:38:59.000000000 +0000 @@ -1652,6 +1652,10 @@ RETURN_THROWS(); } + if (split_len > ZSTR_LEN(str)) { + split_len = ZSTR_LEN(str); + } + const mbfl_encoding *enc = php_mb_get_encoding(encoding, 3); if (!enc) { RETURN_THROWS(); @@ -1667,16 +1671,23 @@ if (char_len) { unsigned int chunk_len = char_len * split_len; unsigned int chunks = ((ZSTR_LEN(str) / chunk_len) + split_len - 1) / split_len; /* round up */ - array_init_size(return_value, chunks); + if (UNEXPECTED(!array_finit_size_packed(return_value, chunks))) { + RETURN_OOM(); + } while (p < e) { add_next_index_stringl(return_value, (const char*)p, MIN(chunk_len, e - p)); p += chunk_len; + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } } } else if (enc->mblen_table) { unsigned char const *mbtab = enc->mblen_table; /* Assume that we have 1-byte characters */ - array_init_size(return_value, (ZSTR_LEN(str) + split_len - 1) / split_len); + if (UNEXPECTED(!array_finit_size_packed(return_value, (ZSTR_LEN(str) + split_len - 1) / split_len))) { + RETURN_OOM(); + } while (p < e) { unsigned char *chunk = p; /* start of chunk */ @@ -1688,10 +1699,15 @@ p = e; /* ensure chunk is in bounds */ } add_next_index_stringl(return_value, (const char*)chunk, p - chunk); + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } } } else { /* Assume that we have 1-byte characters */ - array_init_size(return_value, (ZSTR_LEN(str) + split_len - 1) / split_len); + if (UNEXPECTED(!array_finit_size_packed(return_value, (ZSTR_LEN(str) + split_len - 1) / split_len))) { + RETURN_OOM(); + } uint32_t wchar_buf[128]; size_t in_len = ZSTR_LEN(str); @@ -1700,6 +1716,10 @@ mb_convert_buf buf; while (in_len) { + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } + size_t out_len = enc->to_wchar(&p, &in_len, wchar_buf, 128, &state); ZEND_ASSERT(out_len <= 128); size_t i = 0; @@ -1723,6 +1743,10 @@ } while (i < out_len) { + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } + /* Prepare for the next chunk */ mb_convert_buf_init(&buf, split_len, MBSTRG(current_filter_illegal_substchar), MBSTRG(current_filter_illegal_mode)); @@ -1891,6 +1915,9 @@ } pos += u8_tbl[*pos]; } + if (pos > end) { + pos = end; + } return pos; } } @@ -2463,8 +2490,10 @@ } ret = mbfl_strcut(&string, &result, from, len); - ZEND_ASSERT(ret != NULL); - RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ + if (UNEXPECTED(ret == NULL)) { + RETURN_OOM(); + } + RETVAL_FSTRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ efree(ret->val); } /* }}} */ @@ -2637,7 +2666,9 @@ append_trim_marker: if (ZSTR_LEN(marker) > 0) { - MB_CONVERT_BUF_ENSURE((&buf), buf.out, buf.limit, ZSTR_LEN(marker)); + if (!MB_CONVERT_BUF_ENSURE_EX((&buf), buf.out, buf.limit, ZSTR_LEN(marker))) { + return mb_convert_buf_result(&buf, enc); + } buf.out = zend_mempcpy(buf.out, ZSTR_VAL(marker), ZSTR_LEN(marker)); } @@ -2694,7 +2725,12 @@ } } - RETVAL_STR(mb_trim_string(str, trimmarker, enc, from, width)); + zend_string *ret = mb_trim_string(str, trimmarker, enc, from, width); + if (UNEXPECTED(ret == NULL)) { + RETURN_OOM(); + } + + RETVAL_STR(ret); } @@ -3798,6 +3834,9 @@ zend_string *ret = php_mb_convert_encoding_ex(Z_STRVAL_P(var), Z_STRLEN_P(var), to_encoding, from_encoding); zval_ptr_dtor(orig_var); ZVAL_STR(orig_var, ret); + if (ZEND_HAS_OOM()) { + return true; + } } else if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) { HashTable *ht = HASH_OF(var); HashTable *orig_ht = ht; @@ -4663,6 +4702,9 @@ size_t line_sep_len = strlen(line_sep); subject = mb_mime_header_encode(subject, enc, tran_cs, head_enc == &mbfl_encoding_base64, (char*)line_sep, line_sep_len, strlen("Subject: [PHP-jp nnnnnnnn]") + line_sep_len); + if (UNEXPECTED(!subject)) { + RETURN_OOM(); + } /* message body */ const mbfl_encoding *msg_enc = MBSTRG(current_internal_encoding); @@ -5955,7 +5997,12 @@ goto overflow; } - zend_string *result = zend_string_alloc(ZSTR_LEN(input) + left_pad_bytes + right_pad_bytes, false); + zend_string *result = zend_string_safe_falloc(1, ZSTR_LEN(input), left_pad_bytes + right_pad_bytes, false, /* fallible */ true); + if (UNEXPECTED(!result)) { + zend_string_release_ex(remaining_left_pad_str, false); + zend_string_release_ex(remaining_right_pad_str, false); + RETURN_OOM(); + } char *buffer = ZSTR_VAL(result); /* First we pad the left. */ @@ -6305,13 +6352,17 @@ * right now */ feed_and_mime_encode: if (mb_convert_buf_len(&buf) - line_start + indent + strlen(outcode->mime_name) > 55) { - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, (e - word_start) + linefeed_len + 1); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, (e - word_start) + linefeed_len + 1)) { + return NULL; + } buf.out = mb_convert_buf_appendn(buf.out, linefeed, linefeed_len); buf.out = mb_convert_buf_add(buf.out, ' '); indent = 0; line_start = mb_convert_buf_len(&buf); } else if (mb_convert_buf_len(&buf) > 0) { - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, 1); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, 1)) { + return NULL; + } buf.out = mb_convert_buf_add(buf.out, ' '); } p = word_start; /* Back up to where MIME encoding of input chars should start */ @@ -6319,13 +6370,17 @@ } else if (w == ' ') { /* When we see a space, check whether we should insert a line break */ if (mb_convert_buf_len(&buf) - line_start + (p - word_start) + indent > 75) { - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, (e - word_start) + linefeed_len + 1); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, (e - word_start) + linefeed_len + 1)) { + return NULL; + } buf.out = mb_convert_buf_appendn(buf.out, linefeed, linefeed_len); buf.out = mb_convert_buf_add(buf.out, ' '); indent = 0; line_start = mb_convert_buf_len(&buf); } else if (mb_convert_buf_len(&buf) > 0) { - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, (e - word_start) + 1); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, (e - word_start) + 1)) { + return NULL; + } buf.out = mb_convert_buf_add(buf.out, ' '); } /* Output one (space-delimited) word as plain ASCII */ @@ -6360,11 +6415,15 @@ * consider adding a line feed if necessary to prevent output lines from * being too long */ if (mb_convert_buf_len(&buf) - line_start + (p - word_start) + indent > 74) { - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, (e - word_start) + linefeed_len + 1); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, (e - word_start) + linefeed_len + 1)) { + return NULL; + } buf.out = mb_convert_buf_appendn(buf.out, linefeed, linefeed_len); buf.out = mb_convert_buf_add(buf.out, ' '); } else { - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, (e - word_start) + 1); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, (e - word_start) + 1)) { + return NULL; + } buf.out = mb_convert_buf_add(buf.out, ' '); } } @@ -6404,7 +6463,9 @@ e = wchar_buf + offset + out_len; start_new_line: ; - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, strlen(outcode->mime_name) + 5); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, strlen(outcode->mime_name) + 5)) { + return NULL; + } buf.out = mb_convert_buf_add2(buf.out, '=', '?'); buf.out = mb_convert_buf_appends(buf.out, outcode->mime_name); buf.out = mb_convert_buf_add3(buf.out, '?', base64 ? 'B' : 'Q', '?'); @@ -6446,7 +6507,9 @@ * of the input string which needs to be processed */ ZEND_ASSERT(!in_len); transfer_encode_mime_bytes(&tmpbuf, &buf, base64); - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, 2); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, 2)) { + return NULL; + } buf.out = mb_convert_buf_add2(buf.out, '?', '='); mb_convert_buf_free(&tmpbuf); return mb_convert_buf_result(&buf, &mbfl_encoding_utf8); @@ -6469,7 +6532,9 @@ transfer_encode_mime_bytes(&tmpbuf, &buf, base64); tmpbuf.state = 0; - MB_CONVERT_BUF_ENSURE(&buf, buf.out, buf.limit, 3 + linefeed_len); + if (!MB_CONVERT_BUF_ENSURE_EX(&buf, buf.out, buf.limit, 3 + linefeed_len)) { + return NULL; + } buf.out = mb_convert_buf_add2(buf.out, '?', '='); indent = 0; /* Indent argument must only affect the first line */ @@ -6546,7 +6611,12 @@ } } - RETURN_STR(mb_mime_header_encode(str, MBSTRG(current_internal_encoding), charset, base64, linefeed, linefeed_len, indent)); + zend_string *ret = mb_mime_header_encode(str, MBSTRG(current_internal_encoding), charset, base64, linefeed, linefeed_len, indent); + if (UNEXPECTED(ret == NULL)) { + RETURN_OOM(); + } + + RETURN_STR(ret); } static int8_t decode_base64(unsigned char c) diff -Nru php8.4-8.4.26/ext/mbstring/php_mbregex.c php8.4-8.4.27/ext/mbstring/php_mbregex.c --- php8.4-8.4.26/ext/mbstring/php_mbregex.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/php_mbregex.c 2026-10-19 14:38:59.000000000 +0000 @@ -730,6 +730,10 @@ eos = replace + replace_len; while (p < eos) { + if (ZEND_HAS_OOM()) { + return; + } + clen = (int) php_mb_mbchar_bytes(p, enc); if (clen != 1 || p == eos || p[0] != '\\') { /* skip anything that's not an ascii backslash */ @@ -1241,6 +1245,10 @@ pos++; } onig_region_free(regs, 0); + if (ZEND_HAS_OOM()) { + err = -2; + break; + } } onig_region_free(regs, 1); diff -Nru php8.4-8.4.26/ext/mbstring/tests/gh23106.phpt php8.4-8.4.27/ext/mbstring/tests/gh23106.phpt --- php8.4-8.4.26/ext/mbstring/tests/gh23106.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/gh23106.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +GH-23106 (mb_strpos() reads past the end of a haystack ending in a truncated UTF-8 sequence) +--EXTENSIONS-- +mbstring +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECT-- +bool(false) +bool(false) +bool(false) +int(1) +mb_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack) diff -Nru php8.4-8.4.26/ext/mbstring/tests/mb_ereg_replace_kname_unterminated_nul.phpt php8.4-8.4.27/ext/mbstring/tests/mb_ereg_replace_kname_unterminated_nul.phpt --- php8.4-8.4.26/ext/mbstring/tests/mb_ereg_replace_kname_unterminated_nul.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/mb_ereg_replace_kname_unterminated_nul.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -2,6 +2,10 @@ mb_ereg_replace() with unterminated \k backref must not embed a NUL byte --EXTENSIONS-- mbstring +--SKIPIF-- + --FILE-- +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_case.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_case.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_case.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_case.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_convert_case() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_encoding.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_encoding.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_encoding.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_encoding.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_convert_encoding() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_variables.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_variables.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_variables.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_variables.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_convert_variables() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_variables_many.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_variables_many.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_convert_variables_many.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_convert_variables_many.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +mb_convert_variables() doesn't reach hard limit - many strings +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_decode_mimeheader.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_decode_mimeheader.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_decode_mimeheader.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_decode_mimeheader.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_decode_mimeheader() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line 3 diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_encode_mimeheader.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_encode_mimeheader.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_encode_mimeheader.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_encode_mimeheader.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_encode_mimeheader() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_encode_numericentity.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_encode_numericentity.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_encode_numericentity.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_encode_numericentity.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +mb_encode_numericentity() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_ereg_replace.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_ereg_replace.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_ereg_replace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_ereg_replace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +mb_ereg_replace() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_eregi_replace.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_eregi_replace.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_eregi_replace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_eregi_replace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +mb_eregi_replace() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_parse_str.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_parse_str.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_parse_str.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_parse_str.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_parse_str() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_parse_str_vars.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_parse_str_vars.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_parse_str_vars.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_parse_str_vars.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +mb_parse_str() doesn't reach hard limit - variable registration +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +max_input_vars=10000000 +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_split.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_split.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_split.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_split.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +mb_split() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_pad.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_pad.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_pad.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_pad.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_str_pad() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +mb_str_split() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split_filter.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split_filter.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split_filter.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split_filter.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_str_split() doesn't reach hard limit - encodings without a length table +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split_fixed_width.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split_fixed_width.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split_fixed_width.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split_fixed_width.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +mb_str_split() doesn't reach hard limit - fixed width encodings +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split_length.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split_length.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_str_split_length.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_str_split_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +mb_str_split() doesn't over allocate - split length argument +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + string(3) "abc" +} diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_strcut_filter.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_strcut_filter.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_strcut_filter.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_strcut_filter.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +mb_strcut() doesn't reach hard limit - encodings without a length table +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +memory_hard_limit_percent=125 +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_strcut_length.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_strcut_length.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_strcut_length.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_strcut_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +mb_strcut() doesn't over allocate - length argument +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECT-- +string(3) "abc" diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_strimwidth.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_strimwidth.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_strimwidth.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_strimwidth.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +mb_strimwidth() doesn't reach hard limit - trim marker +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=16M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_strtoupper.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_strtoupper.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_strtoupper.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_strtoupper.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +mb_strtoupper() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_substr_count.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_substr_count.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_substr_count.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_substr_count.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +mb_substr_count() doesn't reach hard limit +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/mbstring/tests/oom_mb_substr_length.phpt php8.4-8.4.27/ext/mbstring/tests/oom_mb_substr_length.phpt --- php8.4-8.4.26/ext/mbstring/tests/oom_mb_substr_length.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/oom_mb_substr_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +mb_substr() doesn't over allocate - length argument +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=8M +--FILE-- + +--EXPECT-- +string(3) "abc" diff -Nru php8.4-8.4.26/ext/mbstring/tests/surrogates_to_utf8.phpt php8.4-8.4.27/ext/mbstring/tests/surrogates_to_utf8.phpt --- php8.4-8.4.26/ext/mbstring/tests/surrogates_to_utf8.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mbstring/tests/surrogates_to_utf8.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,47 @@ +--TEST-- +Surrogate codepoints are not encoded as UTF-8 +--EXTENSIONS-- +mbstring +--FILE-- + +--EXPECT-- +UCS-4: 413f42 true +UCS-4LE: 3f true +UCS-2: 3f3f true +UCS-2LE: 3f true +HTML-ENTITIES: 3f3f true +mb_convert_variables: 3f true +mb_decode_numericentity: 3f3f true +mb_decode_mimeheader: 3f true +long: 552b44383030 true +int(3) +int(3) +int(1) diff -Nru php8.4-8.4.26/ext/mysqli/mysqli.c php8.4-8.4.27/ext/mysqli/mysqli.c --- php8.4-8.4.26/ext/mysqli/mysqli.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mysqli/mysqli.c 2026-10-19 14:38:59.000000000 +0000 @@ -116,7 +116,6 @@ if (stmt->stmt) { if (mysqli_stmt_close(stmt->stmt, true)) { php_error_docref(NULL, E_WARNING, "Error occurred while closing statement"); - return; } } diff -Nru php8.4-8.4.26/ext/mysqli/mysqli_nonapi.c php8.4-8.4.27/ext/mysqli/mysqli_nonapi.c --- php8.4-8.4.26/ext/mysqli/mysqli_nonapi.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mysqli/mysqli_nonapi.c 2026-10-19 14:38:59.000000000 +0000 @@ -134,6 +134,8 @@ { /* already connected, we should close the connection */ php_mysqli_close(mysql, MYSQLI_CLOSE_IMPLICIT, mysqli_resource->status); + /* the link is not connected anymore, even if the new connection fails */ + mysqli_resource->status = MYSQLI_STATUS_INITIALIZED; } if (strlen(SAFE_STR(hostname)) > 2 && !strncasecmp(hostname, "p:", 2)) { diff -Nru php8.4-8.4.26/ext/mysqli/mysqli_prop.c php8.4-8.4.27/ext/mysqli/mysqli_prop.c --- php8.4-8.4.26/ext/mysqli/mysqli_prop.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mysqli/mysqli_prop.c 2026-10-19 14:38:59.000000000 +0000 @@ -43,6 +43,12 @@ } else { \ CHECK_STATUS(statusval, quiet);\ p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql;\ + if (!p) { \ + if (!quiet) { \ + zend_throw_error(NULL, "%s object is not fully initialized", ZSTR_VAL(obj->zo.ce->name)); \ + } \ + return FAILURE; \ + } \ } #define MYSQLI_GET_RESULT(statusval) \ diff -Nru php8.4-8.4.26/ext/mysqli/tests/gh22854.phpt php8.4-8.4.27/ext/mysqli/tests/gh22854.phpt --- php8.4-8.4.26/ext/mysqli/tests/gh22854.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mysqli/tests/gh22854.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,83 @@ +--TEST-- +GH-22854 (Assertion failure at link_errno_read in ext/mysqli/mysqli_prop.c) +--EXTENSIONS-- +mysqli +--SKIPIF-- + +--FILE-- +$property; + echo "$property: no error\n"; + } catch (Error $e) { + echo "$property: " . $e->getMessage() . "\n"; + } + } + + // var_dump() reads every property in quiet mode + ob_start(); + var_dump($mysqli); + ob_end_clean(); + echo "var_dump() done\n"; +} + +$links = mysqli_get_links_stats()['total']; + +echo "connect()\n"; +$mysqli = new mysqli(); +$mysqli->connect($host, $user, $passwd, $db, $port, $socket); +echo 'Success... ' . $mysqli->host_info . "\n"; +try { + $mysqli->connect($host, $user, $passwd, $db.'wrong', $port, $socket); +} catch (mysqli_sql_exception $e) { + echo "Error: " . $e->getMessage() . "\n"; +} +read_properties($mysqli, ['host_info', 'affected_rows', 'error_list', 'errno', 'error']); +unset($mysqli); + +echo "\nreal_connect()\n"; +$mysqli = new mysqli(); +$mysqli->connect($host, $user, $passwd, $db, $port, $socket); +echo 'Success... ' . $mysqli->host_info . "\n"; +try { + $mysqli->real_connect($host, $user, $passwd, $db.'wrong', $port, $socket); +} catch (mysqli_sql_exception $e) { + echo "Error: " . $e->getMessage() . "\n"; +} +read_properties($mysqli, ['host_info', 'server_info', 'affected_rows', 'error_list']); +unset($mysqli); + +// A failed reconnect must leave the link count balanced (it used to be decremented twice) +var_dump(mysqli_get_links_stats()['total'] === $links); + +print "done!"; +?> +--EXPECTF-- +connect() +Success... %s via %s +Error: Unknown database '%s' +host_info: Property access is not allowed yet +affected_rows: Property access is not allowed yet +error_list: Property access is not allowed yet +errno: mysqli object is not fully initialized +error: mysqli object is not fully initialized +var_dump() done + +real_connect() +Success... %s via %s +Error: Unknown database '%s' +host_info: Property access is not allowed yet +server_info: Property access is not allowed yet +affected_rows: Property access is not allowed yet +error_list: Property access is not allowed yet +var_dump() done +bool(true) +done! diff -Nru php8.4-8.4.26/ext/mysqli/tests/mysqli_stmt_close_killed_connection.phpt php8.4-8.4.27/ext/mysqli/tests/mysqli_stmt_close_killed_connection.phpt --- php8.4-8.4.26/ext/mysqli/tests/mysqli_stmt_close_killed_connection.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mysqli/tests/mysqli_stmt_close_killed_connection.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +Closing a prepared statement after its connection was killed must not leak +--EXTENSIONS-- +mysqli +--SKIPIF-- + +--FILE-- +prepare('DO 1'); +} +$link->query('KILL ' . $link->thread_id); + +// Over TCP, a few COM_STMT_CLOSE writes may be accepted before one fails +do { + array_pop($stmts); + usleep(1000); +} while ($stmts && !$link->errno); + +echo "done!\n"; +?> +--EXPECTF-- +Warning: main(): Error occurred while closing statement in %s on line %d +done! diff -Nru php8.4-8.4.26/ext/mysqli/tests/mysqli_stmt_next_result_field_count.phpt php8.4-8.4.27/ext/mysqli/tests/mysqli_stmt_next_result_field_count.phpt --- php8.4-8.4.26/ext/mysqli/tests/mysqli_stmt_next_result_field_count.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/mysqli/tests/mysqli_stmt_next_result_field_count.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,34 @@ +--TEST-- +mysqli_stmt::$field_count is 0 for the trailing OK packet of a stored procedure +--EXTENSIONS-- +mysqli +--SKIPIF-- + +--FILE-- +query('DROP PROCEDURE IF EXISTS test_field_count_p'); +$link->query('CREATE PROCEDURE test_field_count_p() BEGIN SELECT 1 AS a; SELECT 2 AS b, 3 AS c; END'); + +$stmt = $link->prepare('CALL test_field_count_p()'); +$stmt->execute(); +do { + var_dump($stmt->field_count); + $stmt->get_result(); +} while ($stmt->next_result()); +?> +--CLEAN-- +query('DROP PROCEDURE IF EXISTS test_field_count_p'); +?> +--EXPECT-- +int(1) +int(2) +int(0) diff -Nru php8.4-8.4.26/ext/mysqlnd/mysqlnd_ext_plugin.h php8.4-8.4.27/ext/mysqlnd/mysqlnd_ext_plugin.h --- php8.4-8.4.26/ext/mysqlnd/mysqlnd_ext_plugin.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mysqlnd/mysqlnd_ext_plugin.h 2026-10-19 14:38:59.000000000 +0000 @@ -42,7 +42,7 @@ #define mysqlnd_plugin_get_plugin_stmt_data(stmt, p_id) mysqlnd_plugin_area_getters.get_stmt_area((stmt), (p_id)) #define mysqlnd_plugin_get_plugin_protocol_data(proto, p_id) mysqlnd_plugin_area_getters.get_protocol_decoder_area((proto), (p_id)) #define mysqlnd_plugin_get_plugin_pfc_data(pfc, p_id) mysqlnd_plugin_area_getters.get_pfc_area((pfc), (p_id)) -#define mysqlnd_plugin_get_plugin_vio_data(vio, p_id) mysqlnd_plugin_area_getters.get_pfc_area((vio), (p_id)) +#define mysqlnd_plugin_get_plugin_vio_data(vio, p_id) mysqlnd_plugin_area_getters.get_vio_area((vio), (p_id)) struct st_mysqlnd_plugin_methods_xetters diff -Nru php8.4-8.4.26/ext/mysqlnd/mysqlnd_ps.c php8.4-8.4.27/ext/mysqlnd/mysqlnd_ps.c --- php8.4-8.4.26/ext/mysqlnd/mysqlnd_ps.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/mysqlnd/mysqlnd_ps.c 2026-10-19 14:38:59.000000000 +0000 @@ -515,6 +515,7 @@ stmt->state = MYSQLND_STMT_EXECUTED; if (conn->last_query_type == QUERY_UPSERT || conn->last_query_type == QUERY_LOAD_LOCAL) { + stmt->field_count = conn->field_count; DBG_INF("PASS"); DBG_RETURN(PASS); } @@ -1757,6 +1758,7 @@ MYSQLND_STMT_DATA * stmt = s? s->data : NULL; MYSQLND_CONN_DATA * conn = stmt? stmt->conn : NULL; enum_mysqlnd_collected_stats statistic = STAT_LAST; + enum_func_status ret = PASS; DBG_ENTER("mysqlnd_stmt::close_on_server"); if (!stmt || !conn) { @@ -1794,14 +1796,7 @@ STAT_FREE_RESULT_EXPLICIT); if (GET_CONNECTION_STATE(&conn->state) == CONN_READY) { - enum_func_status ret = FAIL; - const size_t stmt_id = stmt->stmt_id; - - ret = conn->command->stmt_close(conn, stmt_id); - if (ret == FAIL) { - COPY_CLIENT_ERROR(stmt->error_info, *conn->error_info); - DBG_RETURN(FAIL); - } + ret = conn->command->stmt_close(conn, stmt->stmt_id); } } switch (stmt->execute_count) { @@ -1830,7 +1825,7 @@ stmt->conn = NULL; } - DBG_RETURN(PASS); + DBG_RETURN(ret); } /* }}} */ diff -Nru php8.4-8.4.26/ext/opcache/ZendAccelerator.c php8.4-8.4.27/ext/opcache/ZendAccelerator.c --- php8.4-8.4.26/ext/opcache/ZendAccelerator.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/ZendAccelerator.c 2026-10-19 14:38:59.000000000 +0000 @@ -195,10 +195,10 @@ # define zend_accel_get_time() time(NULL) #endif -static inline bool is_cacheable_stream_path(const char *filename) +static inline bool is_cacheable_stream_path(const zend_string *filename) { - return memcmp(filename, "file://", sizeof("file://") - 1) == 0 || - memcmp(filename, "phar://", sizeof("phar://") - 1) == 0; + return zend_string_starts_with_literal(filename, "file://") || + zend_string_starts_with_literal(filename, "phar://"); } /* O+ overrides PHP chdir() function and remembers the current working directory @@ -607,14 +607,17 @@ zend_string *ret = accel_find_interned_string_ex(h, str, size); if (!ret) { - ret = zend_string_init(str, size, permanent); + ret = zend_string_finit(str, size, permanent, CG(interned_strings_fallible)); + if (UNEXPECTED(!ret)) { + return NULL; + } ZSTR_H(ret) = h; } return ret; } - return zend_string_init(str, size, permanent); + return zend_string_finit(str, size, permanent, CG(interned_strings_fallible)); } static inline void accel_copy_permanent_list_types( @@ -1205,7 +1208,7 @@ if (IS_ABSOLUTE_PATH(path, path_length)) { /* pass */ } else if (UNEXPECTED(php_is_stream_path(path))) { - if (!is_cacheable_stream_path(path)) { + if (!is_cacheable_stream_path(str)) { return NULL; } /* pass */ @@ -1903,7 +1906,7 @@ bool from_memory; /* if the script we've got is stored in SHM */ if (php_is_stream_path(ZSTR_VAL(file_handle->filename)) && - !is_cacheable_stream_path(ZSTR_VAL(file_handle->filename))) { + !is_cacheable_stream_path(file_handle->filename)) { return accelerator_orig_compile_file(file_handle, type); } @@ -2047,7 +2050,7 @@ return accelerator_orig_compile_file(file_handle, type); } persistent_script = zend_accel_hash_find(&ZCSG(hash), key); - } else if (UNEXPECTED(php_is_stream_path(ZSTR_VAL(file_handle->filename)) && !is_cacheable_stream_path(ZSTR_VAL(file_handle->filename)))) { + } else if (UNEXPECTED(php_is_stream_path(ZSTR_VAL(file_handle->filename)) && !is_cacheable_stream_path(file_handle->filename))) { ZCG(cache_opline) = NULL; ZCG(cache_persistent_script) = NULL; return accelerator_orig_compile_file(file_handle, type); @@ -2302,6 +2305,10 @@ bool needs_autoload; zend_inheritance_cache_entry *entry = ce->inheritance_cache; + if (entry) { + ZEND_ATOMIC_FENCE_ACQUIRE(); + } + while (entry) { entry = zend_accel_inheritance_cache_find(entry, ce, parent, traits_and_interfaces, &needs_autoload); if (entry) { @@ -2405,6 +2412,7 @@ } zend_map_ptr_extend(ZCSG(map_ptr_last)); + zend_accel_pending_ce_cache_begin(); #if ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT /* Align to 8-byte boundary */ @@ -2458,12 +2466,15 @@ entry->num_warnings = EG(num_errors); entry->warnings = zend_persist_warnings(EG(num_errors), EG(errors)); entry->next = proto->inheritance_cache; - proto->inheritance_cache = entry; EG(num_errors) = 0; EG(errors) = NULL; ZCSG(map_ptr_last) = CG(map_ptr_last); + ZEND_ATOMIC_FENCE_RELEASE(); + proto->inheritance_cache = entry; + + zend_accel_pending_ce_cache_commit(); zend_shared_alloc_destroy_xlat_table(); @@ -2785,6 +2796,9 @@ ZCG(cwd) = NULL; } + /* A persist window left through a bailout never published its slots */ + zend_accel_pending_ce_cache_discard(); + if (!ZCG(enabled) || !accel_startup_ok) { return SUCCESS; } @@ -4831,6 +4845,7 @@ EG(error_reporting) = 0; const zend_result rc = php_request_startup(); + zend_mm_set_max_allocs(0); EG(error_reporting) = orig_error_reporting; diff -Nru php8.4-8.4.26/ext/opcache/ZendAccelerator.h php8.4-8.4.27/ext/opcache/ZendAccelerator.h --- php8.4-8.4.26/ext/opcache/ZendAccelerator.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/ZendAccelerator.h 2026-10-19 14:38:59.000000000 +0000 @@ -230,6 +230,12 @@ zend_persistent_script *cache_persistent_script; /* preallocated buffer for keys */ zend_string *key; + + /* CE cache slots allocated during the current persist window, keyed by the + * address of the shared class name string. They are written into the + * strings by zend_accel_pending_ce_cache_commit() once ZCSG(map_ptr_last) + * covers them. NULL outside a persist window. */ + HashTable *pending_ce_cache; } zend_accel_globals; typedef struct _zend_string_table { @@ -336,7 +342,10 @@ zend_string* ZEND_FASTCALL accel_new_interned_string(zend_string *str); -uint32_t zend_accel_get_class_name_map_ptr(zend_string *type_name); +void zend_accel_get_class_name_map_ptr(zend_string *type_name); +void zend_accel_pending_ce_cache_begin(void); +void zend_accel_pending_ce_cache_commit(void); +void zend_accel_pending_ce_cache_discard(void); END_EXTERN_C() diff -Nru php8.4-8.4.26/ext/opcache/jit/ir/ir_private.h php8.4-8.4.27/ext/opcache/jit/ir/ir_private.h --- php8.4-8.4.26/ext/opcache/jit/ir/ir_private.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/jit/ir/ir_private.h 2026-10-19 14:38:59.000000000 +0000 @@ -495,9 +495,12 @@ IR_ALWAYS_INLINE void ir_sparse_set_init(ir_sparse_set *set, uint32_t size) { + size_t alloc_size = (size_t)size * 2 * sizeof(*set->data); + set->size = size; set->len = 0; - set->data = (uint32_t*)ir_mem_malloc(sizeof(uint32_t) * 2 * size) + size; + IR_ASSERT(!size || alloc_size / size == 2 * sizeof(*set->data)); + set->data = (uint32_t*)ir_mem_malloc(alloc_size) + size; #ifdef IR_DEBUG /* initialize sparse part to avoid valgrind warnings */ memset(&IR_SPARSE_SET_SPARSE(set, size - 1), 0, size * sizeof(uint32_t)); diff -Nru php8.4-8.4.26/ext/opcache/jit/ir/ir_x86.dasc php8.4-8.4.27/ext/opcache/jit/ir/ir_x86.dasc --- php8.4-8.4.26/ext/opcache/jit/ir/ir_x86.dasc 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/jit/ir/ir_x86.dasc 2026-10-19 14:38:59.000000000 +0000 @@ -1923,6 +1923,21 @@ return 0; } +/* A naive check if anything that emits code, and so clobbers the flags, is + * scheduled between the flags setting instruction and the fusion root */ +static bool ir_match_has_flags_deps(ir_ctx *ctx, ir_ref ref, ir_ref root) +{ + ir_ref pos = ctx->prev_ref[root]; + + while (pos > ref) { + if (ctx->ir_base[pos].op != IR_SNAPSHOT) { + return 1; + } + pos = ctx->prev_ref[pos]; + } + return pos != ref; +} + static void ir_match_fuse_load(ir_ctx *ctx, ir_ref ref, ir_ref root) { if (ir_in_same_block(ctx, ref) && @@ -3089,7 +3104,9 @@ if (IR_IS_CONST_REF(op2_insn->op2) && !IR_IS_SYM_CONST(ctx->ir_base[op2_insn->op2].op) && ctx->ir_base[op2_insn->op2].val.i64 == 0) { - if (op2_insn->op1 == insn->op2 - 1) { /* previous instruction */ + if (op2_insn->op1 == insn->op2 - 1 /* previous instruction */ + && ir_in_same_block(ctx, op2_insn->op1) + && !ir_match_has_flags_deps(ctx, insn->op2, ref)) { ir_insn *op1_insn = &ctx->ir_base[op2_insn->op1]; if ((op1_insn->op == IR_OR || op1_insn->op == IR_AND || op1_insn->op == IR_XOR) || diff -Nru php8.4-8.4.26/ext/opcache/jit/zend_jit.c php8.4-8.4.27/ext/opcache/jit/zend_jit.c --- php8.4-8.4.26/ext/opcache/jit/zend_jit.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/jit/zend_jit.c 2026-10-19 14:38:59.000000000 +0000 @@ -2569,21 +2569,29 @@ } goto done; case ZEND_FRAMELESS_ICALL_0: - jit_frameless_icall0(jit, opline); + if (!jit_frameless_icall0(jit, opline)) { + goto jit_failure; + } goto done; case ZEND_FRAMELESS_ICALL_1: op1_info = OP1_INFO(); - jit_frameless_icall1(jit, opline, op1_info); + if (!jit_frameless_icall1(jit, opline, op1_info)) { + goto jit_failure; + } goto done; case ZEND_FRAMELESS_ICALL_2: op1_info = OP1_INFO(); op2_info = OP2_INFO(); - jit_frameless_icall2(jit, opline, op1_info, op2_info); + if (!jit_frameless_icall2(jit, opline, op1_info, op2_info)) { + goto jit_failure; + } goto done; case ZEND_FRAMELESS_ICALL_3: op1_info = OP1_INFO(); op2_info = OP2_INFO(); - jit_frameless_icall3(jit, opline, op1_info, op2_info, OP1_DATA_INFO()); + if (!jit_frameless_icall3(jit, opline, op1_info, op2_info, OP1_DATA_INFO())) { + goto jit_failure; + } goto done; default: break; diff -Nru php8.4-8.4.26/ext/opcache/jit/zend_jit_ir.c php8.4-8.4.27/ext/opcache/jit/zend_jit_ir.c --- php8.4-8.4.26/ext/opcache/jit/zend_jit_ir.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/jit/zend_jit_ir.c 2026-10-19 14:38:59.000000000 +0000 @@ -2060,9 +2060,18 @@ ir_STORE(jit_EG(vm_interrupt), ir_CONST_U8(0)); if_timeout = ir_IF(ir_EQ(ir_LOAD_U8(jit_EG(timed_out)), ir_CONST_U8(0))); ir_IF_FALSE(if_timeout); - ir_CALL(IR_VOID, ir_CONST_FUNC(zend_timeout)); + ir_CALL(IR_VOID, ir_CONST_FUNC(zend_timeout)); // noreturn ir_MERGE_WITH_EMPTY_TRUE(if_timeout); + // if (ZEND_HAS_OOM()) { + ir_ref if_delayed_oom = ir_IF(ir_LOAD_U8(ir_ADD_OFFSET(jit_EG(delayed_oom), offsetof(zend_oom_info, state)))); + ir_IF_TRUE(if_delayed_oom); + ir_CALL(IR_VOID, ir_CONST_FC_FUNC(zend_handle_delayed_oom)); + // LOAD_OPLINE() + jit_STORE_IP(jit, ir_LOAD_A(jit_EX(opline))); + ir_ref if_delayed_oom_end = ir_END(); + ir_IF_FALSE(if_delayed_oom); + if (zend_interrupt_function) { ir_CALL_1(IR_VOID, ir_CONST_FUNC(zend_interrupt_function), jit_FP(jit)); if_exception = ir_IF(ir_LOAD_A(jit_EG(exception))); @@ -2074,6 +2083,8 @@ jit_STORE_IP(jit, ir_LOAD_A(jit_EX(opline))); } + ir_MERGE_WITH(if_delayed_oom_end); + if (GCC_GLOBAL_REGS) { ir_TAILCALL(IR_VOID, ir_LOAD_A(jit_IP(jit))); } else { @@ -3166,6 +3177,7 @@ REGISTER_DATA(EG(opline_before_exception)); REGISTER_DATA(EG(vm_interrupt)); REGISTER_DATA(EG(timed_out)); + REGISTER_DATA(EG(delayed_oom)); REGISTER_DATA(EG(uninitialized_zval)); REGISTER_DATA(EG(zend_constants)); REGISTER_DATA(EG(jit_trace_num)); @@ -10388,14 +10400,6 @@ insn->inputs_count = 3; insn->op3 = end; break; - } else if (insn->op == IR_LOOP_BEGIN && insn->inputs_count == 3) { - ZEND_ASSERT(jit->ctx.ir_base[insn->op3].op == IR_LOOP_END); - jit->ctx.ir_base[insn->op3].op = IR_END; - ir_MERGE_2(insn->op3, ir_END()); - end = ir_LOOP_END(); - insn = &jit->ctx.ir_base[begin]; - insn->op3 = end; - break; } } /* fallback to indirect JMP or RETURN */ @@ -17573,7 +17577,33 @@ return skip; } -static void jit_frameless_icall0(zend_jit_ctx *jit, const zend_op *opline) +static bool jit_frameless_interrupt_check(zend_jit_ctx *jit, const zend_op *next_opline) +{ + if (zend_interrupt_function) { + /* Mirrors ZEND_VM_FCALL_INTERRUPT_CHECK(), call before advancing opline. */ + // JIT: if (EG(vm_interrupt)) zend_fcall_interrupt(execute_data); + ir_ref if_interrupt = ir_IF(ir_LOAD_U8(jit_EG(vm_interrupt))); + ir_IF_TRUE_cold(if_interrupt); + ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_fcall_interrupt), jit_FP(jit)); + ir_MERGE_WITH_EMPTY_FALSE(if_interrupt); + } else { + const void *exit_addr = NULL; + + if (JIT_G(trigger) == ZEND_JIT_ON_HOT_TRACE) { + uint32_t exit_point = zend_jit_trace_get_exit_point(next_opline, ZEND_JIT_EXIT_TO_VM); + exit_addr = zend_jit_trace_get_exit_addr(exit_point); + if (!exit_addr) { + return false; + } + } + + zend_jit_check_timeout(jit, next_opline, exit_addr); + } + + return true; +} + +static bool jit_frameless_icall0(zend_jit_ctx *jit, const zend_op *opline) { jit_SET_EX_OPLINE(jit, opline); @@ -17593,10 +17623,14 @@ ir_MERGE_WITH(skip_observer); } + if (!jit_frameless_interrupt_check(jit, opline+1)) { + return false; + } zend_jit_check_exception(jit); + return true; } -static void jit_frameless_icall1(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info) +static bool jit_frameless_icall1(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info) { jit_SET_EX_OPLINE(jit, opline); @@ -17633,10 +17667,14 @@ } jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, NULL); + if (!jit_frameless_interrupt_check(jit, opline+1)) { + return false; + } zend_jit_check_exception(jit); + return true; } -static void jit_frameless_icall2(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info, uint32_t op2_info) +static bool jit_frameless_icall2(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info, uint32_t op2_info) { jit_SET_EX_OPLINE(jit, opline); @@ -17699,10 +17737,14 @@ } } jit_FREE_OP(jit, opline->op2_type, opline->op2, op2_info, NULL); + if (!jit_frameless_interrupt_check(jit, opline+1)) { + return false; + } zend_jit_check_exception(jit); + return true; } -static void jit_frameless_icall3(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info, uint32_t op2_info, uint32_t op1_data_info) +static bool jit_frameless_icall3(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info, uint32_t op2_info, uint32_t op1_data_info) { jit_SET_EX_OPLINE(jit, opline); @@ -17799,7 +17841,11 @@ } } jit_FREE_OP(jit, (opline+1)->op1_type, (opline+1)->op1, op1_data_info, NULL); + if (!jit_frameless_interrupt_check(jit, opline+2)) { + return false; + } zend_jit_check_exception(jit); + return true; } /* diff -Nru php8.4-8.4.26/ext/opcache/jit/zend_jit_trace.c php8.4-8.4.27/ext/opcache/jit/zend_jit_trace.c --- php8.4-8.4.26/ext/opcache/jit/zend_jit_trace.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/jit/zend_jit_trace.c 2026-10-19 14:38:59.000000000 +0000 @@ -6387,21 +6387,29 @@ } goto done; case ZEND_FRAMELESS_ICALL_0: - jit_frameless_icall0(jit, opline); + if (!jit_frameless_icall0(jit, opline)) { + goto jit_failure; + } goto done; case ZEND_FRAMELESS_ICALL_1: op1_info = OP1_INFO(); - jit_frameless_icall1(jit, opline, op1_info); + if (!jit_frameless_icall1(jit, opline, op1_info)) { + goto jit_failure; + } goto done; case ZEND_FRAMELESS_ICALL_2: op1_info = OP1_INFO(); op2_info = OP2_INFO(); - jit_frameless_icall2(jit, opline, op1_info, op2_info); + if (!jit_frameless_icall2(jit, opline, op1_info, op2_info)) { + goto jit_failure; + } goto done; case ZEND_FRAMELESS_ICALL_3: op1_info = OP1_INFO(); op2_info = OP2_INFO(); - jit_frameless_icall3(jit, opline, op1_info, op2_info, OP1_DATA_INFO()); + if (!jit_frameless_icall3(jit, opline, op1_info, op2_info, OP1_DATA_INFO())) { + goto jit_failure; + } goto done; default: break; diff -Nru php8.4-8.4.26/ext/opcache/tests/file_cache_frameless_handler.phpt php8.4-8.4.27/ext/opcache/tests/file_cache_frameless_handler.phpt --- php8.4-8.4.26/ext/opcache/tests/file_cache_frameless_handler.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/file_cache_frameless_handler.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,81 @@ +--TEST-- +opcache file cache must not reuse frameless function indices across extension sets +--EXTENSIONS-- +opcache +--SKIPIF-- + +--FILE-- +getMessage(), "\n"; +} +PHP); + +function run(string $cache, array $args): void { + $ext = ini_get('extension_dir'); + $opcache = PHP_OS_FAMILY === 'Windows' ? 'php_opcache.dll' : 'opcache.so'; + $cmd = [PHP_BINARY, '-n', '-d', 'extension_dir="' . $ext . '"']; + if (file_exists($ext . DIRECTORY_SEPARATOR . $opcache)) { + array_push($cmd, '-d', 'zend_extension=opcache'); + } + array_push($cmd, + '-d', 'opcache.enable_cli=1', + '-d', 'opcache.file_cache="' . $cache . '"', + '-d', 'opcache.file_cache_only=1', + '-d', 'opcache.file_update_protection=0', + ...$args, + ); + $proc = proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['pipe', 'w']], $pipes); + echo stream_get_contents($pipes[1]); + stream_get_contents($pipes[2]); + proc_close($proc); +} + +function system_ids(string $cache): int { + $pattern = PHP_OS_FAMILY === 'Windows' ? '/*/*' : '/*'; + return count(glob($cache . $pattern, GLOB_ONLYDIR)); +} + +run($cache, ['-d', 'extension=dl_test', $script]); +var_dump(system_ids($cache)); +run($cache, [$script, 'dl']); +var_dump(system_ids($cache)); +run($cache, [$script]); +var_dump(system_ids($cache)); +?> +--CLEAN-- +isDir() ? rmdir($file->getPathname()) : unlink($file->getPathname()); + } + rmdir($cache); +} +?> +--EXPECT-- +int(7) +int(1) +int(7) +int(2) +Error: Call to undefined function dl_test_frameless() +int(2) diff -Nru php8.4-8.4.26/ext/opcache/tests/jit/frameless_interrupt_001.phpt php8.4-8.4.27/ext/opcache/tests/jit/frameless_interrupt_001.phpt --- php8.4-8.4.26/ext/opcache/tests/jit/frameless_interrupt_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/jit/frameless_interrupt_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +JIT: an interrupt after a frameless call does not run the call again (function JIT) +--EXTENSIONS-- +opcache +zend_test +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit=function +opcache.jit_buffer_size=32M +zend_test.observer.enabled=1 +zend_test.observer.show_output=0 +zend_test.observer.observe_function_names=str_contains +zend_test.observer.set_vm_interrupt_on_begin=1 +--FILE-- + +--EXPECT-- +int(813) +int(813) diff -Nru php8.4-8.4.26/ext/opcache/tests/jit/frameless_interrupt_002.phpt php8.4-8.4.27/ext/opcache/tests/jit/frameless_interrupt_002.phpt --- php8.4-8.4.26/ext/opcache/tests/jit/frameless_interrupt_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/jit/frameless_interrupt_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +JIT: an interrupt after a frameless call does not run the call again (tracing JIT) +--EXTENSIONS-- +opcache +zend_test +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit=tracing +opcache.jit_buffer_size=32M +zend_test.observer.enabled=1 +zend_test.observer.show_output=0 +zend_test.observer.observe_function_names=str_contains +zend_test.observer.set_vm_interrupt_on_begin=1 +--FILE-- + +--EXPECT-- +int(813) +int(813) diff -Nru php8.4-8.4.26/ext/opcache/tests/jit/frameless_interrupt_003.phpt php8.4-8.4.27/ext/opcache/tests/jit/frameless_interrupt_003.phpt --- php8.4-8.4.26/ext/opcache/tests/jit/frameless_interrupt_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/jit/frameless_interrupt_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +Properly deoptimize trace before frameless call interrupt +--EXTENSIONS-- +opcache +zend_test +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit=tracing +opcache.jit_buffer_size=32M +zend_test.observer.enabled=1 +zend_test.observer.show_output=0 +zend_test.observer.observe_function_names=str_contains +zend_test.observer.set_vm_interrupt_on_begin_without_callback=1 +--FILE-- + +--EXPECT-- +int(4498500) +int(4498500) diff -Nru php8.4-8.4.26/ext/opcache/tests/jit/gh23693.phpt php8.4-8.4.27/ext/opcache/tests/jit/gh23693.phpt --- php8.4-8.4.26/ext/opcache/tests/jit/gh23693.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/jit/gh23693.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,41 @@ +--TEST-- +GH-23693: Tracing JIT reads stale flags for a guard on a hoisted addition +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit_buffer_size=64M +opcache.jit=tracing +opcache.jit_hot_func=1 +--EXTENSIONS-- +opcache +--FILE-- +> 2; + $s = 0; + for ($dy = -1; $dy <= 1; ++$dy) { + for ($i = 0; $i < $n; ++$i) { + $ny = $y + $dy; + if ($ny < 0) { + continue; + } + if ($ny >= 4) { + continue; + } + $s += ($ny << 2) | ($i & 3); + } + } + return $s; +} +for ($k = 0; $k < 30; ++$k) { + f(16, 200); +} +var_dump(f(16, 200)); +var_dump(f(0, 200)); +?> +--EXPECT-- +int(2700) +int(1400) diff -Nru php8.4-8.4.26/ext/opcache/tests/jit/gh23991.phpt php8.4-8.4.27/ext/opcache/tests/jit/gh23991.phpt --- php8.4-8.4.26/ext/opcache/tests/jit/gh23991.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/jit/gh23991.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +GH-23991 (JIT generates invalid IR for multiple recursive calls converted into loop) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit_buffer_size=64M +opcache.jit=1235 +opcache.jit_hot_func=1 +--EXTENSIONS-- +opcache +--FILE-- + $v) { + $value[$k] = f($v, $recurse, $param); + } + } + foreach ($value as $k => $v) { + if ($undef) { + $value[$k] = f($v, $recurse, $param); + } + } + } + return $value; +} +var_dump(f([[]], true)); +?> +--EXPECTF-- +Warning: Undefined variable $undef in %s on line %d +array(1) { + [0]=> + array(0) { + } +} diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/call_graph_stack_overflow.phpt php8.4-8.4.27/ext/opcache/tests/opt/call_graph_stack_overflow.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/call_graph_stack_overflow.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/call_graph_stack_overflow.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +zend_analyze_calls(): call_stack overflow when dead code elimination removed the DO_FCALLs +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=0x7FFEBFFF +--FILE-- + 2 })))); +} +echo "OK\n"; +?> +--EXPECT-- +OK diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/dce_015.phpt php8.4-8.4.27/ext/opcache/tests/opt/dce_015.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/dce_015.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/dce_015.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,45 @@ +--TEST-- +DCE must not remove assignments to properties of an object holding a reference +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.file_update_protection=0 +--EXTENSIONS-- +opcache +--FILE-- +untyped = &$t->untyped; + $h->untyped = 5; + var_dump($t->untyped); +} + +function typed() { + $h = new Holder; + $t = new Target; + $h->typed = &$t->typed; + $h->typed = 5; + var_dump($t->typed); +} + +untyped(); +typed(); + +?> +--EXPECT-- +int(5) +int(5) diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/dce_016.phpt php8.4-8.4.27/ext/opcache/tests/opt/dce_016.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/dce_016.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/dce_016.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,50 @@ +--TEST-- +DCE must not remove assignments to properties of an object escaping through __isset +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.file_update_protection=0 +--EXTENSIONS-- +opcache +--FILE-- +foo); + $o->x = 42; +} + +f(); +var_dump($g->x); + +#[AllowDynamicProperties] +class F { + function __isset($n) { + $this->x = 2; + return true; + } +} + +function i() { + $o = new F; + $o->x = 1; + isset($o->foo); + var_dump($o->x); +} +i(); + +?> +--EXPECT-- +int(42) +int(2) diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/dce_017.phpt php8.4-8.4.27/ext/opcache/tests/opt/dce_017.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/dce_017.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/dce_017.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,55 @@ +--TEST-- +DCE must not remove assignments to properties of an object escaping through a property hook +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.file_update_protection=0 +--EXTENSIONS-- +opcache +--FILE-- +h; + $o->x = 42; +} + +g(); +var_dump($g->x); + +class E { + public $x = 0; + public $h { + set { + global $g; + $g = $this; + } + } +} + +function h() { + $o = new E; + $o->h = 1; + $o->x = 42; +} + +h(); +var_dump($g->x); + +?> +--EXPECT-- +int(42) +int(42) diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/gh24063.phpt php8.4-8.4.27/ext/opcache/tests/opt/gh24063.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/gh24063.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/gh24063.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,46 @@ +--TEST-- +GH-24063 (SCCP merges 0.0 and -0.0 into a single constant) +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- + $x]; + if ($n < 0) { + $a['k'] = -0.0; + } else { + $a['k'] = 0.0; + } + return $a['k']; +} + +var_dump(scalar(1.0), scalar(-1.0)); +var_dump(arr(1.0)[0], arr(-1.0)[0]); +var_dump(partial(1.0, 1), partial(-1.0, 1)); + +?> +--EXPECT-- +float(0) +float(-0) +float(0) +float(-0) +float(0) +float(-0) diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/oss_fuzz_546798343.phpt php8.4-8.4.27/ext/opcache/tests/opt/oss_fuzz_546798343.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/oss_fuzz_546798343.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/oss_fuzz_546798343.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +OSS-Fuzz #546798343 (Heap-buffer-overflow in zend_delete_call_instructions with callable conversion) +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +--FILE-- + +--EXPECT-- +Done diff -Nru php8.4-8.4.26/ext/opcache/tests/opt/sccp_isset_dim_partial_object.phpt php8.4-8.4.27/ext/opcache/tests/opt/sccp_isset_dim_partial_object.phpt --- php8.4-8.4.26/ext/opcache/tests/opt/sccp_isset_dim_partial_object.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/tests/opt/sccp_isset_dim_partial_object.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +SCCP: isset()/empty() on dimension of non-escaping object must not be evaluated +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--EXTENSIONS-- +opcache +--FILE-- +getMessage(), "\n"; +} +try { + var_dump(g()); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} +?> +--EXPECT-- +Cannot use object of type P as array +Cannot use object of type P as array diff -Nru php8.4-8.4.26/ext/opcache/zend_file_cache.c php8.4-8.4.27/ext/opcache/zend_file_cache.c --- php8.4-8.4.26/ext/opcache/zend_file_cache.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/zend_file_cache.c 2026-10-19 14:38:59.000000000 +0000 @@ -1837,6 +1837,7 @@ bool cache_it = true; unsigned int actual_checksum; bool ok; + size_t orig_map_ptr_last = 0; if (!full_path) { return NULL; @@ -1966,6 +1967,8 @@ } memcpy(buf, mem, info.mem_size); zend_map_ptr_extend(ZCSG(map_ptr_last)); + orig_map_ptr_last = CG(map_ptr_last); + zend_accel_pending_ce_cache_begin(); } else { use_process_mem: buf = mem; @@ -1984,6 +1987,10 @@ } zend_end_try(); if (!ok) { if (cache_it) { + /* The slots allocated by the failed unserialization are referenced + * only by the abandoned buffer, so they can be reclaimed. */ + zend_accel_pending_ce_cache_discard(); + CG(map_ptr_last) = orig_map_ptr_last; zend_shared_alloc_unlock(); goto use_process_mem; } else { @@ -1997,6 +2004,7 @@ if (cache_it) { ZCSG(map_ptr_last) = CG(map_ptr_last); + zend_accel_pending_ce_cache_commit(); script->dynamic_members.last_used = ZCG(request_time); zend_accel_hash_update(&ZCSG(hash), script->script.filename, 0, script); diff -Nru php8.4-8.4.26/ext/opcache/zend_persist.c php8.4-8.4.27/ext/opcache/zend_persist.c --- php8.4-8.4.26/ext/opcache/zend_persist.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/opcache/zend_persist.c 2026-10-19 14:38:59.000000000 +0000 @@ -314,31 +314,78 @@ return ptr; } -uint32_t zend_accel_get_class_name_map_ptr(zend_string *type_name) +/* We delay the publishing of CE cache slots until after ZCSG(map_ptr_last) is + * published. + * CE cache slots stored in interned strings are immediately visible to other + * processes, so if we fail to update ZCSG(map_ptr_last) after publishing a + * slot (due to a bailout/exit), that slot may be re-allocated for something + * else by other processes. */ +void zend_accel_pending_ce_cache_begin(void) +{ + ZEND_ASSERT(ZCG(locked)); + + /* A persist window left through a bailout caught by the caller (e.g. + * opcache_compile_file()) never published its slots. Drop them. */ + zend_accel_pending_ce_cache_discard(); + + ZCG(pending_ce_cache) = emalloc(sizeof(HashTable)); + zend_hash_init(ZCG(pending_ce_cache), 8, NULL, NULL, 0); +} + +void zend_accel_pending_ce_cache_commit(void) +{ + ZEND_ASSERT(ZCG(pending_ce_cache)); + /* Every pending slot must be covered by ZCSG(map_ptr_last) */ + ZEND_ASSERT(ZCSG(map_ptr_last) == CG(map_ptr_last)); + + ZEND_HASH_FOREACH_NUM_KEY_VAL(ZCG(pending_ce_cache), zend_ulong h, zval *zv) { + zend_string *type_name = (zend_string*)(uintptr_t)h; + + ZEND_ASSERT(!ZSTR_HAS_CE_CACHE(type_name)); + GC_SET_REFCOUNT(type_name, (uint32_t)Z_LVAL_P(zv)); + GC_ADD_FLAGS(type_name, IS_STR_CLASS_NAME_MAP_PTR); + } ZEND_HASH_FOREACH_END(); + + zend_accel_pending_ce_cache_discard(); +} + +void zend_accel_pending_ce_cache_discard(void) +{ + if (ZCG(pending_ce_cache)) { + zend_hash_destroy(ZCG(pending_ce_cache)); + efree(ZCG(pending_ce_cache)); + ZCG(pending_ce_cache) = NULL; + } +} + +void zend_accel_get_class_name_map_ptr(zend_string *type_name) { uint32_t ret; + zval *slot; if (zend_string_equals_literal_ci(type_name, "self") || zend_string_equals_literal_ci(type_name, "parent")) { - return 0; + return; } /* We use type.name.gc.refcount to keep map_ptr of corresponding type */ if (ZSTR_HAS_CE_CACHE(type_name)) { - return GC_REFCOUNT(type_name); + return; } if ((GC_FLAGS(type_name) & GC_IMMUTABLE) && (GC_FLAGS(type_name) & IS_STR_PERMANENT)) { + ZEND_ASSERT(ZCG(pending_ce_cache) && "Must be called inside a persist window"); + slot = zend_hash_index_lookup(ZCG(pending_ce_cache), (zend_ulong)(uintptr_t)type_name); + if (Z_TYPE_P(slot) != IS_NULL) { + /* Already allocated earlier in this window */ + return; + } do { ret = ZEND_MAP_PTR_NEW_OFFSET(); } while (ret <= 2); - GC_SET_REFCOUNT(type_name, ret); - GC_ADD_FLAGS(type_name, IS_STR_CLASS_NAME_MAP_PTR); - return ret; + ZVAL_LONG(slot, ret); } - - return 0; } static void zend_persist_type(zend_type *type) { @@ -1429,6 +1476,9 @@ #endif zend_map_ptr_extend(ZCSG(map_ptr_last)); + if (for_shm) { + zend_accel_pending_ce_cache_begin(); + } zend_accel_persist_class_table(&script->script.class_table); zend_hash_persist(&script->script.function_table); @@ -1456,6 +1506,7 @@ if (for_shm) { ZCSG(map_ptr_last) = CG(map_ptr_last); ZCSG(map_ptr_static_last) = zend_map_ptr_static_last; + zend_accel_pending_ce_cache_commit(); } #ifdef HAVE_JIT diff -Nru php8.4-8.4.26/ext/openssl/tests/stream_crypto_enable_timeout_blocking.phpt php8.4-8.4.27/ext/openssl/tests/stream_crypto_enable_timeout_blocking.phpt --- php8.4-8.4.26/ext/openssl/tests/stream_crypto_enable_timeout_blocking.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/openssl/tests/stream_crypto_enable_timeout_blocking.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,53 @@ +--TEST-- +OpenSSL handshake timeout restores the stream blocking mode +--EXTENSIONS-- +openssl +--SKIPIF-- + +--FILE-- + [ + 'verify_peer' => false, + 'verify_peer_name' => false, + ]]); + $client = stream_socket_client('tcp://{{ ADDR }}', $errno, $errstr, 1, STREAM_CLIENT_CONNECT, $context); + + $metadata = stream_get_meta_data($client); + var_dump($metadata['blocked']); + + set_error_handler(function (int $errno, string $errstr) use ($client): bool { + $metadata = stream_get_meta_data($client); + var_dump($metadata['blocked']); + echo $errstr, "\n"; + fclose($client); + return true; + }); + + var_dump(stream_socket_enable_crypto($client, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)); + restore_error_handler(); + var_dump(is_resource($client)); + + phpt_notify(); +CODE; + +include 'ServerClientTestCase.inc'; +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); +?> +--EXPECT-- +bool(true) +bool(true) +stream_socket_enable_crypto(): SSL: Handshake timed out +bool(false) +bool(false) diff -Nru php8.4-8.4.26/ext/openssl/tests/stream_eof_after_close_notify.phpt php8.4-8.4.27/ext/openssl/tests/stream_eof_after_close_notify.phpt --- php8.4-8.4.26/ext/openssl/tests/stream_eof_after_close_notify.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/openssl/tests/stream_eof_after_close_notify.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,58 @@ +--TEST-- +feof() is true after a TLS close_notify even if an earlier read left errno set to EAGAIN +--EXTENSIONS-- +openssl +--SKIPIF-- + +--FILE-- + ['local_cert' => '%s']]); + $sock = stream_socket_server("tls://127.0.0.1:0", $errno, $errstr, + STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $serverCtx); + phpt_notify_server_start($sock); + + $link = stream_socket_accept($sock); + /* Let the client block in fread() first, so its SSL_read() sees WANT_READ */ + phpt_wait(); + usleep(100000); + fwrite($link, "data"); + /* close_notify only, the TCP connection stays open */ + stream_socket_enable_crypto($link, false); + phpt_wait(); + fclose($link); +CODE; +$serverCode = sprintf($serverCode, $certFile); + +$clientCode = <<<'CODE' + $clientCtx = stream_context_create(['ssl' => [ + 'verify_peer' => false, + 'verify_peer_name' => false, + ]]); + $sock = stream_socket_client("tls://{{ ADDR }}", $errno, $errstr, 2, STREAM_CLIENT_CONNECT, $clientCtx); + + phpt_notify(); + var_dump(fread($sock, 4)); + var_dump(fread($sock, 4)); + var_dump(feof($sock)); + phpt_notify(); +CODE; + +include 'CertificateGenerator.inc'; +(new CertificateGenerator())->saveNewCertAsFileWithKey('stream_eof_after_close_notify', $certFile); + +include 'ServerClientTestCase.inc'; +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); +?> +--CLEAN-- + +--EXPECT-- +string(4) "data" +string(0) "" +bool(true) diff -Nru php8.4-8.4.26/ext/openssl/xp_ssl.c php8.4-8.4.27/ext/openssl/xp_ssl.c --- php8.4-8.4.26/ext/openssl/xp_ssl.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/openssl/xp_ssl.c 2026-10-19 14:38:59.000000000 +0000 @@ -2004,6 +2004,7 @@ elapsed_time = php_openssl_subtract_timeval(cur_time, start_time); if (php_openssl_compare_timeval( elapsed_time, *timeout) > 0) { + php_openssl_set_blocking(sslsock, blocked); php_error_docref(NULL, E_WARNING, "SSL: Handshake timed out"); return -1; } @@ -2185,9 +2186,11 @@ retry = 1; } - /* Also, on reads, we may get this condition on an EOF. We should check properly. */ if (read) { - stream->eof = (retry == 0 && errno != EAGAIN && !SSL_pending(sslsock->ssl_handle)); + /* EOF unless the SSL layer just needs to wait. */ + stream->eof = (retry == 0 + && err != SSL_ERROR_WANT_READ && err != SSL_ERROR_WANT_WRITE + && !SSL_pending(sslsock->ssl_handle)); } /* Don't loop indefinitely in non-blocking mode if no data is available */ diff -Nru php8.4-8.4.26/ext/pcntl/pcntl.c php8.4-8.4.27/ext/pcntl/pcntl.c --- php8.4-8.4.26/ext/pcntl/pcntl.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/pcntl.c 2026-10-19 14:38:59.000000000 +0000 @@ -29,8 +29,10 @@ #include "php.h" #include "ext/standard/info.h" +#include "ext/standard/php_filestat.h" #include "php_signal.h" #include "php_ticks.h" +#include "zend_exceptions.h" #include "zend_fibers.h" #if defined(HAVE_GETPRIORITY) || defined(HAVE_SETPRIORITY) || defined(HAVE_WAIT3) @@ -293,6 +295,7 @@ } } else if (id == 0) { zend_max_execution_timer_init(); + php_clear_stat_cache(true, NULL, 0); } RETURN_LONG((zend_long) id); @@ -1318,6 +1321,9 @@ { zval params[2], *handle, retval; struct php_pcntl_pending_signal *queue, *next; + zend_object *old_exception; + const zend_op *old_opline_before_exception = NULL; + const zend_op *old_opline = NULL; sigset_t mask; sigset_t old_mask; @@ -1345,8 +1351,24 @@ PCNTL_G(head) = NULL; /* simple stores are atomic */ PCNTL_G(tail) = NULL; + /* Dispatching can happen with an exception pending, e.g. from the interrupt check that runs + * right after an internal function threw. call_user_function() does nothing in that state, + * so set the exception aside while the handlers run. The frame is left as found: depending + * on the caller, the exception may not be registered on it yet, or may already be on its + * way to a catch block, and the caller takes it from there once we return. */ + old_exception = EG(exception); + if (old_exception) { + if (EG(current_execute_data)) { + old_opline = EG(current_execute_data)->opline; + } + old_opline_before_exception = EG(opline_before_exception); + EG(exception) = NULL; + } + /* Allocate */ while (queue) { + bool handler_threw = false; + if ((handle = zend_hash_index_find(&PCNTL_G(php_signal_table), queue->signo)) != NULL) { if (Z_TYPE_P(handle) != IS_LONG) { ZVAL_NULL(&retval); @@ -1365,9 +1387,7 @@ #ifdef HAVE_STRUCT_SIGINFO_T zval_ptr_dtor(¶ms[1]); #endif - if (EG(exception)) { - break; - } + handler_threw = NULL != EG(exception); } } @@ -1375,17 +1395,44 @@ queue->next = PCNTL_G(spares); PCNTL_G(spares) = queue; queue = next; + + /* No other handler can be called while the exception propagates */ + if (handler_threw) { + break; + } } - /* drain the remaining in case of exception thrown */ - while (queue) { - next = queue->next; - queue->next = PCNTL_G(spares); - PCNTL_G(spares) = queue; - queue = next; + if (old_exception) { + if (EG(current_execute_data)) { + EG(current_execute_data)->opline = old_opline; + } + EG(opline_before_exception) = old_opline_before_exception; + if (EG(exception)) { + zend_exception_set_previous(EG(exception), old_exception); + } else { + EG(exception) = old_exception; + } } - PCNTL_G(pending_signals) = 0; + if (UNEXPECTED(queue)) { + /* Put back what the throwing handler did not get to, instead of dropping it, and ask + * the engine to come back once the exception has been handled. Signals are still + * blocked here, so PCNTL_G(head) cannot have been repopulated in the meantime. */ + next = queue; + + while (next->next) { + next = next->next; + } + + PCNTL_G(head) = queue; + PCNTL_G(tail) = next; + + if (PCNTL_G(async_signals)) { + zend_atomic_bool_store_ex(&EG(vm_interrupt), true); + } + } else { + PCNTL_G(pending_signals) = 0; + } /* Re-enable queue */ PCNTL_G(processing_signal_queue) = 0; @@ -1528,6 +1575,7 @@ } } else if (pid == 0) { zend_max_execution_timer_init(); + php_clear_stat_cache(true, NULL, 0); } RETURN_LONG((zend_long) pid); @@ -1573,6 +1621,7 @@ } } else if (pid == 0) { zend_max_execution_timer_init(); + php_clear_stat_cache(true, NULL, 0); } RETURN_LONG((zend_long) pid); @@ -1746,7 +1795,7 @@ } if (cpu < 0 || cpu >= maxcpus) { - zend_argument_value_error(2, "cpu id must be between 0 and " ZEND_ULONG_FMT " (" ZEND_LONG_FMT ")", maxcpus, cpu); + zend_argument_value_error(2, "cpu id must be between 0 and " ZEND_LONG_FMT " (" ZEND_LONG_FMT ")", maxcpus - 1, cpu); PCNTL_CPU_DESTROY(mask); RETURN_THROWS(); } @@ -1853,13 +1902,14 @@ PHP_FUNCTION(pcntl_setqos_class) { - zval *qos_obj; + zval *qos_obj = NULL; - ZEND_PARSE_PARAMETERS_START(1, 1) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL Z_PARAM_OBJECT_OF_CLASS(qos_obj, QosClass_ce) ZEND_PARSE_PARAMETERS_END(); - qos_class_t qos_class = qos_zval_to_lval(qos_obj); + qos_class_t qos_class = qos_obj ? qos_zval_to_lval(qos_obj) : QOS_CLASS_DEFAULT; if (UNEXPECTED(pthread_set_qos_class_self_np((qos_class_t)qos_class, 0) != 0)) { diff -Nru php8.4-8.4.26/ext/pcntl/tests/gh23986.phpt php8.4-8.4.27/ext/pcntl/tests/gh23986.phpt --- php8.4-8.4.26/ext/pcntl/tests/gh23986.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/gh23986.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +GH-23986 (/proc/self paths resolve to the parent process after pcntl_fork()) +--EXTENSIONS-- +pcntl +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(true) +bool(true) +bool(true) diff -Nru php8.4-8.4.26/ext/pcntl/tests/pcntl_cpuaffinity_bound.phpt php8.4-8.4.27/ext/pcntl/tests/pcntl_cpuaffinity_bound.phpt --- php8.4-8.4.26/ext/pcntl/tests/pcntl_cpuaffinity_bound.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/pcntl_cpuaffinity_bound.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,52 @@ +--TEST-- +pcntl_setcpuaffinity(): the upper bound the error advertises is itself a valid cpu id +--EXTENSIONS-- +pcntl +--SKIPIF-- + +--FILE-- +getMessage(), $m)) { + exit("unexpected message: " . $e->getMessage() . PHP_EOL); + } +} +$bound = (int) $m[1]; + +/* Every id is range checked before any syscall runs, so pairing the advertised + bound with an out of range id shows which of the two the check rejects, + without ever changing the process affinity. */ +try { + pcntl_setcpuaffinity($pid, [$bound, PHP_INT_MAX]); +} catch (Throwable $e) { + echo $e::class, "\n"; + var_dump($e->getMessage() === $prefix . $bound . ' (' . PHP_INT_MAX . ')'); +} + +/* and the first id past the bound is rejected, naming itself */ +try { + pcntl_setcpuaffinity($pid, [$bound + 1]); +} catch (Throwable $e) { + echo $e::class, "\n"; + var_dump($e->getMessage() === $prefix . $bound . ' (' . ($bound + 1) . ')'); +} +?> +--EXPECT-- +ValueError +ValueError +bool(true) +ValueError +bool(true) diff -Nru php8.4-8.4.26/ext/pcntl/tests/pcntl_qosclass.phpt php8.4-8.4.27/ext/pcntl/tests/pcntl_qosclass.phpt --- php8.4-8.4.26/ext/pcntl/tests/pcntl_qosclass.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/pcntl_qosclass.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -13,7 +13,12 @@ var_dump(Pcntl\QosClass::Default === pcntl_getqos_class()); pcntl_setqos_class(Pcntl\QosClass::Background); var_dump(Pcntl\QosClass::Background == pcntl_getqos_class()); + +/* the parameter is optional, and omitting it applies the declared default */ +pcntl_setqos_class(); +var_dump(Pcntl\QosClass::Default === pcntl_getqos_class()); ?> --EXPECT-- bool(true) bool(true) +bool(true) diff -Nru php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_2.phpt php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_2.phpt --- php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_2.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_2.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +pcntl_signal_dispatch() keeps the signals left in the queue by a throwing handler +--EXTENSIONS-- +pcntl +posix +--FILE-- +getMessage() . "\n"; +} + +echo "Handlers called: " . implode(', ', $called) . "\n"; + +pcntl_signal_dispatch(); + +echo "Handlers called: " . implode(', ', $called) . "\n"; + +?> +--EXPECT-- +Exception in signal handler +Handlers called: SIGUSR1 +Handlers called: SIGUSR1, SIGUSR2, SIGHUP diff -Nru php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_3.phpt php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_3.phpt --- php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_3.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_3.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,47 @@ +--TEST-- +pcntl_signal_dispatch() delivers the signals a throwing handler left behind once its exception is handled +--EXTENSIONS-- +pcntl +posix +--FILE-- +getMessage() . "\n"; +} + +// No explicit dispatch: the engine delivers what the throwing handler left behind +// on its own, as soon as the exception has been handled +usleep(1000); + +echo "Handlers called: " . implode(', ', $called) . "\n"; + +?> +--EXPECT-- +Exception in signal handler +Handlers called: SIGUSR1, SIGUSR2, SIGHUP diff -Nru php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending.phpt php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending.phpt --- php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +pcntl_signal_dispatch() runs the handlers of the signals raised while an internal function ran and then threw +--EXTENSIONS-- +pcntl +zend_test +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECT-- +Handler called +Exception after raise() diff -Nru php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending_user_frame.phpt php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending_user_frame.phpt --- php8.4-8.4.26/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending_user_frame.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcntl/tests/pcntl_signal_dispatch_exception_pending_user_frame.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +pcntl_signal_dispatch() with an exception pending after an internal function called from a user frame +--EXTENSIONS-- +pcntl +zend_test +--FILE-- + +--EXPECTF-- +Handler called from test() + +Fatal error: Uncaught Exception: Exception after raise() in %s:%d +Stack trace: +#0 %s(%d): zend_test_raise_and_throw(%d) +#1 %s(%d): test() +#2 {main} + thrown in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/php_pcre.c php8.4-8.4.27/ext/pcre/php_pcre.c --- php8.4-8.4.26/ext/pcre/php_pcre.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/php_pcre.c 2026-10-19 14:38:59.000000000 +0000 @@ -191,7 +191,7 @@ static void *php_pcre_emalloc(PCRE2_SIZE size, void *data) { - return emalloc(size); + return femalloc(size, /* fallible */ true); } static void php_pcre_efree(void *block, void *data) @@ -1040,7 +1040,7 @@ } /* }}} */ -static void populate_subpat_array( +static zend_result populate_subpat_array( zval *subpats, const char *subject, PCRE2_SIZE *offsets, zend_string **subpat_names, uint32_t num_subpats, int count, const PCRE2_SPTR mark, zend_long flags) { zend_long offset_capture = flags & PREG_OFFSET_CAPTURE; @@ -1054,10 +1054,16 @@ add_offset_pair( subpats_ht, subject, offsets[2*i], offsets[2*i+1], subpat_names[i], unmatched_as_null); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } if (unmatched_as_null) { for (i = count; i < num_subpats; i++) { add_offset_pair(subpats_ht, NULL, PCRE2_UNSET, PCRE2_UNSET, subpat_names[i], 1); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } } } else { @@ -1068,6 +1074,9 @@ add_named(subpats_ht, subpat_names[i], &val, offsets[2*i] == PCRE2_UNSET); } zend_hash_next_index_insert_new(subpats_ht, &val); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } if (unmatched_as_null) { for (i = count; i < num_subpats; i++) { @@ -1076,6 +1085,9 @@ zend_hash_add(subpats_ht, subpat_names[i], &val); } zend_hash_next_index_insert_new(subpats_ht, &val); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } } } @@ -1084,10 +1096,16 @@ for (i = 0; i < count; i++) { add_offset_pair( subpats_ht, subject, offsets[2*i], offsets[2*i+1], NULL, unmatched_as_null); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } if (unmatched_as_null) { for (i = count; i < num_subpats; i++) { add_offset_pair(subpats_ht, NULL, PCRE2_UNSET, PCRE2_UNSET, NULL, 1); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } } } else { @@ -1095,10 +1113,16 @@ populate_match_value( &val, subject, offsets[2*i], offsets[2*i+1], unmatched_as_null); zend_hash_next_index_insert_new(subpats_ht, &val); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } if (unmatched_as_null) { for (i = count; i < num_subpats; i++) { add_next_index_null(subpats); + if (ZEND_HAS_OOM()) { + return FAILURE; + } } } } @@ -1107,6 +1131,7 @@ if (mark) { add_assoc_string_ex(subpats, "MARK", sizeof("MARK") - 1, (char *)mark); } + return ZEND_HAS_OOM() ? FAILURE : SUCCESS; } static void php_do_pcre_match(INTERNAL_FUNCTION_PARAMETERS, bool global) /* {{{ */ @@ -1291,6 +1316,10 @@ options, match_data, mctx); while (1) { + if (ZEND_HAS_OOM()) { + goto oom; + } + /* If something has matched */ if (count >= 0) { /* Check for too many substrings condition. */ @@ -1330,6 +1359,9 @@ add_offset_pair( match_sets[i], subject, offsets[2*i], offsets[2*i+1], NULL, unmatched_as_null); + if (ZEND_HAS_OOM()) { + goto oom; + } } } else { for (i = 0; i < count; i++) { @@ -1337,6 +1369,9 @@ populate_match_value( &val, subject, offsets[2*i], offsets[2*i+1], unmatched_as_null); zend_hash_next_index_insert_new(match_sets[i], &val); + if (ZEND_HAS_OOM()) { + goto oom; + } } } mark = pcre2_get_mark(match_data); @@ -1369,23 +1404,33 @@ ZVAL_EMPTY_STRING(&tmp); zend_hash_next_index_insert_new(match_sets[i], &tmp); } + if (ZEND_HAS_OOM()) { + goto oom; + } } } } else { /* Allocate and populate the result set array */ mark = pcre2_get_mark(match_data); array_init_size(&result_set, count + (mark ? 1 : 0)); - populate_subpat_array( + zend_result result = populate_subpat_array( &result_set, subject, offsets, subpat_names, num_subpats, count, mark, flags); + if (UNEXPECTED(result == FAILURE)) { + zval_ptr_dtor(&result_set); + goto oom; + } /* And add it to the output array */ zend_hash_next_index_insert_new(Z_ARRVAL_P(subpats), &result_set); } } else { /* single pattern matching */ /* For each subpattern, insert it into the subpatterns array. */ mark = pcre2_get_mark(match_data); - populate_subpat_array( + zend_result result = populate_subpat_array( subpats, subject, offsets, subpat_names, num_subpats, count, mark, flags); + if (UNEXPECTED(result == FAILURE)) { + goto oom; + } break; } } @@ -1492,6 +1537,25 @@ } else { RETVAL_FALSE; } + return; + +oom: + if (match_data != mdata) { + pcre2_match_data_free(match_data); + } + if (match_sets) { + for (i = 0; i < num_subpats; i++) { + zend_array_destroy(match_sets[i]); + } + efree(match_sets); + } + if (marks) { + zend_array_destroy(marks); + } + if (subpats) { + zend_hash_clean(Z_ARRVAL_P(subpats)); + } + RETURN_OOM(); } /* }}} */ @@ -1580,7 +1644,11 @@ zval arg; /* Argument to pass to function */ array_init_size(&arg, count + (mark ? 1 : 0)); - populate_subpat_array(&arg, subject, offsets, subpat_names, num_subpats, count, mark, flags); + zend_result result = populate_subpat_array(&arg, subject, offsets, subpat_names, num_subpats, count, mark, flags); + if (UNEXPECTED(result == FAILURE)) { + zval_ptr_dtor(&arg); + return NULL; + } fci->retval = &retval; fci->param_count = 1; @@ -1754,9 +1822,18 @@ if (new_len >= alloc_len) { alloc_len = zend_safe_address_guarded(2, new_len, ZSTR_MAX_OVERHEAD) - ZSTR_MAX_OVERHEAD; if (result == NULL) { - result = zend_string_alloc(alloc_len, 0); + result = zend_string_falloc(alloc_len, /* persistent */ false, /* fallible */ true); + if (!result) { + goto error; + } } else { - result = zend_string_extend(result, alloc_len, 0); + zend_string *extended_result = zend_string_fextend(result, alloc_len, /* persistent */ false, /* fallible */ true); + if (!extended_result) { + zend_string_release(result); + result = NULL; + goto error; + } + result = extended_result; } } @@ -1982,14 +2059,27 @@ fci, fcc, subject, offsets, subpat_names, num_subpats, count, pcre2_get_mark(match_data), flags); - ZEND_ASSERT(eval_result); + if (UNEXPECTED(!eval_result)) { + goto error; + } new_len = zend_safe_address_guarded(1, ZSTR_LEN(eval_result) + ZSTR_MAX_OVERHEAD, new_len) -ZSTR_MAX_OVERHEAD; if (new_len >= alloc_len) { alloc_len = zend_safe_address_guarded(2, new_len, ZSTR_MAX_OVERHEAD) - ZSTR_MAX_OVERHEAD; if (result == NULL) { - result = zend_string_alloc(alloc_len, 0); + result = zend_string_falloc(alloc_len, /* persistent */ false, /* fallible */ true); + if (!result) { + zend_string_release_ex(eval_result, 0); + goto error; + } } else { - result = zend_string_extend(result, alloc_len, 0); + zend_string *extended_result = zend_string_fextend(result, alloc_len, /* persistent */ false, /* fallible */ true); + if (!extended_result) { + zend_string_release_ex(eval_result, 0); + zend_string_release(result); + result = NULL; + goto error; + } + result = extended_result; } } @@ -2658,6 +2748,11 @@ options, match_data, mctx); while (1) { + if (ZEND_HAS_OOM()) { + PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR; + break; + } + /* If something matched */ if (count >= 0) { /* Check for too many substrings condition. */ diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_filter.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_filter.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_filter.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_filter.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +preg_filter() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_match_all.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_match_all.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_match_all.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_match_all.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +preg_match_all() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_match_all_named_groups.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_match_all_named_groups.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_match_all_named_groups.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_match_all_named_groups.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +preg_match_all() with named groups keeps the cached subpattern names on OOM +--INI-- +memory_limit=16M +--FILE-- +[a-z])(?\d)/', 'a1b2', $matches); + echo json_encode($matches), "\n"; +}); + +$subject = str_repeat("ab12 ", 400000); +preg_match_all('/(?[a-z])(?\d)/', $subject, $matches); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d +{"0":["a1","b2"],"l":["a","b"],"1":["a","b"],"d":["1","2"],"2":["1","2"]} diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_match_captures.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_match_captures.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_match_captures.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_match_captures.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +preg_match() with overlapping captures doesn't reach hard limit +--INI-- +memory_limit=128M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_replace.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_replace.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_replace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_replace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +preg_replace() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_replace_callback.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_replace_callback.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_replace_callback.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_replace_callback.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +preg_replace_callback() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_replace_callback_array.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_replace_callback_array.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_replace_callback_array.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_replace_callback_array.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +preg_replace_callback_array() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + function () use ($subject) { return $subject; }], $subject); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pcre/tests/oom_preg_split.phpt php8.4-8.4.27/ext/pcre/tests/oom_preg_split.phpt --- php8.4-8.4.26/ext/pcre/tests/oom_preg_split.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pcre/tests/oom_preg_split.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +preg_split() doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/pdo/pdo_dbh.c php8.4-8.4.27/ext/pdo/pdo_dbh.c --- php8.4-8.4.26/ext/pdo/pdo_dbh.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/pdo_dbh.c 2026-10-19 14:38:59.000000000 +0000 @@ -631,7 +631,7 @@ if ((item = zend_hash_index_find(Z_ARRVAL_P(value), 1)) != NULL) { if (Z_TYPE_P(item) != IS_ARRAY) { zend_type_error("PDO::ATTR_STATEMENT_CLASS constructor_args must be of type ?array, %s given", - zend_zval_value_name(value)); + zend_zval_value_name(item)); RETURN_THROWS(); } ZVAL_COPY_VALUE(&ctor_args, item); @@ -925,17 +925,18 @@ zend_type_error("User-supplied statement class cannot have a public constructor"); return false; } + item = zend_hash_index_find(Z_ARRVAL_P(value), 1); + if (item != NULL && Z_TYPE_P(item) != IS_ARRAY) { + zend_type_error("PDO::ATTR_STATEMENT_CLASS constructor_args must be of type ?array, %s given", + zend_zval_value_name(item)); + return false; + } dbh->def_stmt_ce = pce; if (!Z_ISUNDEF(dbh->def_stmt_ctor_args)) { zval_ptr_dtor(&dbh->def_stmt_ctor_args); ZVAL_UNDEF(&dbh->def_stmt_ctor_args); } - if ((item = zend_hash_index_find(Z_ARRVAL_P(value), 1)) != NULL) { - if (Z_TYPE_P(item) != IS_ARRAY) { - zend_type_error("PDO::ATTR_STATEMENT_CLASS constructor_args must be of type ?array, %s given", - zend_zval_value_name(value)); - return false; - } + if (item != NULL) { ZVAL_COPY(&dbh->def_stmt_ctor_args, item); } return true; @@ -1521,7 +1522,9 @@ return; } - if (dbh->driver_data && dbh->methods && dbh->methods->rollback && pdo_is_in_transaction(dbh)) { + /* The persistent list holds one reference, other objects may hold the rest */ + if (dbh->driver_data && dbh->methods && dbh->methods->rollback + && (!dbh->is_persistent || dbh->refcount <= 2) && pdo_is_in_transaction(dbh)) { dbh->methods->rollback(dbh); dbh->in_txn = false; } diff -Nru php8.4-8.4.26/ext/pdo/pdo_stmt.c php8.4-8.4.27/ext/pdo/pdo_stmt.c --- php8.4-8.4.26/ext/pdo/pdo_stmt.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/pdo_stmt.c 2026-10-19 14:38:59.000000000 +0000 @@ -76,7 +76,7 @@ if (param->paramno >= 0) { /* TODO Error? */ pdo_raise_impl_error(stmt->dbh, stmt, "IM001", "PDO refuses to handle repeating the same :named parameter for multiple positions with this driver, as it might be unsafe to do so. Consider using a separate name for each parameter instead"); - return -1; + return false; } param->paramno = position; return 1; @@ -89,6 +89,15 @@ } /* }}} */ +static bool pdo_stmt_disallow_reentrant_param_event(pdo_stmt_t *stmt) +{ + if (UNEXPECTED(stmt->in_param_event)) { + zend_throw_error(NULL, "Cannot modify a PDOStatement while parameter hooks are running"); + return false; + } + return true; +} + /* trigger callback hook for parameters */ static bool dispatch_param_event(pdo_stmt_t *stmt, enum pdo_param_event event_type) /* {{{ */ { @@ -104,6 +113,7 @@ return 1; } + stmt->in_param_event = 1; ht = stmt->bound_params; iterate: @@ -121,6 +131,7 @@ goto iterate; } + stmt->in_param_event = 0; return ret; } /* }}} */ @@ -287,10 +298,6 @@ param->stmt = stmt; param->is_param = is_param; - if (Z_REFCOUNTED(param->driver_params)) { - Z_ADDREF(param->driver_params); - } - if (!is_param && param->name && stmt->columns) { /* try to map the name to the column */ int i; @@ -311,6 +318,7 @@ spprintf(&tmp, 0, "Did not find column name '%s' in the defined columns; it will not be bound", ZSTR_VAL(param->name)); pdo_raise_impl_error(stmt->dbh, stmt, "HY000", tmp); efree(tmp); + return 0; } } @@ -373,6 +381,7 @@ } else { zend_hash_index_del(hash, pparam->paramno); } + ZVAL_UNDEF(¶m->driver_params); /* param->parameter is freed by hash dtor */ ZVAL_UNDEF(¶m->parameter); return 0; @@ -382,6 +391,29 @@ } /* }}} */ +static bool pdo_stmt_do_next_rowset(pdo_stmt_t *stmt); + +static void pdo_stmt_invalidate_result(pdo_stmt_t *stmt) +{ + if (stmt->methods->cursor_closer) { + stmt->methods->cursor_closer(stmt); + } else { + do { + while (stmt->methods->fetcher(stmt, PDO_FETCH_ORI_NEXT, 0)) + ; + if (!stmt->methods->next_rowset) { + break; + } + + if (!pdo_stmt_do_next_rowset(stmt)) { + break; + } + } while (1); + } + + stmt->executed = 0; +} + /* {{{ Execute a prepared statement, optionally binding parameters */ PHP_METHOD(PDOStatement, execute) { @@ -394,6 +426,13 @@ ZEND_PARSE_PARAMETERS_END(); PHP_STMT_GET_OBJ; + if (!pdo_stmt_disallow_reentrant_param_event(stmt)) { + RETURN_THROWS(); + } + + if (stmt->executed) { + pdo_stmt_invalidate_result(stmt); + } PDO_STMT_CLEAR_ERR(); if (input_params) { @@ -1436,6 +1475,9 @@ ZEND_PARSE_PARAMETERS_END(); PHP_STMT_GET_OBJ; + if (!pdo_stmt_disallow_reentrant_param_event(stmt)) { + RETURN_THROWS(); + } param.param_type = (int) param_type; @@ -1461,6 +1503,9 @@ if (!Z_ISUNDEF(param.parameter)) { zval_ptr_dtor(&(param.parameter)); } + if (!Z_ISUNDEF(param.driver_params)) { + zval_ptr_dtor(¶m.driver_params); + } RETURN_FALSE; } @@ -1485,6 +1530,9 @@ ZEND_PARSE_PARAMETERS_END(); PHP_STMT_GET_OBJ; + if (!pdo_stmt_disallow_reentrant_param_event(stmt)) { + RETURN_THROWS(); + } param.param_type = (int) param_type; if (param.name) { @@ -1700,6 +1748,13 @@ RETURN_FALSE; } + if (stmt->columns == NULL || colno >= stmt->column_count) { + zval_ptr_dtor(return_value); + ZVAL_UNDEF(return_value); + pdo_raise_impl_error(stmt->dbh, stmt, "07009", "invalid column index"); + RETURN_FALSE; + } + /* add stock items */ col = &stmt->columns[colno]; add_assoc_str(return_value, "name", zend_string_copy(col->name)); @@ -1717,19 +1772,16 @@ uint32_t arg1_arg_num = mode_arg_num + 1; uint32_t constructor_arg_num = mode_arg_num + 2; uint32_t total_num_args = mode_arg_num + variadic_num_args; + zend_long fetch_type = mode & ~PDO_FETCH_FLAGS; + zend_long fetch_column = 0; + zend_class_entry *fetch_class = NULL; + zend_array *fetch_ctor_args = NULL; + zend_object *fetch_into = NULL; + zval old_ctor_args; + zval old_into; - switch (stmt->default_fetch_type) { - case PDO_FETCH_INTO: - if (!Z_ISUNDEF(stmt->fetch.into)) { - zval_ptr_dtor(&stmt->fetch.into); - ZVAL_UNDEF(&stmt->fetch.into); - } - break; - default: - ; - } - - stmt->default_fetch_type = stmt->dbh->default_fetch_type; + ZVAL_UNDEF(&old_ctor_args); + ZVAL_UNDEF(&old_into); flags = mode & PDO_FETCH_FLAGS; @@ -1737,9 +1789,7 @@ return false; } - bool use_default = (mode & ~PDO_FETCH_FLAGS) == PDO_FETCH_USE_DEFAULT; - - switch (mode & ~PDO_FETCH_FLAGS) { + switch (fetch_type) { case PDO_FETCH_USE_DEFAULT: case PDO_FETCH_LAZY: case PDO_FETCH_ASSOC: @@ -1774,13 +1824,11 @@ zend_argument_value_error(arg1_arg_num, "must be greater than or equal to 0"); return false; } - stmt->fetch.column = Z_LVAL(args[0]); + fetch_column = Z_LVAL(args[0]); break; case PDO_FETCH_CLASS: { HashTable *constructor_args = NULL; - /* Undef constructor arguments */ - ZVAL_UNDEF(&stmt->fetch.cls.ctor_args); /* Gets its class name from 1st column */ if ((flags & PDO_FETCH_CLASSTYPE) == PDO_FETCH_CLASSTYPE) { if (variadic_num_args != 0) { @@ -1790,7 +1838,6 @@ zend_string_release(func); return false; } - stmt->fetch.cls.ce = NULL; } else { zend_class_entry *cep; if (variadic_num_args == 0) { @@ -1829,15 +1876,17 @@ constructor_args = Z_ARRVAL(args[1]); } } - stmt->fetch.cls.ce = cep; + fetch_class = cep; /* If constructor arguments are present and not empty */ if (constructor_args) { - ZVAL_ARR(&stmt->fetch.cls.ctor_args, zend_array_dup(constructor_args)); + if (!cep->constructor) { + zend_throw_error(NULL, "User-supplied statement does not accept constructor arguments"); + return false; + } + fetch_ctor_args = zend_array_dup(constructor_args); } } - - do_fetch_class_prepare(stmt); break; } case PDO_FETCH_INTO: @@ -1853,17 +1902,57 @@ return false; } - ZVAL_COPY(&stmt->fetch.into, &args[0]); + fetch_into = Z_OBJ(args[0]); break; default: zend_argument_value_error(mode_arg_num, "must be one of the PDO::FETCH_* constants"); return false; } - if (!use_default) { + if ((stmt->default_fetch_type & ~PDO_FETCH_FLAGS) == PDO_FETCH_INTO) { + ZVAL_COPY_VALUE(&old_into, &stmt->fetch.into); + ZVAL_UNDEF(&stmt->fetch.into); + } else if ((stmt->default_fetch_type & ~PDO_FETCH_FLAGS) == PDO_FETCH_CLASS) { + do_fetch_opt_finish(stmt, 0); + ZVAL_COPY_VALUE(&old_ctor_args, &stmt->fetch.cls.ctor_args); + ZVAL_UNDEF(&stmt->fetch.cls.ctor_args); + } else { + do_fetch_opt_finish(stmt, 1); + } + + switch (fetch_type) { + case PDO_FETCH_COLUMN: + stmt->fetch.column = fetch_column; + break; + case PDO_FETCH_CLASS: + stmt->fetch.cls.ce = fetch_class; + if (fetch_ctor_args) { + ZVAL_ARR(&stmt->fetch.cls.ctor_args, fetch_ctor_args); + } else { + ZVAL_UNDEF(&stmt->fetch.cls.ctor_args); + } + do_fetch_class_prepare(stmt); + break; + case PDO_FETCH_INTO: + ZVAL_OBJ_COPY(&stmt->fetch.into, fetch_into); + break; + default: + break; + } + + if (fetch_type == PDO_FETCH_USE_DEFAULT) { + stmt->default_fetch_type = stmt->dbh->default_fetch_type; + } else { stmt->default_fetch_type = mode; } + if (!Z_ISUNDEF(old_into)) { + zval_ptr_dtor(&old_into); + } + if (!Z_ISUNDEF(old_ctor_args)) { + zval_ptr_dtor(&old_ctor_args); + } + return true; } @@ -1879,8 +1968,6 @@ PHP_STMT_GET_OBJ; - do_fetch_opt_finish(stmt, 1); - if (!pdo_stmt_setup_fetch_mode(stmt, fetch_mode, 1, args, num_args)) { RETURN_THROWS(); } @@ -1934,6 +2021,9 @@ ZEND_PARSE_PARAMETERS_NONE(); PHP_STMT_GET_OBJ; + if (!pdo_stmt_disallow_reentrant_param_event(stmt)) { + RETURN_THROWS(); + } if (!stmt->methods->cursor_closer) { /* emulate it by fetching and discarding rows */ do { @@ -2100,6 +2190,22 @@ zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create(); zend_get_gc_buffer_add_zval(gc_buffer, &stmt->database_object_handle); zend_get_gc_buffer_add_zval(gc_buffer, &stmt->fetch.into); + if (stmt->bound_params) { + zval *val; + ZEND_HASH_FOREACH_VAL(stmt->bound_params, val) { + struct pdo_bound_param_data *param = Z_PTR_P(val); + zend_get_gc_buffer_add_zval(gc_buffer, ¶m->parameter); + zend_get_gc_buffer_add_zval(gc_buffer, ¶m->driver_params); + } ZEND_HASH_FOREACH_END(); + } + if (stmt->bound_columns) { + zval *val; + ZEND_HASH_FOREACH_VAL(stmt->bound_columns, val) { + struct pdo_bound_param_data *param = Z_PTR_P(val); + zend_get_gc_buffer_add_zval(gc_buffer, ¶m->parameter); + zend_get_gc_buffer_add_zval(gc_buffer, ¶m->driver_params); + } ZEND_HASH_FOREACH_END(); + } zend_get_gc_buffer_use(gc_buffer, gc_data, gc_count); /** diff -Nru php8.4-8.4.26/ext/pdo/php_pdo_driver.h php8.4-8.4.27/ext/pdo/php_pdo_driver.h --- php8.4-8.4.26/ext/pdo/php_pdo_driver.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/php_pdo_driver.h 2026-10-19 14:38:59.000000000 +0000 @@ -567,8 +567,9 @@ * bindParam() for its prepared statements, if false, PDO should * emulate prepare and bind on its behalf */ unsigned supports_placeholders:2; + unsigned in_param_event:1; - unsigned _reserved:29; + unsigned _reserved:28; /* the number of columns in the result set; not valid until after * the statement has been executed at least once. In some cases, might diff -Nru php8.4-8.4.26/ext/pdo/tests/get_gc_bound_params.phpt php8.4-8.4.27/ext/pdo/tests/get_gc_bound_params.phpt --- php8.4-8.4.26/ext/pdo/tests/get_gc_bound_params.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/tests/get_gc_bound_params.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,66 @@ +--TEST-- +PDO Common: PDOStatement::get_gc() must report bound params and columns for cycle collection +--EXTENSIONS-- +pdo +--SKIPIF-- + +--FILE-- +name; + } +} + +$db = PDOTest::factory(); +$db->exec('CREATE TABLE get_gc_bound_params (a INT, b INT)'); + +$insert = $db->prepare('INSERT INTO get_gc_bound_params VALUES (?, ?)'); +$param = new Tracked('param', $insert); +$insert->bindParam(1, $param, PDO::PARAM_INT); +$paramOption = null; +$insert->bindParam(2, $paramOption, PDO::PARAM_INT, 0, new Tracked('param driver option', $insert)); + +$select = $db->query('SELECT a, b FROM get_gc_bound_params'); +$column = new Tracked('column', $select); +$select->bindColumn(1, $column, PDO::PARAM_INT); +$columnOption = null; +$select->bindColumn(2, $columnOption, PDO::PARAM_INT, 0, new Tracked('column driver option', $select)); + +unset($param, $paramOption, $column, $columnOption, $insert, $select, $db); +var_dump(Tracked::$collected); +gc_collect_cycles(); +sort(Tracked::$collected); +var_dump(Tracked::$collected); +?> +--CLEAN-- + +--EXPECT-- +array(0) { +} +array(4) { + [0]=> + string(6) "column" + [1]=> + string(20) "column driver option" + [2]=> + string(5) "param" + [3]=> + string(19) "param driver option" +} diff -Nru php8.4-8.4.26/ext/pdo/tests/pdo_030.phpt php8.4-8.4.27/ext/pdo/tests/pdo_030.phpt --- php8.4-8.4.26/ext/pdo/tests/pdo_030.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/tests/pdo_030.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -75,6 +75,17 @@ var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatementx', array($db))); var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); +try { + $db->setAttribute(PDO::ATTR_STATEMENT_CLASS, [PDOStatement::class, 'invalid-args']); +} catch (TypeError $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($db->getAttribute(PDO::ATTR_STATEMENT_CLASS)); +try { + $db->prepare('SELECT * FROM test030', [PDO::ATTR_STATEMENT_CLASS => [PDOStatement::class, 'invalid-args']]); +} catch (TypeError $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} $stmt = $db->query('SELECT * FROM test030'); var_dump(get_class($stmt)); var_dump(get_class($stmt->dbh)); @@ -112,6 +123,18 @@ } } } +TypeError: PDO::ATTR_STATEMENT_CLASS constructor_args must be of type ?array, string given +array(2) { + [0]=> + string(13) "PDOStatementX" + [1]=> + array(1) { + [0]=> + object(PDODatabase)#%d (0) { + } + } +} +TypeError: PDO::ATTR_STATEMENT_CLASS constructor_args must be of type ?array, string given PDODatabase::query() PDOStatementX::__construct() string(13) "PDOStatementX" diff -Nru php8.4-8.4.26/ext/pdo/tests/pdo_bindcolumn_unknown_column.phpt php8.4-8.4.27/ext/pdo/tests/pdo_bindcolumn_unknown_column.phpt --- php8.4-8.4.26/ext/pdo/tests/pdo_bindcolumn_unknown_column.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/tests/pdo_bindcolumn_unknown_column.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,41 @@ +--TEST-- +PDO: bindColumn() must fail for a column name that is not in the result set +--EXTENSIONS-- +pdo +--SKIPIF-- + +--FILE-- +exec('CREATE TABLE pdo_bindcolumn_unknown_column (name varchar(255))'); + +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); +$stmt = $db->query('SELECT name FROM pdo_bindcolumn_unknown_column'); +var_dump(@$stmt->bindColumn('nosuchcolumn', $var)); + +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +try { + $stmt->bindColumn('nosuchcolumn', $var); +} catch (PDOException $e) { + echo $e::class, ": ", $e->getMessage(), PHP_EOL; +} +?> +--CLEAN-- +exec('DROP TABLE pdo_bindcolumn_unknown_column'); +?> +--EXPECT-- +bool(false) +PDOException: SQLSTATE[HY000]: General error: Did not find column name 'nosuchcolumn' in the defined columns; it will not be bound diff -Nru php8.4-8.4.26/ext/pdo/tests/pdo_setfetchmode_atomic.phpt php8.4-8.4.27/ext/pdo/tests/pdo_setfetchmode_atomic.phpt --- php8.4-8.4.26/ext/pdo/tests/pdo_setfetchmode_atomic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/tests/pdo_setfetchmode_atomic.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,73 @@ +--TEST-- +PDO Common: Failed setFetchMode must preserve the prior fetch mode and payload +--EXTENSIONS-- +pdo +--SKIPIF-- + +--FILE-- +exec('CREATE TABLE pdo_setfetchmode_atomic (i INT)'); +$pdo->exec('INSERT INTO pdo_setfetchmode_atomic (i) VALUES (1)'); +$stmt = $pdo->query('SELECT i FROM pdo_setfetchmode_atomic'); +$row = new stdClass; +$stmt->setFetchMode(PDO::FETCH_INTO, $row); +try { + $stmt->setFetchMode(PDO::FETCH_CLASS); +} catch (Throwable $e) { + echo "into error: ", $e::class, "\n"; +} +$r = $stmt->fetch(); + +echo "into object preserved: "; +var_dump($r === $row); +echo "into value: ", $row->i, "\n"; + +$stmt = $pdo->query('SELECT i FROM pdo_setfetchmode_atomic'); +$stmt->setFetchMode(PDO::FETCH_CLASS, FetchClass::class, ['kept']); +try { + $stmt->setFetchMode(PDO::FETCH_CLASS); +} catch (Throwable $e) { + echo "class error: ", $e::class, "\n"; +} +$r = $stmt->fetch(); + +echo "class preserved: ", $r::class, "\n"; +echo "constructor argument: ", $r->marker, "\n"; +echo "class value: ", $r->i, "\n"; +?> +--CLEAN-- + +--EXPECT-- +into error: ArgumentCountError +into object preserved: bool(true) +into value: 1 +class error: ArgumentCountError +class preserved: FetchClass +constructor argument: kept +class value: 1 diff -Nru php8.4-8.4.26/ext/pdo/tests/pdo_setfetchmode_reentrant_fetch.phpt php8.4-8.4.27/ext/pdo/tests/pdo_setfetchmode_reentrant_fetch.phpt --- php8.4-8.4.26/ext/pdo/tests/pdo_setfetchmode_reentrant_fetch.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/tests/pdo_setfetchmode_reentrant_fetch.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,75 @@ +--TEST-- +PDO Common: setFetchMode autoload re-entry observes the prior complete mode +--EXTENSIONS-- +pdo +--SKIPIF-- + +--FILE-- +exec('CREATE TABLE pdo_setfetchmode_reentrant_fetch (i INT)'); +$pdo->exec('INSERT INTO pdo_setfetchmode_reentrant_fetch (i) VALUES (1)'); +$pdo->exec('INSERT INTO pdo_setfetchmode_reentrant_fetch (i) VALUES (2)'); + +$stmt = $pdo->query('SELECT i FROM pdo_setfetchmode_reentrant_fetch ORDER BY i'); +$into = new stdClass; +$stmt->setFetchMode(PDO::FETCH_INTO, $into); +$autoload = function (string $class) use ($stmt, $into): void { + $row = $stmt->fetch(); + echo "into re-entry preserved: "; + var_dump($row === $into); + eval("class $class { public int \$i; }"); +}; +spl_autoload_register($autoload); +$stmt->setFetchMode(PDO::FETCH_CLASS, 'ReenteredIntoClass'); +spl_autoload_unregister($autoload); +$row = $stmt->fetch(); +echo "into re-entry value: ", $into->i, "\n"; +echo "outer into class: ", $row::class, " ", $row->i, "\n"; + +$stmt = $pdo->query('SELECT i FROM pdo_setfetchmode_reentrant_fetch ORDER BY i'); +$stmt->setFetchMode(PDO::FETCH_CLASS, PriorFetchClass::class, ['kept']); +$autoload = function (string $class) use ($stmt): void { + $row = $stmt->fetch(); + echo "class re-entry: ", $row::class, " ", $row->marker, " ", $row->i, "\n"; + eval("class $class { public int \$i; }"); +}; +spl_autoload_register($autoload); +$stmt->setFetchMode(PDO::FETCH_CLASS, 'ReenteredFetchClass'); +spl_autoload_unregister($autoload); +$row = $stmt->fetch(); +echo "outer class: ", $row::class, " ", $row->i, "\n"; +?> +--CLEAN-- + +--EXPECT-- +into re-entry preserved: bool(true) +into re-entry value: 1 +outer into class: ReenteredIntoClass 2 +class re-entry: PriorFetchClass kept 1 +outer class: ReenteredFetchClass 2 diff -Nru php8.4-8.4.26/ext/pdo/tests/pdo_setfetchmode_reentrant_setmode.phpt php8.4-8.4.27/ext/pdo/tests/pdo_setfetchmode_reentrant_setmode.phpt --- php8.4-8.4.26/ext/pdo/tests/pdo_setfetchmode_reentrant_setmode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo/tests/pdo_setfetchmode_reentrant_setmode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,53 @@ +--TEST-- +PDO Common: setFetchMode autoload re-entry may change the statement safely +--EXTENSIONS-- +pdo +--SKIPIF-- + +--FILE-- +exec('CREATE TABLE pdo_setfetchmode_reentrant_setmode (i INT)'); +$pdo->exec('INSERT INTO pdo_setfetchmode_reentrant_setmode (i) VALUES (1)'); +$stmt = $pdo->query('SELECT i FROM pdo_setfetchmode_reentrant_setmode'); +$first = new stdClass; +$second = new stdClass; +$stmt->setFetchMode(PDO::FETCH_INTO, $first); + +$autoload = function (string $class) use ($stmt, $second): void { + $stmt->setFetchMode(PDO::FETCH_INTO, $second); + eval("class $class { public int \$i; }"); +}; +spl_autoload_register($autoload); +$stmt->setFetchMode(PDO::FETCH_CLASS, 'ReenteredSetModeClass'); +spl_autoload_unregister($autoload); + +$row = $stmt->fetch(); +echo $row::class, " ", $row->i, "\n"; +echo "first changed: "; +var_dump(isset($first->i)); +echo "second changed: "; +var_dump(isset($second->i)); +?> +--CLEAN-- + +--EXPECT-- +ReenteredSetModeClass 1 +first changed: bool(false) +second changed: bool(false) diff -Nru php8.4-8.4.26/ext/pdo_dblib/dblib_driver.c php8.4-8.4.27/ext/pdo_dblib/dblib_driver.c --- php8.4-8.4.26/ext/pdo_dblib/dblib_driver.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_dblib/dblib_driver.c 2026-10-19 14:38:59.000000000 +0000 @@ -77,11 +77,12 @@ pdo_dblib_db_handle *H = (pdo_dblib_db_handle *)dbh->driver_data; if (H) { - pdo_dblib_err_dtor(&H->err); if (H->link) { + dbsetuserdata(H->link, (BYTE*) &H->err); dbclose(H->link); H->link = NULL; } + pdo_dblib_err_dtor(&H->err); if (H->login) { dbfreelogin(H->login); H->login = NULL; @@ -202,6 +203,8 @@ { pdo_dblib_db_handle *H = (pdo_dblib_db_handle *)dbh->driver_data; + dbsetuserdata(H->link, (BYTE*) &H->err); + if (FAIL == dbcmd(H->link, cmd)) { return false; } @@ -241,6 +244,8 @@ * Would use scope_identity() but it's not implemented on Sybase */ + dbsetuserdata(H->link, (BYTE*) &H->err); + if (FAIL == dbcmd(H->link, "SELECT @@IDENTITY")) { return NULL; } diff -Nru php8.4-8.4.26/ext/pdo_dblib/dblib_stmt.c php8.4-8.4.27/ext/pdo_dblib/dblib_stmt.c --- php8.4-8.4.26/ext/pdo_dblib/dblib_stmt.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_dblib/dblib_stmt.c 2026-10-19 14:38:59.000000000 +0000 @@ -95,6 +95,8 @@ pdo_dblib_stmt *S = (pdo_dblib_stmt*)stmt->driver_data; pdo_dblib_db_handle *H = S->H; + dbsetuserdata(H->link, (BYTE*) &S->err); + /* Cancel any pending results */ dbcancel(H->link); @@ -152,6 +154,8 @@ pdo_dblib_db_handle *H = S->H; RETCODE ret = SUCCESS; + dbsetuserdata(H->link, (BYTE*) &S->err); + /* Ideally use dbcanquery here, but there is a bug in FreeTDS's implementation of dbcanquery * It has been resolved but is currently only available in nightly builds */ @@ -201,6 +205,8 @@ pdo_dblib_stmt *S = (pdo_dblib_stmt*)stmt->driver_data; pdo_dblib_db_handle *H = S->H; + dbsetuserdata(H->link, (BYTE*) &S->err); + ret = dbnextrow(H->link); if (FAIL == ret) { @@ -226,6 +232,8 @@ return FAILURE; } + dbsetuserdata(H->link, (BYTE*) &S->err); + if (colno == 0) { S->computed_column_name_count = 0; } @@ -350,6 +358,8 @@ DBCHAR *tmp_data; DBINT data_len, tmp_data_len; + dbsetuserdata(H->link, (BYTE*) &S->err); + coltype = dbcoltype(H->link, colno+1); data = dbdata(H->link, colno+1); data_len = dbdatlen(H->link, colno+1); @@ -472,7 +482,7 @@ return FAILURE; } - array_init(return_value); + dbsetuserdata(H->link, (BYTE*) &S->err); dbtypeinfo = dbcoltypeinfo(H->link, colno+1); @@ -480,6 +490,8 @@ coltype = dbcoltype(H->link, colno+1); + array_init(return_value); + add_assoc_long(return_value, "max_length", dbcollen(H->link, colno+1) ); add_assoc_long(return_value, "precision", (int) dbtypeinfo->precision ); add_assoc_long(return_value, "scale", (int) dbtypeinfo->scale ); diff -Nru php8.4-8.4.26/ext/pdo_dblib/tests/gh23741.phpt php8.4-8.4.27/ext/pdo_dblib/tests/gh23741.phpt --- php8.4-8.4.26/ext/pdo_dblib/tests/gh23741.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_dblib/tests/gh23741.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +GH-23741 (pdo_dblib: segfault after a failed query inside a PDO transaction) +--EXTENSIONS-- +pdo_dblib +--SKIPIF-- + +--FILE-- + PDO::ERRMODE_SILENT]); + +$db->query('CREATE TABLE gh23741 (id int)'); + +$db->beginTransaction(); +echo 'failing query inside the transaction: '; +var_dump($db->query('CREATE VIEW gh23741 AS SELECT 1 AS x')); +$db->rollBack(); + +echo 'query after the failure: '; +var_dump($db->query('DROP TABLE IF EXISTS gh23741') instanceof PDOStatement); + +echo "survived connection teardown\n"; +?> +--CLEAN-- +exec('DROP VIEW IF EXISTS gh23741'); +$db->exec('DROP TABLE IF EXISTS gh23741'); +?> +--EXPECT-- +failing query inside the transaction: bool(false) +query after the failure: bool(true) +survived connection teardown diff -Nru php8.4-8.4.26/ext/pdo_dblib/tests/gh23741_2.phpt php8.4-8.4.27/ext/pdo_dblib/tests/gh23741_2.phpt --- php8.4-8.4.26/ext/pdo_dblib/tests/gh23741_2.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_dblib/tests/gh23741_2.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +GH-23741 (pdo_dblib: crash reading metadata after a sibling statement is freed) +--EXTENSIONS-- +pdo_dblib +--SKIPIF-- + +--FILE-- + PDO::ERRMODE_SILENT]); + +$wide = $db->query('SELECT 1 AS a, 2 AS b, 3 AS c'); +$narrow = $db->query('SELECT 9 AS z'); +unset($narrow); + +echo 'metadata for a column the connection no longer has: '; +var_dump($wide->getColumnMeta(2)); + +echo "survived the out-of-range column\n"; +?> +--EXPECT-- +metadata for a column the connection no longer has: bool(false) +survived the out-of-range column diff -Nru php8.4-8.4.26/ext/pdo_firebird/firebird_statement.c php8.4-8.4.27/ext/pdo_firebird/firebird_statement.c --- php8.4-8.4.26/ext/pdo_firebird/firebird_statement.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_firebird/firebird_statement.c 2026-10-19 14:38:59.000000000 +0000 @@ -446,6 +446,8 @@ php_firebird_error_stmt_with_info(stmt, "HY000", strlen("HY000"), msg, strlen(msg)); goto fetch_blob_end; } + } else { + ZVAL_EMPTY_STRING(result); } retval = 1; diff -Nru php8.4-8.4.26/ext/pdo_firebird/tests/gh23758.phpt php8.4-8.4.27/ext/pdo_firebird/tests/gh23758.phpt --- php8.4-8.4.26/ext/pdo_firebird/tests/gh23758.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_firebird/tests/gh23758.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,52 @@ +--TEST-- +GH-23758 (PDO_Firebird returns null for non-null empty BLOBs) +--EXTENSIONS-- +pdo_firebird +--SKIPIF-- + +--XLEAK-- +A bug in firebird causes a memory leak when calling `isc_attach_database()`. +See https://github.com/FirebirdSQL/firebird/issues/7849 +--FILE-- +exec('CREATE TABLE gh23758 (ID INTEGER, BIN_VAL BLOB SUB_TYPE BINARY, TEXT_VAL BLOB SUB_TYPE TEXT)'); + +$stmt = $dbh->prepare('INSERT INTO gh23758 VALUES (?, ?, ?)'); +$stmt->execute([1, null, null]); +$stmt->execute([2, '', '']); + +$stmt = $dbh->query('SELECT BIN_VAL, TEXT_VAL FROM gh23758 ORDER BY ID'); +var_dump($stmt->fetchAll(PDO::FETCH_NUM)); + +unset($stmt); +unset($dbh); + +?> +--CLEAN-- +exec('DROP TABLE gh23758'); +unset($dbh); +?> +--EXPECT-- +array(2) { + [0]=> + array(2) { + [0]=> + NULL + [1]=> + NULL + } + [1]=> + array(2) { + [0]=> + string(0) "" + [1]=> + string(0) "" + } +} diff -Nru php8.4-8.4.26/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset_columncount.phpt php8.4-8.4.27/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset_columncount.phpt --- php8.4-8.4.26/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset_columncount.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset_columncount.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +MySQL PDOStatement->columnCount() is 0 for the trailing OK packet of a stored procedure +--EXTENSIONS-- +pdo_mysql +--SKIPIF-- + +--FILE-- +exec('DROP PROCEDURE IF EXISTS pdo_mysql_stmt_nextrowset_columncount_p'); +$db->exec('CREATE PROCEDURE pdo_mysql_stmt_nextrowset_columncount_p() BEGIN SELECT 1 AS a; SELECT 2 AS b, 3 AS c; END'); + +foreach ([true, false] as $emulate) { + $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, $emulate); + $stmt = $db->prepare('CALL pdo_mysql_stmt_nextrowset_columncount_p()'); + $stmt->execute(); + do { + var_dump($stmt->columnCount()); + $stmt->fetchAll(); + } while ($stmt->nextRowset()); +} +?> +--CLEAN-- +exec('DROP PROCEDURE IF EXISTS pdo_mysql_stmt_nextrowset_columncount_p'); +?> +--EXPECT-- +int(1) +int(2) +int(0) +int(1) +int(2) +int(0) diff -Nru php8.4-8.4.26/ext/pdo_odbc/tests/getcolumnmeta_bounds.phpt php8.4-8.4.27/ext/pdo_odbc/tests/getcolumnmeta_bounds.phpt --- php8.4-8.4.26/ext/pdo_odbc/tests/getcolumnmeta_bounds.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_odbc/tests/getcolumnmeta_bounds.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,49 @@ +--TEST-- +PDO_odbc getColumnMeta() bounds checking on unexecuted statements and invalid indexes +--EXTENSIONS-- +pdo_odbc +--SKIPIF-- + +--FILE-- + PDO::ERRMODE_EXCEPTION]); +$stmt = $pdo->prepare('SELECT 1 AS one'); + +try { + var_dump($stmt->getColumnMeta(0)); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), "\n"; +} + +$stmt->execute(); +var_dump($stmt->getColumnMeta(0)); + +try { + var_dump($stmt->getColumnMeta(5)); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), "\n"; +} + +echo "done\n"; +?> +--EXPECTF-- +PDOException: SQLSTATE[07009]: Invalid descriptor index: invalid column index +array(4) { + ["pdo_type"]=> + int(2) + ["name"]=> + string(3) "one" + ["len"]=> + int(%d) + ["precision"]=> + int(%d) +} +PDOException: SQLSTATE[07009]: Invalid descriptor index: invalid column index +done diff -Nru php8.4-8.4.26/ext/pdo_sqlite/tests/gh23962.phpt php8.4-8.4.27/ext/pdo_sqlite/tests/gh23962.phpt --- php8.4-8.4.26/ext/pdo_sqlite/tests/gh23962.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_sqlite/tests/gh23962.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +GH-23962 (Destroying a persistent PDO instance rolls back a transaction still in use by another instance) +--CREDITS-- +BoyeMagnus +--EXTENSIONS-- +pdo_sqlite +--FILE-- + true]); +$b = new PDO($dsn, null, null, [PDO::ATTR_PERSISTENT => true]); + +$b->beginTransaction(); +unset($a); +var_dump($b->inTransaction()); +var_dump($b->commit()); + +$b->beginTransaction(); +$b->exec('CREATE TABLE test (a int)'); +unset($b); + +$c = new PDO($dsn, null, null, [PDO::ATTR_PERSISTENT => true]); +var_dump($c->inTransaction()); +var_dump($c->query("SELECT count(*) FROM sqlite_master WHERE name = 'test'")->fetchColumn()); +?> +--EXPECT-- +bool(true) +bool(true) +bool(false) +int(0) diff -Nru php8.4-8.4.26/ext/pdo_sqlite/tests/pdo_driver_options_weakref.phpt php8.4-8.4.27/ext/pdo_sqlite/tests/pdo_driver_options_weakref.phpt --- php8.4-8.4.26/ext/pdo_sqlite/tests/pdo_driver_options_weakref.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_sqlite/tests/pdo_driver_options_weakref.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +PDO SQLite releases driverOptions objects after binding or failed registration +--EXTENSIONS-- +pdo_sqlite +--FILE-- +prepare('SELECT ? AS value'); +$value = 1; +$driverOptions = [new Tracked()]; +$weakReference = WeakReference::create($driverOptions[0]); +var_dump($stmt->bindParam(1, $value, PDO::PARAM_STR, 0, $driverOptions)); +unset($driverOptions, $value, $stmt); +gc_collect_cycles(); +var_dump($weakReference->get()); + +$stmt = $db->prepare('SELECT ? AS value'); +$stmt->execute(); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); +$value = null; +$driverOptions = [new Tracked()]; +$weakReference = WeakReference::create($driverOptions[0]); +var_dump(@$stmt->bindColumn('missing', $value, PDO::PARAM_STR, 0, $driverOptions)); +unset($driverOptions); +var_dump($weakReference->get()); +unset($value, $stmt); +?> +--EXPECT-- +bool(true) +NULL +bool(false) +NULL diff -Nru php8.4-8.4.26/ext/pdo_sqlite/tests/pdo_sqlite_failed_execute.phpt php8.4-8.4.27/ext/pdo_sqlite/tests/pdo_sqlite_failed_execute.phpt --- php8.4-8.4.26/ext/pdo_sqlite/tests/pdo_sqlite_failed_execute.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_sqlite/tests/pdo_sqlite_failed_execute.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,83 @@ +--TEST-- +PDO SQLite: failed execute invalidates the previous result +--EXTENSIONS-- +pdo_sqlite +--FILE-- +prepare('SELECT ? AS value UNION ALL SELECT 2'); +$stmt->execute(['first']); +var_dump($stmt->fetchColumn()); + +try { + $stmt->execute([new stdClass()]); +} catch (Error $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($stmt->fetchColumn()); + +$stmt->execute(['third']); +var_dump($stmt->fetchAll(PDO::FETCH_COLUMN)); + +$db->sqliteCreateFunction('fail_execute', function (bool $fail): string { + if ($fail) { + throw new RuntimeException('execution failed'); + } + return 'first'; +}); +$stmt = $db->prepare('SELECT fail_execute(?) AS value UNION ALL SELECT 2'); +$stmt->execute([false]); +var_dump($stmt->fetchColumn()); + +try { + $stmt->execute([true]); +} catch (RuntimeException $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +var_dump($stmt->fetchColumn()); + +$stmt->execute([false]); +var_dump($stmt->fetchAll(PDO::FETCH_COLUMN)); + +$db->exec('CREATE TABLE failed_execute (value INTEGER UNIQUE)'); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); +$stmt = $db->prepare('INSERT INTO failed_execute VALUES (?)'); +$stmt->execute([1]); +$warnings = 0; +set_error_handler(function () use (&$warnings): bool { + $warnings++; + return true; +}); +try { + var_dump($stmt->execute([1])); +} finally { + restore_error_handler(); +} +echo "driver warnings: $warnings\n"; +var_dump($stmt->fetchColumn()); + +?> +--EXPECT-- +string(5) "first" +Error: Object of class stdClass could not be converted to string +bool(false) +array(2) { + [0]=> + string(5) "third" + [1]=> + int(2) +} +string(5) "first" +RuntimeException: execution failed +bool(false) +array(2) { + [0]=> + string(5) "first" + [1]=> + int(2) +} +bool(false) +driver warnings: 1 +bool(false) diff -Nru php8.4-8.4.26/ext/pdo_sqlite/tests/pdo_sqlite_reentrant_bind.phpt php8.4-8.4.27/ext/pdo_sqlite/tests/pdo_sqlite_reentrant_bind.phpt --- php8.4-8.4.26/ext/pdo_sqlite/tests/pdo_sqlite_reentrant_bind.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/pdo_sqlite/tests/pdo_sqlite_reentrant_bind.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,102 @@ +--TEST-- +Rebinding or re-executing from a parameter __toString() must not mutate bound_params mid-FOREACH +--EXTENSIONS-- +pdo_sqlite +--FILE-- +stmt->bindValue(1, 'x'); + echo "bindValue: no error\n"; + } catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + return 'rebind'; + } +} + +class Reexec { + public function __construct(private PDOStatement $stmt) {} + public function __toString() { + try { + $this->stmt->execute(['x', 'y']); + echo "execute: no error\n"; + } catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + return 'reexec'; + } +} + +class Reclose { + public function __construct(private PDOStatement $stmt) {} + public function __toString() { + try { + $this->stmt->closeCursor(); + echo "closeCursor: no error\n"; + } catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + return 'reclose'; + } +} + +$db = new PDO('sqlite::memory:'); + +echo "bindValue:\n"; +$stmt = $db->prepare('SELECT ?, ?'); +$p1 = 'placeholder'; +$p2 = 'second'; +$stmt->bindParam(1, $p1); +$stmt->bindParam(2, $p2); +$p1 = new Rebind($stmt); +try { + $stmt->execute(); + echo "execute after bindValue: no error\n"; +} catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "execute:\n"; +$stmt = $db->prepare('SELECT ?, ?'); +$p1 = 'placeholder'; +$p2 = 'second'; +$stmt->bindParam(1, $p1); +$stmt->bindParam(2, $p2); +$p1 = new Reexec($stmt); +try { + $stmt->execute(); + echo "execute after execute: no error\n"; +} catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "closeCursor:\n"; +$stmt = $db->prepare('SELECT ?, ?'); +$p1 = 'placeholder'; +$p2 = 'second'; +$stmt->bindParam(1, $p1); +$stmt->bindParam(2, $p2); +$p1 = new Reclose($stmt); +try { + $stmt->execute(); + echo "execute after closeCursor: no error\n"; +} catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "done\n"; +?> +--EXPECT-- +bindValue: +Error: Cannot modify a PDOStatement while parameter hooks are running +execute after bindValue: no error +execute: +Error: Cannot modify a PDOStatement while parameter hooks are running +execute after execute: no error +closeCursor: +Error: Cannot modify a PDOStatement while parameter hooks are running +execute after closeCursor: no error +done diff -Nru php8.4-8.4.26/ext/readline/readline_cli.c php8.4-8.4.27/ext/readline/readline_cli.c --- php8.4-8.4.26/ext/readline/readline_cli.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/readline/readline_cli.c 2026-10-19 14:38:59.000000000 +0000 @@ -130,7 +130,7 @@ char *prompt_spec = CLIR_G(prompt) ? CLIR_G(prompt) : DEFAULT_PROMPT; bool unicode_warned = false; - do { + while (*prompt_spec) { if (*prompt_spec == '\\') { switch (prompt_spec[1]) { case '\\': @@ -198,9 +198,9 @@ smart_str_appendc(&retval, '?'); } } - } while (++prompt_spec && *prompt_spec); - smart_str_0(&retval); - return retval.s; + ++prompt_spec; + } + return smart_str_extract(&retval); } /* }}} */ diff -Nru php8.4-8.4.26/ext/reflection/php_reflection.c php8.4-8.4.27/ext/reflection/php_reflection.c --- php8.4-8.4.26/ext/reflection/php_reflection.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/reflection/php_reflection.c 2026-10-19 14:38:59.000000000 +0000 @@ -6461,7 +6461,7 @@ RETURN_THROWS(); } - zval *src = &object->ce->default_properties_table[OBJ_PROP_TO_NUM(prop->offset)]; + zval *src = &CE_DEFAULT_PROPERTIES_TABLE(object->ce)[OBJ_PROP_TO_NUM(prop->offset)]; zval *dst = OBJ_PROP(object, prop->offset); if (!(Z_PROP_FLAG_P(dst) & IS_PROP_LAZY)) { diff -Nru php8.4-8.4.26/ext/session/mod_user.c php8.4-8.4.27/ext/session/mod_user.c --- php8.4-8.4.26/ext/session/mod_user.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/session/mod_user.c 2026-10-19 14:38:59.000000000 +0000 @@ -237,12 +237,16 @@ } zval_ptr_dtor(&retval); } else { - zend_throw_error(NULL, "No session id returned by function"); + if (!EG(exception)) { + zend_throw_error(NULL, "No session id returned by function"); + } return NULL; } if (!id) { - zend_throw_error(NULL, "Session id must be a string"); + if (!EG(exception)) { + zend_throw_error(NULL, "Session id must be a string"); + } return NULL; } diff -Nru php8.4-8.4.26/ext/session/php_session.h php8.4-8.4.27/ext/session/php_session.h --- php8.4-8.4.26/ext/session/php_session.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/session/php_session.h 2026-10-19 14:38:59.000000000 +0000 @@ -204,6 +204,8 @@ bool set_handler; /* state if session module i setting handler or not */ bool random_seeded; zend_string *session_vars; /* serialized original session data */ + + bool in_rfc1867_update; /* php_session_rfc1867_update() is running */ } php_ps_globals; typedef php_ps_globals zend_ps_globals; diff -Nru php8.4-8.4.26/ext/session/session.c php8.4-8.4.27/ext/session/session.c --- php8.4-8.4.26/ext/session/session.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/session/session.c 2026-10-19 14:38:59.000000000 +0000 @@ -108,7 +108,6 @@ static inline void php_rinit_session_globals(void) /* {{{ */ { /* Do NOT init PS(mod_user_names) here! */ - /* TODO: These could be moved to MINIT and removed. These should be initialized by php_rshutdown_session_globals() always when execution is finished. */ PS(id) = NULL; PS(session_status) = php_session_none; PS(in_save_handler) = 0; @@ -118,6 +117,7 @@ PS(define_sid) = 1; PS(session_vars) = NULL; PS(module_number) = my_module_number; + PS(in_rfc1867_update) = false; ZVAL_UNDEF(&PS(http_session_vars)); } /* }}} */ @@ -465,7 +465,11 @@ } PS(id) = PS(mod)->s_create_sid(&PS(mod_data)); if (!PS(id)) { - PS(id) = php_session_create_id(NULL); + php_session_abort(); + if (!EG(exception)) { + zend_throw_error(NULL, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path)); + } + return FAILURE; } if (PS(use_cookies)) { PS(send_cookie) = 1; @@ -957,13 +961,35 @@ /* *************** * Serializers * *************** */ + +/* The upload progress handler (php_session_rfc1867_update()) decodes and + * re-encodes the session during request startup, before RINIT, when no user + * code may run. Objects are then kept as __PHP_Incomplete_Class: no + * autoloading, no unserialize_callback_func, no __wakeup() or __unserialize(), + * and they are written back unchanged. */ +static void php_session_unserialize_init(php_unserialize_data_t *var_hash) +{ + PHP_VAR_UNSERIALIZE_INIT(*var_hash); + if (PS(in_rfc1867_update)) { + php_var_unserialize_set_incomplete_classes_only(*var_hash, true); + } +} + +static void php_session_serialize_init(php_serialize_data_t *var_hash) +{ + PHP_VAR_SERIALIZE_INIT(*var_hash); + if (PS(in_rfc1867_update)) { + php_var_serialize_set_incomplete_classes_only(*var_hash, true); + } +} + PS_SERIALIZER_ENCODE_FUNC(php_serialize) /* {{{ */ { smart_str buf = {0}; php_serialize_data_t var_hash; IF_SESSION_VARS() { - PHP_VAR_SERIALIZE_INIT(var_hash); + php_session_serialize_init(&var_hash); php_var_serialize(&buf, Z_REFVAL(PS(http_session_vars)), &var_hash); PHP_VAR_SERIALIZE_DESTROY(var_hash); } @@ -980,7 +1006,7 @@ zend_string *var_name = ZSTR_INIT_LITERAL("_SESSION", 0); ZVAL_NULL(&session_vars); - PHP_VAR_UNSERIALIZE_INIT(var_hash); + php_session_unserialize_init(&var_hash); result = php_var_unserialize( &session_vars, (const unsigned char **)&val, (const unsigned char *)endptr, &var_hash); PHP_VAR_UNSERIALIZE_DESTROY(var_hash); @@ -1013,7 +1039,7 @@ php_serialize_data_t var_hash; PS_ENCODE_VARS; - PHP_VAR_SERIALIZE_INIT(var_hash); + php_session_serialize_init(&var_hash); PS_ENCODE_LOOP( if (ZSTR_LEN(key) > PS_BIN_MAX) continue; @@ -1037,7 +1063,7 @@ php_unserialize_data_t var_hash; zval *current, rv; - PHP_VAR_UNSERIALIZE_INIT(var_hash); + php_session_unserialize_init(&var_hash); for (p = val; p < endptr; ) { size_t namelen = ((unsigned char)(*p)) & (~PS_BIN_UNDEF); @@ -1079,7 +1105,7 @@ bool fail = false; PS_ENCODE_VARS; - PHP_VAR_SERIALIZE_INIT(var_hash); + php_session_serialize_init(&var_hash); PS_ENCODE_LOOP( smart_str_appendl(&buf, ZSTR_VAL(key), ZSTR_LEN(key)); @@ -1114,7 +1140,7 @@ php_unserialize_data_t var_hash; zval *current, rv; - PHP_VAR_UNSERIALIZE_INIT(var_hash); + php_session_unserialize_init(&var_hash); p = val; @@ -2980,6 +3006,7 @@ ps_globals->mod = NULL; ps_globals->serializer = NULL; ps_globals->mod_data = NULL; + ps_globals->in_rfc1867_update = false; ps_globals->session_status = php_session_none; ps_globals->default_mod = NULL; ps_globals->mod_user_implemented = 0; @@ -3193,8 +3220,12 @@ progress->next_update = Z_LVAL_P(progress->post_bytes_processed) + progress->update_step; } - php_session_initialize(); - PS(session_status) = php_session_active; + /* Runs before RINIT: no user code may be invoked, see php_session_unserialize_init() */ + PS(in_rfc1867_update) = true; + if (php_session_initialize() == FAILURE || PS(session_status) != php_session_active) { + PS(in_rfc1867_update) = false; + return; + } IF_SESSION_VARS() { zval *sess_var = Z_REFVAL(PS(http_session_vars)); SEPARATE_ARRAY(sess_var); @@ -3204,18 +3235,23 @@ zend_hash_update(Z_ARRVAL_P(sess_var), progress->key.s, &progress->data); } php_session_flush(1); + PS(in_rfc1867_update) = false; } /* }}} */ static void php_session_rfc1867_cleanup(php_session_rfc1867_progress *progress) /* {{{ */ { - php_session_initialize(); - PS(session_status) = php_session_active; + PS(in_rfc1867_update) = true; + if (php_session_initialize() == FAILURE || PS(session_status) != php_session_active) { + PS(in_rfc1867_update) = false; + return; + } IF_SESSION_VARS() { zval *sess_var = Z_REFVAL(PS(http_session_vars)); SEPARATE_ARRAY(sess_var); zend_hash_del(Z_ARRVAL_P(sess_var), progress->key.s); } php_session_flush(1); + PS(in_rfc1867_update) = false; } /* }}} */ static zend_result php_session_rfc1867_callback(unsigned int event, void *event_data, void **extra) /* {{{ */ @@ -3229,12 +3265,20 @@ if (!PS(rfc1867_enabled)) { return retval; } + if (PG(modules_activated)) { + /* request_parse_body(). Do not run here as it corrupts the session. */ + return retval; + } progress = PS(rfc1867_progress); switch(event) { case MULTIPART_EVENT_START: { multipart_event_start *data = (multipart_event_start *) event_data; + + /* This runs before RINIT, so we need to clear these early */ + php_rinit_session_globals(); + progress = ecalloc(1, sizeof(php_session_rfc1867_progress)); progress->content_length = data->content_length; progress->sname_len = strlen(PS(session_name)); @@ -3392,6 +3436,11 @@ efree(progress); progress = NULL; PS(rfc1867_progress) = NULL; + + /* $_SESSION was populated in incomplete_classes_only mode */ + zend_string *session_var_name = ZSTR_INIT_LITERAL("_SESSION", 0); + zend_delete_global_variable(session_var_name); + zend_string_release_ex(session_var_name, 0); } break; } diff -Nru php8.4-8.4.26/ext/session/tests/rfc1867_incomplete_class_reserved_props.phpt php8.4-8.4.27/ext/session/tests/rfc1867_incomplete_class_reserved_props.phpt --- php8.4-8.4.26/ext/session/tests/rfc1867_incomplete_class_reserved_props.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/rfc1867_incomplete_class_reserved_props.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,139 @@ +--TEST-- +session rfc1867: the upload progress update rejects session data whose objects carry the incomplete class bookkeeping property names +--EXTENSIONS-- +session +--SKIPIF-- + +--FILE-- + 'x|O:8:"stdClass":1:{s:1:"a";i:1;}', + 'Class_Name' => 'x|O:8:"stdClass":1:{s:27:"__PHP_Incomplete_Class_Name";s:3:"foo";}', + 'Class_Serialized' => 'x|O:8:"stdClass":1:{s:33:"__PHP_Incomplete_Class_Serialized";s:3:"foo";}', + 'Enum_Case' => 'x|O:8:"stdClass":1:{s:26:"__PHP_Incomplete_Enum_Case";s:3:"foo";}', + 'nested' => 'x|a:1:{i:0;O:8:"stdClass":1:{s:27:"__PHP_Incomplete_Class_Name";s:3:"foo";}}', + 'mangled' => 'x|O:8:"stdClass":1:{s:30:"' . "\0" . 'A' . "\0" . '__PHP_Incomplete_Class_Name";s:3:"foo";}', + 'corrupt' => 'x|not-serialized-at-all', +]; + +$boundary = '---------------------------20896060251896012921717172737'; +$body = "--$boundary\r\n" + . "Content-Disposition: form-data; name=\"PHPSESSID\"\r\n\r\n$sid\r\n" + . "--$boundary\r\n" + . "Content-Disposition: form-data; name=\"PHP_SESSION_UPLOAD_PROGRESS\"\r\n\r\nkey\r\n" + . "--$boundary\r\n" + . "Content-Disposition: form-data; name=\"file1\"; filename=\"file1.txt\"\r\n\r\n1\r\n" + . "--$boundary--\r\n"; + +$ini = [ + 'error_reporting' => 'E_ALL', + 'html_errors' => '0', + 'file_uploads' => '1', + 'upload_max_filesize' => '1024', + 'session.save_path' => $dir, + 'session.name' => 'PHPSESSID', + 'session.use_strict_mode' => '0', + 'session.use_cookies' => '0', + 'session.use_only_cookies' => '0', + 'session.cache_limiter' => '', + 'session.save_handler' => 'files', + 'session.serialize_handler' => 'php', + 'session.upload_progress.enabled' => '1', + 'session.upload_progress.cleanup' => '0', + 'session.upload_progress.prefix' => 'upload_progress_', + 'session.upload_progress.name' => 'PHP_SESSION_UPLOAD_PROGRESS', + 'session.upload_progress.freq' => '1%', + 'session.upload_progress.min_freq' => '0.000000001', +]; + +/* php-cgi is started with -n, so a shared session module has to be named again. */ +$extension_dir = ini_get('extension_dir'); +foreach (['session.' . PHP_SHLIB_SUFFIX, 'php_session.' . PHP_SHLIB_SUFFIX] as $module) { + if ($extension_dir !== false && file_exists("$extension_dir/$module")) { + $ini['extension_dir'] = $extension_dir; + $ini['extension'] = $module; + break; + } +} + +$cmd = [getenv('TEST_PHP_CGI_EXECUTABLE'), '-n', '-q']; +foreach ($ini as $name => $value) { + $cmd[] = '-d'; + $cmd[] = "$name=$value"; +} +$cmd[] = '-f'; +$cmd[] = $worker; + +$env = getenv(); +$env['REDIRECT_STATUS'] = '1'; +$env['REQUEST_METHOD'] = 'POST'; +$env['CONTENT_TYPE'] = "multipart/form-data; boundary=$boundary"; +$env['CONTENT_LENGTH'] = (string) strlen($body); +$env['SCRIPT_FILENAME'] = $worker; +$env['PATH_TRANSLATED'] = $worker; +$env['QUERY_STRING'] = ''; + +foreach ($cases as $label => $record) { + file_put_contents($file, $record); + + $pipes = []; + $proc = proc_open( + $cmd, + [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes, + $dir, + $env + ); + fwrite($pipes[0], $body); + fclose($pipes[0]); + $out = stream_get_contents($pipes[1]) . stream_get_contents($pipes[2]); + fclose($pipes[1]); + fclose($pipes[2]); + proc_close($proc); + + /* A refused decode must leave exactly one warning: the handler stops there + * instead of writing the progress into the empty session it was left with, + * which would add a second warning about the save path. */ + $kept = file_exists($file) && str_starts_with(file_get_contents($file), $record); + printf("%-16s warnings: %d, decode refused: %-5s record kept: %s\n", $label, + substr_count($out, 'Warning:'), + var_export(str_contains($out, 'Session has been destroyed'), true), + var_export($kept, true)); +} + +?> +--CLEAN-- + +--EXPECT-- +control warnings: 0, decode refused: false record kept: true +Class_Name warnings: 1, decode refused: true record kept: false +Class_Serialized warnings: 1, decode refused: true record kept: false +Enum_Case warnings: 1, decode refused: true record kept: false +nested warnings: 1, decode refused: true record kept: false +mangled warnings: 0, decode refused: false record kept: true +corrupt warnings: 1, decode refused: true record kept: false diff -Nru php8.4-8.4.26/ext/session/tests/rfc1867_no_user_code.phpt php8.4-8.4.27/ext/session/tests/rfc1867_no_user_code.phpt --- php8.4-8.4.26/ext/session/tests/rfc1867_no_user_code.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/rfc1867_no_user_code.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,217 @@ +--TEST-- +session rfc1867: the upload progress update resolves no classes, keeps the session data intact and leaves no $_SESSION behind +--EXTENSIONS-- +session +--SKIPIF-- + +--FILE-- +a = $d['a']; + } + function __serialize(): array { + echo "U::__serialize\n"; + return ['a' => $this->a]; + } +} + +class Cust implements Serializable { + public $x = 'payload'; + function serialize() { + return $this->x; + } + function unserialize($d) { + $this->x = $d; + } +} + +/* The handler needs a $_SESSION to decode the record into, and registers it in + * the global symbol table. This script has not called session_start(), so it + * must not be left behind: it would otherwise expose the session data of + * whatever id the request body carried. */ +var_dump(array_key_exists('_SESSION', $GLOBALS)); +var_dump(session_status() === PHP_SESSION_NONE); + +echo "--- record after the update:\n"; +$after = file_get_contents($file); +var_dump(substr($after, 0, strlen($record)) === $record); +var_dump(substr($after, strlen($record), strlen('upload_progress_key|'))); + +echo "--- session_start():\n"; +session_start(); +var_dump(session_id()); +var_dump($_SESSION['w']->a, $_SESSION['u']->a, $_SESSION['c']->x); +var_dump($_SESSION['e'][0] === Suit::Hearts, $_SESSION['e'][1] === Suit::Hearts); +var_dump($_SESSION['m']); +var_dump(isset($_SESSION['upload_progress_key']['bytes_processed'])); +session_destroy(); +PHP); + +$boundary = '---------------------------20896060251896012921717172737'; +$body = "--$boundary\r\n" + . "Content-Disposition: form-data; name=\"PHPSESSID\"\r\n\r\n$sid\r\n" + . "--$boundary\r\n" + . "Content-Disposition: form-data; name=\"PHP_SESSION_UPLOAD_PROGRESS\"\r\n\r\nkey\r\n" + . "--$boundary\r\n" + . "Content-Disposition: form-data; name=\"file1\"; filename=\"file1.txt\"\r\n\r\n1\r\n" + . "--$boundary--\r\n"; + +$ini = [ + 'error_reporting' => 'E_ALL&~E_DEPRECATED', + 'file_uploads' => '1', + 'upload_max_filesize' => '1024', + 'session.save_path' => $dir, + 'session.name' => 'PHPSESSID', + 'session.use_strict_mode' => '0', + 'session.use_cookies' => '0', + 'session.use_only_cookies' => '0', + 'session.cache_limiter' => '', + 'session.save_handler' => 'files', + 'session.serialize_handler' => 'php', + 'session.upload_progress.enabled' => '1', + 'session.upload_progress.cleanup' => '0', + 'session.upload_progress.prefix' => 'upload_progress_', + 'session.upload_progress.name' => 'PHP_SESSION_UPLOAD_PROGRESS', + 'session.upload_progress.freq' => '1%', + 'session.upload_progress.min_freq' => '0.000000001', +]; + +/* php-cgi is started with -n, so a shared session module has to be named again. */ +$extension_dir = ini_get('extension_dir'); +foreach (['session.' . PHP_SHLIB_SUFFIX, 'php_session.' . PHP_SHLIB_SUFFIX] as $module) { + if ($extension_dir !== false && file_exists("$extension_dir/$module")) { + $ini['extension_dir'] = $extension_dir; + $ini['extension'] = $module; + break; + } +} + +$cmd = [getenv('TEST_PHP_CGI_EXECUTABLE'), '-n', '-q']; +foreach ($ini as $name => $value) { + $cmd[] = '-d'; + $cmd[] = "$name=$value"; +} +$cmd[] = '-f'; +$cmd[] = $worker; + +$env = getenv(); +$env['REDIRECT_STATUS'] = '1'; +$env['REQUEST_METHOD'] = 'POST'; +$env['CONTENT_TYPE'] = "multipart/form-data; boundary=$boundary"; +$env['CONTENT_LENGTH'] = (string) strlen($body); +$env['SCRIPT_FILENAME'] = $worker; +$env['PATH_TRANSLATED'] = $worker; +$env['QUERY_STRING'] = ''; +$env['TEST_SESSION_RECORD'] = $record; +$env['TEST_SESSION_FILE'] = $file; + +$pipes = []; +$proc = proc_open( + $cmd, + [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes, + $dir, + $env +); +fwrite($pipes[0], $body); +fclose($pipes[0]); +$out = stream_get_contents($pipes[1]); +$err = stream_get_contents($pipes[2]); +fclose($pipes[1]); +fclose($pipes[2]); +proc_close($proc); + +echo $out; +if ($err !== '') { + echo "--- stderr:\n$err"; +} + +?> +--CLEAN-- + +--EXPECTF-- +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + +bool(false) +bool(true) +--- record after the update: +bool(true) +string(20) "upload_progress_key|" +--- session_start(): +autoload(Missing) +W::__wakeup +U::__unserialize +string(17) "rfc1867nousercode" +int(1) +int(2) +string(7) "payload" +bool(true) +bool(true) +object(__PHP_Incomplete_Class)#%d (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(7) "Missing" + ["x"]=> + int(3) +} +bool(true) diff -Nru php8.4-8.4.26/ext/session/tests/rfc1867_sid_invalid.phpt php8.4-8.4.27/ext/session/tests/rfc1867_sid_invalid.phpt --- php8.4-8.4.26/ext/session/tests/rfc1867_sid_invalid.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/rfc1867_sid_invalid.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -43,7 +43,7 @@ var_dump(session_id()); var_dump(basename(__FILE__) == $_POST[ini_get("session.upload_progress.name")]); var_dump($_FILES); -var_dump($_SESSION["upload_progress_" . basename(__FILE__)]); +var_dump($_SESSION); session_destroy(); ?> --CLEAN-- @@ -55,13 +55,9 @@ Warning: PHP Request Startup: Failed to read session data: files (path: ) in Unknown on line 0 -Warning: PHP Request Startup: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0 - Warning: PHP Request Startup: Session ID is too long or contains illegal characters. Only the A-Z, a-z, 0-9, "-", and "," characters are allowed in Unknown on line 0 Warning: PHP Request Startup: Failed to read session data: files (path: ) in Unknown on line 0 - -Warning: PHP Request Startup: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0 string(%d) "" bool(true) array(2) { @@ -96,50 +92,4 @@ int(1) } } -array(5) { - ["start_time"]=> - int(%d) - ["content_length"]=> - int(469) - ["bytes_processed"]=> - int(469) - ["done"]=> - bool(true) - ["files"]=> - array(2) { - [0]=> - array(7) { - ["field_name"]=> - string(5) "file1" - ["name"]=> - string(9) "file1.txt" - ["tmp_name"]=> - string(%d) "%s" - ["error"]=> - int(0) - ["done"]=> - bool(true) - ["start_time"]=> - int(%d) - ["bytes_processed"]=> - int(1) - } - [1]=> - array(7) { - ["field_name"]=> - string(5) "file2" - ["name"]=> - string(9) "file2.txt" - ["tmp_name"]=> - string(%d) "%s" - ["error"]=> - int(0) - ["done"]=> - bool(true) - ["start_time"]=> - int(%d) - ["bytes_processed"]=> - int(1) - } - } -} +NULL diff -Nru php8.4-8.4.26/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt php8.4-8.4.27/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt --- php8.4-8.4.26/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/user_session_module/session_create_id_create_sid_throws.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -36,14 +36,13 @@ session_create_id(); } catch (Throwable $e) { echo $e::class, ": ", $e->getMessage(), PHP_EOL; - $previous = $e->getPrevious(); - echo $previous::class, ": ", $previous->getMessage(), PHP_EOL; + var_dump($e->getPrevious()); } var_dump(session_status() === PHP_SESSION_ACTIVE); ?> --EXPECT-- -Error: Session id must be a string Exception: create_sid failed +NULL bool(true) diff -Nru php8.4-8.4.26/ext/session/tests/user_session_module/session_create_sid_return_destructor_throws.phpt php8.4-8.4.27/ext/session/tests/user_session_module/session_create_sid_return_destructor_throws.phpt --- php8.4-8.4.26/ext/session/tests/user_session_module/session_create_sid_return_destructor_throws.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/user_session_module/session_create_sid_return_destructor_throws.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +Exceptions from destruction of an invalid create_sid() return value are preserved +--EXTENSIONS-- +session +--FILE-- +getMessage(), PHP_EOL; +} +?> +--EXPECT-- +RuntimeException: destructor failed diff -Nru php8.4-8.4.26/ext/session/tests/user_session_module/session_regenerate_id_create_sid_throws.phpt php8.4-8.4.27/ext/session/tests/user_session_module/session_regenerate_id_create_sid_throws.phpt --- php8.4-8.4.26/ext/session/tests/user_session_module/session_regenerate_id_create_sid_throws.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/user_session_module/session_regenerate_id_create_sid_throws.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,57 @@ +--TEST-- +session_regenerate_id() preserves exceptions from create_sid(), including collision retries +--EXTENSIONS-- +session +--INI-- +session.use_cookies=0 +session.cache_limiter= +session.use_strict_mode=1 +session.gc_probability=0 +--FILE-- +calls === $this->throwAt) { + throw new RuntimeException('create_sid failed'); + } + return 'session' . $this->calls; + } +} + +foreach ([2, 3] as $throwAt) { + $handler = new FailingHandler(); + $handler->throwAt = $throwAt; + session_set_save_handler($handler); + session_id(''); + session_start(); + + try { + session_regenerate_id(); + } catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + echo 'create_sid calls: ', $handler->calls, PHP_EOL; +} +?> +--EXPECT-- +RuntimeException: create_sid failed +create_sid calls: 2 +RuntimeException: create_sid failed +create_sid calls: 3 diff -Nru php8.4-8.4.26/ext/session/tests/user_session_module/session_start_create_sid_throws.phpt php8.4-8.4.27/ext/session/tests/user_session_module/session_start_create_sid_throws.phpt --- php8.4-8.4.26/ext/session/tests/user_session_module/session_start_create_sid_throws.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/user_session_module/session_start_create_sid_throws.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,64 @@ +--TEST-- +session_start() preserves exceptions from create_sid() +--EXTENSIONS-- +session +--INI-- +session.use_cookies=0 +session.cache_limiter= +session.gc_probability=0 +--FILE-- +invalidReturn) { + return []; + } + throw new RuntimeException('create_sid failed'); + } + + public function validateId(string $id): bool + { + return false; + } +} + +$handler = new FailingHandler(); +session_set_save_handler($handler); + +foreach ([false, true] as $strict) { + foreach ([false, true] as $invalidReturn) { + echo 'strict mode: ', (int) $strict, ', invalid return: ', (int) $invalidReturn, PHP_EOL; + $handler->invalidReturn = $invalidReturn; + session_id($strict ? 'rejected' : ''); + try { + session_start(['use_strict_mode' => $strict]); + } catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + } +} +?> +--EXPECT-- +strict mode: 0, invalid return: 0 +RuntimeException: create_sid failed +strict mode: 0, invalid return: 1 +TypeError: FailingHandler::create_sid(): Return value must be of type string, array returned +strict mode: 1, invalid return: 0 +RuntimeException: create_sid failed +strict mode: 1, invalid return: 1 +TypeError: FailingHandler::create_sid(): Return value must be of type string, array returned diff -Nru php8.4-8.4.26/ext/session/tests/user_session_module/session_start_strict_recreate_create_sid_fails.phpt php8.4-8.4.27/ext/session/tests/user_session_module/session_start_strict_recreate_create_sid_fails.phpt --- php8.4-8.4.26/ext/session/tests/user_session_module/session_start_strict_recreate_create_sid_fails.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/session/tests/user_session_module/session_start_strict_recreate_create_sid_fails.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,49 @@ +--TEST-- +session_start() strict mode re-creation must abort when create_sid fails +--INI-- +session.use_trans_sid=1 +session.use_only_cookies=0 +error_reporting=E_ALL & ~E_DEPRECATED +--EXTENSIONS-- +session +--FILE-- + true])); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} + +var_dump(session_status() === PHP_SESSION_ACTIVE); +var_dump(defined('SID')); + +?> +--EXPECT-- +RuntimeException: create_sid failed +bool(false) +bool(false) diff -Nru php8.4-8.4.26/ext/shmop/shmop.c php8.4-8.4.27/ext/shmop/shmop.c --- php8.4-8.4.26/ext/shmop/shmop.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/shmop/shmop.c 2026-10-19 14:38:59.000000000 +0000 @@ -245,7 +245,10 @@ startaddr = shmop->addr + start; zend_long bytes = count ? count : shmop->size - start; - return_string = zend_string_init(startaddr, bytes, 0); + return_string = zend_string_finit(startaddr, bytes, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!return_string)) { + RETURN_OOM(); + } RETURN_NEW_STR(return_string); } diff -Nru php8.4-8.4.26/ext/shmop/tests/tsrm_shmat.phpt php8.4-8.4.27/ext/shmop/tests/tsrm_shmat.phpt --- php8.4-8.4.26/ext/shmop/tests/tsrm_shmat.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/shmop/tests/tsrm_shmat.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +TSRM Windows shmop keeps the payload within its mapping +--EXTENSIONS-- +shmop +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(true) +int(65472) +int(65472) +string(1) "z" +bool(true) diff -Nru php8.4-8.4.26/ext/simplexml/simplexml.c php8.4-8.4.27/ext/simplexml/simplexml.c --- php8.4-8.4.26/ext/simplexml/simplexml.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/simplexml/simplexml.c 2026-10-19 14:38:59.000000000 +0000 @@ -929,7 +929,7 @@ zend_string *res; if (tmp) { - res = zend_string_init((char*)tmp, strlen((char *)tmp), 0); + res = zend_string_finit((char*)tmp, strlen((char *)tmp), /* persistent */ false, /* fallible */ true); xmlFree(tmp); } else { res = ZSTR_EMPTY_ALLOC(); @@ -940,17 +940,16 @@ /* }}} */ /* {{{ get_base_node_value() */ -static void get_base_node_value(php_sxe_object *sxe_ref, xmlNodePtr node, zval *value, zend_string *nsprefix, int isprefix) +static bool get_base_node_value(php_sxe_object *sxe_ref, xmlNodePtr node, zval *value, zend_string *nsprefix, int isprefix) { php_sxe_object *subnode; - xmlChar *contents; if (node->children && node->children->type == XML_TEXT_NODE && !xmlIsBlankNode(node->children)) { - contents = xmlNodeListGetString(node->doc, node->children, 1); - if (contents) { - ZVAL_STRING(value, (char *)contents); - xmlFree(contents); + zend_string *str = sxe_xmlNodeListGetString(node->doc, node->children, 1); + if (UNEXPECTED(!str)) { + return false; } + ZVAL_STR(value, str); } else { subnode = php_sxe_object_new(sxe_ref->zo.ce, sxe_ref->fptr_count); subnode->document = sxe_ref->document; @@ -964,6 +963,7 @@ ZVAL_OBJ(value, &subnode->zo); /*zval_add_ref(value);*/ } + return true; } /* }}} */ @@ -1111,13 +1111,20 @@ test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; while (attr) { if ((!test || xmlStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr)attr, sxe->iter.nsprefix, sxe->iter.isprefix)) { - ZVAL_STR(&value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1)); + zend_string *str = sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1); + if (UNEXPECTED(!str)) { + goto oom; + } + ZVAL_STR(&value, str); namelen = xmlStrlen(attr->name); if (Z_ISUNDEF(zattr)) { array_init(&zattr); sxe_properties_add(rv, "@attributes", sizeof("@attributes") - 1, &zattr); } add_assoc_zval_ex(&zattr, (char*)attr->name, namelen, &value); + if (ZEND_HAS_OOM()) { + goto oom; + } } attr = attr->next; } @@ -1129,7 +1136,11 @@ if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { if (node->type == XML_ATTRIBUTE_NODE) { - ZVAL_STR(&value, sxe_xmlNodeListGetString(node->doc, node->children, 1)); + zend_string *str = sxe_xmlNodeListGetString(node->doc, node->children, 1); + if (UNEXPECTED(!str)) { + goto oom; + } + ZVAL_STR(&value, str); zend_hash_next_index_insert(rv, &value); node = NULL; } else if (sxe->iter.type != SXE_ITER_CHILD) { @@ -1149,8 +1160,15 @@ const xmlChar *cur = node->content; if (*cur != 0) { - ZVAL_STR(&value, sxe_xmlNodeListGetString(node->doc, node, 1)); + zend_string *str = sxe_xmlNodeListGetString(node->doc, node, 1); + if (UNEXPECTED(!str)) { + goto oom; + } + ZVAL_STR(&value, str); zend_hash_next_index_insert(rv, &value); + if (ZEND_HAS_OOM()) { + goto oom; + } } goto next_iter; } @@ -1167,13 +1185,18 @@ namelen = xmlStrlen(node->name); } - get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix); + if (UNEXPECTED(!get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix))) { + goto oom; + } if ( use_iter ) { zend_hash_next_index_insert(rv, &value); } else { sxe_properties_add(rv, name, namelen, &value); } + if (ZEND_HAS_OOM()) { + goto oom; + } next_iter: if (UNEXPECTED(node->type == XML_ENTITY_DECL)) { /* Entity decls are linked together via the next pointer. @@ -1190,6 +1213,10 @@ } return rv; + +oom: + zend_hash_clean(rv); + return rv; } /* }}} */ @@ -1307,7 +1334,9 @@ if (result != NULL) { array_init_size(return_value, result->nodeNr); - zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); + if (zend_hash_real_finit_packed(Z_ARRVAL_P(return_value), true) != SUCCESS) { + goto oom; + } for (i = 0; i < result->nodeNr; ++i) { nodeptr = result->nodeTab[i]; @@ -1326,6 +1355,9 @@ } add_next_index_zval(return_value, &value); + if (ZEND_HAS_OOM()) { + goto oom; + } } } } else { @@ -1333,6 +1365,13 @@ } xmlXPathFreeObject(retval); + return; + +oom: + xmlXPathFreeObject(retval); + zval_ptr_dtor(return_value); + ZVAL_NULL(return_value); + RETURN_OOM(); } /* }}} */ @@ -1636,7 +1675,11 @@ node = php_sxe_get_first_node_non_destructive(sxe, node); if (node) { namelen = xmlStrlen(node->name); - RETURN_STRINGL_FAST((const char *) node->name, namelen); + zend_string *str = zend_string_finit_fast((const char *)node->name, namelen, /* fallible */ true); + if (!str) { + RETURN_OOM(); + } + RETURN_STR(str); } else { RETURN_EMPTY_STRING(); } @@ -1818,7 +1861,9 @@ static zend_result cast_object(zval *object, int type, char *contents) { if (contents) { - ZVAL_STRINGL(object, contents, strlen(contents)); + if (UNEXPECTED(!ZVAL_FSTRINGL(object, contents, strlen(contents)))) { + return FAILURE; + } } else { ZVAL_NULL(object); } @@ -1916,9 +1961,10 @@ RETURN_THROWS(); } - zend_result rv = sxe_object_cast_ex(Z_OBJ_P(ZEND_THIS), return_value, IS_STRING); - ZEND_IGNORE_VALUE(rv); - ZEND_ASSERT(rv == SUCCESS); + if (sxe_object_cast_ex(Z_OBJ_P(ZEND_THIS), return_value, IS_STRING) != SUCCESS) { + zval_ptr_dtor(return_value); + RETURN_EMPTY_STRING(); + } } /* }}} */ @@ -2036,7 +2082,7 @@ } curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->node)->node; - RETURN_STRINGL((char*)curnode->name, xmlStrlen(curnode->name)); + RETURN_FSTRINGL((const char *)curnode->name, xmlStrlen(curnode->name)); } /* }}} */ diff -Nru php8.4-8.4.26/ext/simplexml/tests/oom_array_cast.phpt php8.4-8.4.27/ext/simplexml/tests/oom_array_cast.phpt --- php8.4-8.4.26/ext/simplexml/tests/oom_array_cast.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/simplexml/tests/oom_array_cast.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +Array cast of large tree doesn't reach hard memory limit +--EXTENSIONS-- +simplexml +--INI-- +memory_limit=64M +--FILE-- +' . str_repeat('', 750000) . ''); + +$xml = simplexml_load_file($path); +$result = (array) $xml; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/simplexml/tests/oom_json_encode.phpt php8.4-8.4.27/ext/simplexml/tests/oom_json_encode.phpt --- php8.4-8.4.26/ext/simplexml/tests/oom_json_encode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/simplexml/tests/oom_json_encode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +json_encode() of large tree doesn't reach hard memory limit +--EXTENSIONS-- +simplexml +--INI-- +memory_limit=64M +--FILE-- +' . str_repeat('', 750000) . ''); + +$xml = simplexml_load_file($path); +$result = json_encode($xml); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/simplexml/tests/oom_tostring.phpt php8.4-8.4.27/ext/simplexml/tests/oom_tostring.phpt --- php8.4-8.4.26/ext/simplexml/tests/oom_tostring.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/simplexml/tests/oom_tostring.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +SimpleXMLElement::__toString() OOM +--EXTENSIONS-- +simplexml +--INI-- +memory_limit=16M +--FILE-- +' . str_repeat('x', 5500000) . '', 'SimpleXMLElement', LIBXML_PARSEHUGE); +$pad = str_repeat('p', 11500000); +$value = $xml->__toString(); +echo strlen($value), "\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in %s on line 4 diff -Nru php8.4-8.4.26/ext/simplexml/tests/oom_xpath.phpt php8.4-8.4.27/ext/simplexml/tests/oom_xpath.phpt --- php8.4-8.4.26/ext/simplexml/tests/oom_xpath.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/simplexml/tests/oom_xpath.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +SimpleXMLElement::xpath() with large result set doesn't reach hard memory limit +--EXTENSIONS-- +simplexml +--INI-- +memory_limit=64M +--FILE-- +' . str_repeat('', 750000) . ''); + +$xml = simplexml_load_file($path); +$result = $xml->xpath("//a"); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/simplexml/tests/reconstruct_with_retained_child.phpt php8.4-8.4.27/ext/simplexml/tests/reconstruct_with_retained_child.phpt --- php8.4-8.4.26/ext/simplexml/tests/reconstruct_with_retained_child.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/simplexml/tests/reconstruct_with_retained_child.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +SimpleXMLElement reconstruction with a retained child +--EXTENSIONS-- +simplexml +--FILE-- +old
'); +$child = $xml->child; + +$xml->__construct('new'); + +var_dump((string) $xml->new); +var_dump((string) $child); +var_dump($child->asXML()); +?> +--EXPECT-- +string(3) "new" +string(3) "old" +string(18) "old" diff -Nru php8.4-8.4.26/ext/snmp/tests/gh23453.phpt php8.4-8.4.27/ext/snmp/tests/gh23453.phpt --- php8.4-8.4.26/ext/snmp/tests/gh23453.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/snmp/tests/gh23453.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -1,5 +1,7 @@ --TEST-- GH-23453 (SNMP::setSecurity() frees a non-malloced address with a context engine ID longer than 32 bytes) +--CREDITS-- +TristanInSec --EXTENSIONS-- snmp --FILE-- diff -Nru php8.4-8.4.26/ext/soap/php_encoding.c php8.4-8.4.27/ext/soap/php_encoding.c --- php8.4-8.4.26/ext/soap/php_encoding.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/soap/php_encoding.c 2026-10-19 14:38:59.000000000 +0000 @@ -1001,7 +1001,7 @@ ZVAL_STR(&tmp, get_serialization_string_from_zval(data)); data = &tmp; } - str = (unsigned char *) safe_emalloc(Z_STRLEN_P(data) * 2, sizeof(char), 1); + str = (unsigned char *) safe_emalloc(Z_STRLEN_P(data), 2, 1); for (i = j = 0; i < Z_STRLEN_P(data); i++) { str[j++] = hexconvtab[((unsigned char)Z_STRVAL_P(data)[i]) >> 4]; @@ -2317,13 +2317,15 @@ if (EG(exception)) { goto iterator_done; } - array_set_zval_key(Z_ARRVAL(array_copy), &key, val); - zval_ptr_dtor(val); + zend_result status = array_set_zval_key(Z_ARRVAL(array_copy), &key, val); zval_ptr_dtor(&key); + if (status == FAILURE) { + goto iterator_done; + } } else { + Z_TRY_ADDREF_P(val); add_next_index_zval(&array_copy, val); } - Z_TRY_ADDREF_P(val); iter->funcs->move_forward(iter); if (EG(exception)) { @@ -2707,6 +2709,11 @@ ar = zend_hash_index_update(Z_ARRVAL_P(ar), pos[i], &tmpAr); } i++; + if (ZEND_HAS_OOM()) { + zval_ptr_dtor(ret); + ZVAL_NULL(ret); + goto ret; + } } zend_hash_index_update(Z_ARRVAL_P(ar), pos[i], &tmpVal); @@ -2732,6 +2739,8 @@ } trav = trav->next; } + +ret:; efree(dims); efree(pos); return ret; diff -Nru php8.4-8.4.26/ext/soap/php_http.c php8.4-8.4.27/ext/soap/php_http.c --- php8.4-8.4.26/ext/soap/php_http.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/soap/php_http.c 2026-10-19 14:38:59.000000000 +0000 @@ -1498,9 +1498,17 @@ } if (http_buf) { - http_buf = zend_string_safe_realloc(http_buf, 1, http_buf_size, buf_size, false); + zend_string *new_http_buf = zend_string_safe_frealloc(http_buf, 1, http_buf_size, buf_size, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!new_http_buf)) { + zend_string_release_ex(http_buf, false); + return NULL; + } + http_buf = new_http_buf; } else { - http_buf = zend_string_alloc(buf_size, 0); + http_buf = zend_string_falloc(buf_size, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!http_buf)) { + return NULL; + } } while (len_size < buf_size) { @@ -1560,7 +1568,10 @@ if (header_length < 0 || header_length >= ZSTR_MAX_LEN) { return NULL; } - http_buf = zend_string_alloc(header_length, 0); + http_buf = zend_string_falloc(header_length, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!http_buf)) { + return NULL; + } while (http_buf_size < header_length) { ssize_t len_read = php_stream_read(stream, http_buf->val + http_buf_size, header_length - http_buf_size); if (len_read <= 0) { @@ -1576,7 +1587,12 @@ zend_string_efree(http_buf); return NULL; } - http_buf = zend_string_realloc(http_buf, http_buf_size + 4096, false); + zend_string *new_http_buf = zend_string_safe_frealloc(http_buf, 1, http_buf_size, 4096, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!new_http_buf)) { + zend_string_release_ex(http_buf, false); + return NULL; + } + http_buf = new_http_buf; } else { http_buf = zend_string_alloc(4096, 0); } @@ -1609,6 +1625,10 @@ /* add header to collection */ smart_str_appends(&tmp_response, headerbuf); + + if (ZEND_HAS_OOM()) { + break; + } } smart_str_free(&tmp_response); diff -Nru php8.4-8.4.26/ext/soap/php_sdl.c php8.4-8.4.27/ext/soap/php_sdl.c --- php8.4-8.4.26/ext/soap/php_sdl.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/soap/php_sdl.c 2026-10-19 14:38:59.000000000 +0000 @@ -364,7 +364,12 @@ xmlAttrPtr tmp = get_attribute(trav->properties, "location"); if (tmp) { xmlChar *uri = schema_location_construct_uri(tmp); - load_wsdl_ex(this_ptr, (char*)uri, ctx, 1); + zend_try { + load_wsdl_ex(this_ptr, (char*)uri, ctx, 1); + } zend_catch { + xmlFree(uri); + zend_bailout(); + } zend_end_try(); xmlFree(uri); } diff -Nru php8.4-8.4.26/ext/soap/soap.c php8.4-8.4.27/ext/soap/soap.c --- php8.4-8.4.26/ext/soap/soap.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/soap/soap.c 2026-10-19 14:38:59.000000000 +0000 @@ -1842,7 +1842,10 @@ xmlFreeDoc(doc_return); xmlFree(buf); - zend_clear_exception(); + + if (!ZEND_HAS_OOM()) { + zend_clear_exception(); + } } /* }}} */ @@ -1874,7 +1877,9 @@ instanceof_function(Z_OBJCE(SOAP_GLOBAL(error_object)), soap_class_entry)) { bool use_exceptions = Z_TYPE_P(Z_CLIENT_EXCEPTIONS_P(&SOAP_GLOBAL(error_object))) != IS_FALSE; - if ((error_num & E_FATAL_ERRORS) && use_exceptions) { + if (ZEND_HAS_OOM()) { + old_error_handler(error_num, error_filename, error_lineno, message); + } else if ((error_num & E_FATAL_ERRORS) && use_exceptions) { zval fault; char *code = SOAP_GLOBAL(error_code); if (code == NULL) { @@ -3079,7 +3084,12 @@ strcmp((char *)params->name, function->functionName) == 0) { num_of_params = 0; } else if (num_of_params > 0) { - tmp_parameters = safe_emalloc(num_of_params, sizeof(zval), 0); + tmp_parameters = safe_femalloc(num_of_params, sizeof(zval), 0, /* fallible */ true); + if (!tmp_parameters) { + *parameters = NULL; + *num_params = 0; + return; + } trav = params; while (trav != 0 && cur_param < num_of_params) { @@ -3097,6 +3107,15 @@ } master_to_zval(&tmp_parameters[cur_param], enc, trav); cur_param++; + if (ZEND_HAS_OOM()) { + for (int i = 0; i < cur_param; i++) { + zval_ptr_dtor(&tmp_parameters[i]); + } + efree(tmp_parameters); + *parameters = NULL; + *num_params = 0; + return; + } } trav = trav->next; } @@ -3387,6 +3406,10 @@ } last = h; } + if (ZEND_HAS_OOM()) { + encode_finish(); + return NULL; + } ignore_header: trav = trav->next; } @@ -4177,7 +4200,7 @@ } xmlParam = master_to_xml(enc, val, style, parent); zval_ptr_dtor(&defval); - if (xmlParam != NULL) { + if (xmlParam != NULL) { if (xmlParam->name == NULL || strcmp((char*)xmlParam->name, "BOGUS") == 0) { xmlNodeSetName(xmlParam, BAD_CAST(paramName)); } diff -Nru php8.4-8.4.26/ext/soap/tests/GHSA-rgrp-mwpx-f6rm-href-chain.phpt php8.4-8.4.27/ext/soap/tests/GHSA-rgrp-mwpx-f6rm-href-chain.phpt --- php8.4-8.4.26/ext/soap/tests/GHSA-rgrp-mwpx-f6rm-href-chain.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/GHSA-rgrp-mwpx-f6rm-href-chain.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -2,6 +2,12 @@ GHSA-rgrp-mwpx-f6rm: Stack overflow on a chain of href references --EXTENSIONS-- soap +--SKIPIF-- + --FILE-- --FILE-- ["pipe", "w"], 2 => ["pipe", "w"]], $pipes); + $proc = proc_open($cmd, [1 => ["pipe", "w"], 2 => ["pipe", "w"]], $pipes); echo stream_get_contents($pipes[1]); fclose($pipes[1]); proc_close($proc); diff -Nru php8.4-8.4.26/ext/soap/tests/bugs/gh22895.phpt php8.4-8.4.27/ext/soap/tests/bugs/gh22895.phpt --- php8.4-8.4.26/ext/soap/tests/bugs/gh22895.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/bugs/gh22895.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,96 @@ +--TEST-- +GH-22895 (Heap use-after-free while encoding a Traversable with an illegal key) +--CREDITS-- +Amorsec +--EXTENSIONS-- +soap +--FILE-- +i++; + } + + public function rewind(): void + { + $this->i = 0; + } + + public function valid(): bool + { + return $this->i < 2; + } +} + +$client = new LocalSoapClient(null, [ + 'location' => 'http://127.0.0.1/', + 'uri' => 'urn:audit', + 'trace' => 1, +]); + +$multiple = new MultipleIterator(); +$multiple->attachIterator(new ArrayIterator([0])); + +foreach ([$multiple, new ArrayKeyIterator()] as $iterator) { + try { + $client->__soapCall('audit', [new SoapVar($iterator, SOAP_ENC_ARRAY)]); + } catch (TypeError $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } +} + +function gen($key) { + yield $key => new stdClass(); + yield 2 => new stdClass(); +} + +set_error_handler(function ($errno, $errstr) { + throw new Exception($errstr); +}); +foreach ([1.5, STDIN] as $key) { + try { + $client->__soapCall('audit', [new SoapVar(gen($key), SOAP_ENC_ARRAY)]); + } catch (Exception $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } +} +restore_error_handler(); + +/* A key the encoder can use must still be serialized, without leaking. */ +$client->__soapCall('audit', [new SoapVar(new ArrayIterator(['a' => 1]), SOAP_ENC_ARRAY)]); +echo $client->__getLastRequest(); +?> +--EXPECTF-- +TypeError: Cannot access offset of type array on array +TypeError: Cannot access offset of type array on array +Exception: Implicit conversion from float 1.5 to int loses precision +Exception: Resource ID#%d used as offset, casting to integer (%d) + +1 diff -Nru php8.4-8.4.26/ext/soap/tests/load_wsdl_ex-failure-leak.phpt php8.4-8.4.27/ext/soap/tests/load_wsdl_ex-failure-leak.phpt --- php8.4-8.4.26/ext/soap/tests/load_wsdl_ex-failure-leak.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/load_wsdl_ex-failure-leak.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +load_wsdl_ex() leaks the import location if imported WSDL fails to load +--EXTENSIONS-- +soap +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- +getMessage() . "\n"; +} + +?> +--EXPECTF-- +SoapFault: SOAP-ERROR: Parsing WSDL: Couldn't load from '%sload_wsdl_ex-failure-leak-missing.wsdl' : %s diff -Nru php8.4-8.4.26/ext/soap/tests/load_wsdl_ex-failure-leak.wsdl php8.4-8.4.27/ext/soap/tests/load_wsdl_ex-failure-leak.wsdl --- php8.4-8.4.26/ext/soap/tests/load_wsdl_ex-failure-leak.wsdl 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/load_wsdl_ex-failure-leak.wsdl 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,7 @@ + + + + diff -Nru php8.4-8.4.26/ext/soap/tests/oom_http_server.inc php8.4-8.4.27/ext/soap/tests/oom_http_server.inc --- php8.4-8.4.26/ext/soap/tests/oom_http_server.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_http_server.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,69 @@ + 0 && !feof($conn)) { + $chunk = fread($conn, $length); + if ($chunk === false || $chunk === '') { + break; + } + $length -= strlen($chunk); + } + fwrite($conn, $argv[1]); + /* Optionally keep appending $argv[2] so a test can make the server + * produce far more than the client's memory limit without the parent + * having to hold it, or pass it on the command line. */ + for ($i = 0; $i < (int) $argv[3]; $i++) { + if (@fwrite($conn, $argv[2]) === false) { + break; + } + } + fflush($conn); + fclose($conn); + PHP; + + $proc = proc_open( + [PHP_BINARY, '-n', '-d', 'memory_limit=-1', '-r', $code, $response, $repeat, (string) $times], + [1 => ['pipe', 'w'], 2 => ['pipe', 'w']], + $pipes, + ); + if (!is_resource($proc)) { + die('could not start the helper server'); + } + $address = trim((string) fgets($pipes[1])); + if ($address === '') { + die('helper server did not report an address: ' . stream_get_contents($pipes[2])); + } + + return ['proc' => $proc, 'uri' => 'http://' . $address]; +} + +function oom_soap_http_server_skipif(): void +{ + if (!function_exists('proc_open')) { + die('skip proc_open() not available'); + } + $server = @stream_socket_server('tcp://127.0.0.1:0'); + if (!$server) { + die('skip stream_socket_server() failed'); + } + fclose($server); +} diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soap_response.inc php8.4-8.4.27/ext/soap/tests/oom_soap_response.inc --- php8.4-8.4.26/ext/soap/tests/oom_soap_response.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soap_response.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,33 @@ +', $items); + + return << + + +

$items

+
+
+ XML; +} + +/* A SoapClient whose transport is replaced by a canned response, so that the + * reproducer exercises only the response decoder. */ +class OomSoapClient extends SoapClient +{ + public string $response = ''; + + public function __doRequest($request, $location, $action, $version, $oneWay = false): ?string + { + return $this->response; + } +} diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapclient_call.phpt php8.4-8.4.27/ext/soap/tests/oom_soapclient_call.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapclient_call.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapclient_call.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +SoapClient::__call() doesn't reach hard limit +--EXTENSIONS-- +soap +--INI-- +memory_limit=64M +--FILE-- + 'http://test-uri/', 'uri' => 'http://test-uri/']); +$client->response = oom_soap_response(1000, 1000); +$client->f(); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapclient_dorequest_chunked.phpt php8.4-8.4.27/ext/soap/tests/oom_soapclient_dorequest_chunked.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapclient_dorequest_chunked.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapclient_dorequest_chunked.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +SoapClient::__doRequest() doesn't reach hard limit through a chunk size +--EXTENSIONS-- +soap +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + $server['uri'], 'uri' => 'http://test-uri/']); +$client->__doRequest('', $server['uri'], 'f', SOAP_1_1); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapclient_dorequest_close.phpt php8.4-8.4.27/ext/soap/tests/oom_soapclient_dorequest_close.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapclient_dorequest_close.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapclient_dorequest_close.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +SoapClient::__doRequest() doesn't reach hard limit through a connection-close body +--EXTENSIONS-- +soap +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + $server['uri'], 'uri' => 'http://test-uri/']); +$client->__doRequest('', $server['uri'], 'f', SOAP_1_1); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapclient_dorequest_content_length.phpt php8.4-8.4.27/ext/soap/tests/oom_soapclient_dorequest_content_length.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapclient_dorequest_content_length.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapclient_dorequest_content_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +SoapClient::__doRequest() doesn't reach hard limit through Content-Length +--EXTENSIONS-- +soap +--SKIPIF-- + +--INI-- +memory_limit=64M +--FILE-- + $server['uri'], 'uri' => 'http://test-uri/']); +$client->__doRequest('', $server['uri'], 'f', SOAP_1_1); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapclient_response_headers.phpt php8.4-8.4.27/ext/soap/tests/oom_soapclient_response_headers.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapclient_response_headers.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapclient_response_headers.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +SoapClient::__doRequest() doesn't reach hard limit through response headers +--EXTENSIONS-- +soap +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + $server['uri'], 'uri' => 'http://test-uri/']); +$client->__doRequest('', $server['uri'], 'f', SOAP_1_1); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapclient_soapcall.phpt php8.4-8.4.27/ext/soap/tests/oom_soapclient_soapcall.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapclient_soapcall.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapclient_soapcall.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +SoapClient::__soapCall() doesn't reach hard limit +--EXTENSIONS-- +soap +--INI-- +memory_limit=64M +--FILE-- + 'http://test-uri/', 'uri' => 'http://test-uri/']); +$client->response = oom_soap_response(1000, 1000); +$client->__soapCall('f', []); +?> +--EXPECTF-- +Fatal error: Allowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapserver_handle_array.phpt php8.4-8.4.27/ext/soap/tests/oom_soapserver_handle_array.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapserver_handle_array.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapserver_handle_array.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +SoapServer::handle() doesn't reach hard limit through a SOAP-ENC array +--EXTENSIONS-- +soap +--INI-- +memory_limit=64M +--FILE-- +', 1000); +$request = << + +

$items

+
+ XML; + +$server = new SoapServer(null, ['uri' => 'http://test-uri/']); +$server->addFunction('f'); +$server->handle($request); +?> +--EXPECTF-- + +SOAP-ENV:ServerAllowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapserver_handle_headers.phpt php8.4-8.4.27/ext/soap/tests/oom_soapserver_handle_headers.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapserver_handle_headers.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapserver_handle_headers.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +SoapServer::handle() doesn't reach hard limit through SOAP headers +--EXTENSIONS-- +soap +--INI-- +memory_limit=64M +--FILE-- +', 20000); +$request = << + + $headers + + + XML; + +$server = new SoapServer(null, ['uri' => 'http://test-uri/']); +$server->addFunction('f'); +$server->handle($request); +?> +--EXPECTF-- + +SOAP-ENV:ServerAllowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) diff -Nru php8.4-8.4.26/ext/soap/tests/oom_soapserver_handle_parameters.phpt php8.4-8.4.27/ext/soap/tests/oom_soapserver_handle_parameters.phpt --- php8.4-8.4.26/ext/soap/tests/oom_soapserver_handle_parameters.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/soap/tests/oom_soapserver_handle_parameters.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +SoapServer::handle() doesn't reach hard limit through request parameters +--EXTENSIONS-- +soap +--INI-- +memory_limit=64M +--FILE-- +

', 400000); +$request = << + + $params + + XML; + +$server = new SoapServer(null, ['uri' => 'http://test-uri/']); +$server->addFunction('f'); +$server->handle($request); +?> +--EXPECTF-- + +SOAP-ENV:ServerAllowed memory size of 67108864 bytes exhausted %S(tried to allocate %d bytes) diff -Nru php8.4-8.4.26/ext/sockets/sockets.c php8.4-8.4.27/ext/sockets/sockets.c --- php8.4-8.4.26/ext/sockets/sockets.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/sockets/sockets.c 2026-10-19 14:38:59.000000000 +0000 @@ -542,7 +542,7 @@ num++; } ZEND_HASH_FOREACH_END(); - return num ? 1 : 0; + return num; } /* }}} */ @@ -593,7 +593,7 @@ struct timeval *tv_p = NULL; fd_set rfds, wfds, efds; PHP_SOCKET max_fd = 0; - int retval, sets = 0; + int retval, max_set_count = 0; zend_long sec, usec = 0; bool sec_is_null = 0; @@ -611,30 +611,39 @@ FD_ZERO(&efds); if (r_array != NULL) { - sets += retval = php_sock_array_to_fd_set(1, r_array, &rfds, &max_fd); + retval = php_sock_array_to_fd_set(1, r_array, &rfds, &max_fd); if (retval == -1) { RETURN_THROWS(); } + if (retval > max_set_count) { + max_set_count = retval; + } } if (w_array != NULL) { - sets += retval = php_sock_array_to_fd_set(2, w_array, &wfds, &max_fd); + retval = php_sock_array_to_fd_set(2, w_array, &wfds, &max_fd); if (retval == -1) { RETURN_THROWS(); } + if (retval > max_set_count) { + max_set_count = retval; + } } if (e_array != NULL) { - sets += retval = php_sock_array_to_fd_set(3, e_array, &efds, &max_fd); + retval = php_sock_array_to_fd_set(3, e_array, &efds, &max_fd); if (retval == -1) { RETURN_THROWS(); } + if (retval > max_set_count) { + max_set_count = retval; + } } - if (!sets) { + if (!max_set_count) { zend_value_error("socket_select(): At least one array argument must be passed"); RETURN_THROWS(); } - if (!PHP_SAFE_MAX_FD(max_fd, 0)) { + if (!PHP_SAFE_MAX_FD(max_fd, max_set_count)) { RETURN_FALSE; } diff -Nru php8.4-8.4.26/ext/sockets/tests/bug63000.phpt php8.4-8.4.27/ext/sockets/tests/bug63000.phpt --- php8.4-8.4.26/ext/sockets/tests/bug63000.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/sockets/tests/bug63000.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -2,6 +2,23 @@ Bug #63000: Multicast on OSX --EXTENSIONS-- sockets +--SKIPIF-- + '224.0.0.251', + 'interface' => 0, +]); +if ($so === false) { + $errno = socket_last_error($socket); + if (in_array($errno, [SOCKET_ENODEV, SOCKET_ENXIO, SOCKET_EADDRNOTAVAIL], true)) { + die('skip no multicast-capable interface: ' . socket_strerror($errno)); + } +} +?> --FILE-- +--FILE-- + 256); + +$read = $sockets; +$write = $except = null; +var_dump(socket_select($read, $write, $except, 0)); + +$write = $sockets; +$read = $except = null; +var_dump(socket_select($read, $write, $except, 0)); + +$except = $sockets; +$read = $write = null; +var_dump(socket_select($read, $write, $except, 0)); + +foreach ($sockets as $socket) { + socket_close($socket); +} +?> +--EXPECTF-- +bool(true) + +Warning: socket_select(): PHP needs to be recompiled with a larger value of FD_SETSIZE.%A +bool(false) + +Warning: socket_select(): PHP needs to be recompiled with a larger value of FD_SETSIZE.%A +bool(false) + +Warning: socket_select(): PHP needs to be recompiled with a larger value of FD_SETSIZE.%A +bool(false) diff -Nru php8.4-8.4.26/ext/spl/spl_fixedarray.c php8.4-8.4.27/ext/spl/spl_fixedarray.c --- php8.4-8.4.26/ext/spl/spl_fixedarray.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/spl/spl_fixedarray.c 2026-10-19 14:38:59.000000000 +0000 @@ -77,6 +77,14 @@ return true; } +/* True while spl_fixedarray_resize() runs. A clear empties the array before + * destroying its elements, so emptiness alone cannot tell "never constructed" + * from "clear in progress"; re-initialising in that window leaks. */ +static bool spl_fixedarray_resize_in_progress(const spl_fixedarray *array) +{ + return array->cached_resize >= 0; +} + static void spl_fixedarray_default_ctor(spl_fixedarray *array) { array->size = 0; @@ -95,22 +103,33 @@ } } -static void spl_fixedarray_init_non_empty_struct(spl_fixedarray *array, zend_long size) +static zend_result spl_fixedarray_init_non_empty_struct(spl_fixedarray *array, zend_long size) { array->size = 0; /* reset size in case ecalloc() fails */ - array->elements = size ? safe_emalloc(size, sizeof(zval), 0) : NULL; - array->size = size; array->cached_resize = -1; + if (size) { + array->elements = safe_femalloc(size, sizeof(zval), 0, /* fallible */ true); + if (UNEXPECTED(!array->elements)) { + return FAILURE; + } + array->size = size; + } else { + array->elements = NULL; + } + return SUCCESS; } -static void spl_fixedarray_init(spl_fixedarray *array, zend_long size) +static zend_result spl_fixedarray_init(spl_fixedarray *array, zend_long size) { if (size > 0) { - spl_fixedarray_init_non_empty_struct(array, size); + if (UNEXPECTED(spl_fixedarray_init_non_empty_struct(array, size) == FAILURE)) { + return FAILURE; + } spl_fixedarray_init_elems(array, 0, size); } else { spl_fixedarray_default_ctor(array); } + return SUCCESS; } /* Copies the range [begin, end) into the fixedarray, beginning at `offset`. @@ -127,14 +146,17 @@ } } -static void spl_fixedarray_copy_ctor(spl_fixedarray *to, spl_fixedarray *from) +static zend_result spl_fixedarray_copy_ctor(spl_fixedarray *to, spl_fixedarray *from) { zend_long size = from->size; - spl_fixedarray_init(to, size); + if (UNEXPECTED(spl_fixedarray_init(to, size) == FAILURE)) { + return FAILURE; + } if (size != 0) { zval *begin = from->elements, *end = from->elements + size; spl_fixedarray_copy_range(to, 0, begin, end); } + return SUCCESS; } /* Destructs the elements in the range [from, to). @@ -165,34 +187,38 @@ } } -static void spl_fixedarray_resize(spl_fixedarray *array, zend_long size) +static zend_result spl_fixedarray_resize(spl_fixedarray *array, zend_long size) { if (size == array->size) { /* nothing to do */ - return; + return SUCCESS; } if (UNEXPECTED(array->cached_resize >= 0)) { /* We're already resizing, so just remember the desired size. * The resize will happen later. */ array->cached_resize = size; - return; + return SUCCESS; } /* first initialization */ if (array->size == 0) { - spl_fixedarray_init(array, size); - return; + return spl_fixedarray_init(array, size); } array->cached_resize = size; /* clearing the array */ if (size == 0) { + /* Clears elements and size; resetting them afterwards would leak + * anything a destructor re-installed. */ spl_fixedarray_dtor(array); - array->elements = NULL; - array->size = 0; } else if (size > array->size) { - array->elements = safe_erealloc(array->elements, size, sizeof(zval), 0); + zval *elements = safe_ferealloc(array->elements, size, sizeof(zval), 0, /* fallible */ true); + if (UNEXPECTED(!elements)) { + array->cached_resize = -1; + return FAILURE; + } + array->elements = elements; spl_fixedarray_init_elems(array, array->size, size); array->size = size; } else { /* size < array->size */ @@ -201,12 +227,18 @@ array->elements = erealloc(array->elements, sizeof(zval) * size); } - /* If resized within the destructor, take the last resize command and perform it */ + /* If resized within the destructor, take the last resize command and + * perform it. The sentinel is still set: re-initialising during a + * resize is refused. */ zend_long cached_resize = array->cached_resize; + ZEND_ASSERT(cached_resize >= 0); + array->cached_resize = -1; if (cached_resize != size) { - spl_fixedarray_resize(array, cached_resize); + return spl_fixedarray_resize(array, cached_resize); } + + return SUCCESS; } static HashTable* spl_fixedarray_object_get_gc(zend_object *obj, zval **table, int *n) @@ -282,11 +314,6 @@ zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - if (orig && clone_orig) { - spl_fixedarray_object *other = spl_fixed_array_from_obj(orig); - spl_fixedarray_copy_ctor(&intern->array, &other->array); - } - while (parent) { if (parent == spl_ce_SplFixedArray) { break; @@ -296,6 +323,17 @@ inherited = true; } + if (orig && clone_orig) { + spl_fixedarray_object *other = spl_fixed_array_from_obj(orig); + if (UNEXPECTED(spl_fixedarray_copy_ctor(&intern->array, &other->array) == FAILURE)) { + ZEND_ASSERT(intern->std.handlers); + return &intern->std; + } + } else { + /* The zeroed struct would mean "resizing"; set the sentinel. */ + spl_fixedarray_default_ctor(&intern->array); + } + ZEND_ASSERT(parent); if (UNEXPECTED(inherited)) { @@ -554,12 +592,14 @@ intern = Z_SPLFIXEDARRAY_P(object); - if (!spl_fixedarray_empty(&intern->array)) { + if (UNEXPECTED(!spl_fixedarray_empty(&intern->array) || spl_fixedarray_resize_in_progress(&intern->array))) { /* called __construct() twice, bail out */ return; } - spl_fixedarray_init(&intern->array, size); + if (UNEXPECTED(spl_fixedarray_init(&intern->array, size) == FAILURE)) { + RETURN_OOM(); + } } PHP_METHOD(SplFixedArray, __wakeup) @@ -572,11 +612,13 @@ RETURN_THROWS(); } - if (intern->array.size == 0) { + if (EXPECTED(intern->array.size == 0 && !spl_fixedarray_resize_in_progress(&intern->array))) { int index = 0; int size = zend_hash_num_elements(intern_ht); - spl_fixedarray_init(&intern->array, size); + if (UNEXPECTED(spl_fixedarray_init(&intern->array, size) == FAILURE)) { + RETURN_OOM(); + } ZEND_HASH_FOREACH_VAL(intern_ht, data) { ZVAL_COPY(&intern->array.elements[index], data); @@ -634,9 +676,11 @@ RETURN_THROWS(); } - if (intern->array.size == 0) { + if (EXPECTED(intern->array.size == 0 && !spl_fixedarray_resize_in_progress(&intern->array))) { size = zend_hash_num_elements(data); - spl_fixedarray_init_non_empty_struct(&intern->array, size); + if (UNEXPECTED(spl_fixedarray_init_non_empty_struct(&intern->array, size) == FAILURE)) { + RETURN_OOM(); + } if (!size) { return; } @@ -737,7 +781,9 @@ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0, "integer overflow detected"); RETURN_THROWS(); } - spl_fixedarray_init(&array, tmp); + if (UNEXPECTED(spl_fixedarray_init(&array, tmp) == FAILURE)) { + RETURN_OOM(); + } ZEND_HASH_FOREACH_NUM_KEY_VAL(Z_ARRVAL_P(data), num_index, element) { ZVAL_COPY_DEREF(&array.elements[num_index], element); @@ -747,14 +793,18 @@ zval *element; zend_long i = 0; - spl_fixedarray_init(&array, num); + if (UNEXPECTED(spl_fixedarray_init(&array, num) == FAILURE)) { + RETURN_OOM(); + } ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(data), element) { ZVAL_COPY_DEREF(&array.elements[i], element); i++; } ZEND_HASH_FOREACH_END(); } else { - spl_fixedarray_init(&array, 0); + if (UNEXPECTED(spl_fixedarray_init(&array, 0) == FAILURE)) { + RETURN_OOM(); + } } object_init_ex(return_value, spl_ce_SplFixedArray); @@ -793,7 +843,10 @@ intern = Z_SPLFIXEDARRAY_P(object); - spl_fixedarray_resize(&intern->array, size); + if (UNEXPECTED(spl_fixedarray_resize(&intern->array, size) == FAILURE)) { + RETURN_OOM(); + } + RETURN_TRUE; } diff -Nru php8.4-8.4.26/ext/spl/tests/SplFixedArray_setSize_destruct_reinit_during_clear.phpt php8.4-8.4.27/ext/spl/tests/SplFixedArray_setSize_destruct_reinit_during_clear.phpt --- php8.4-8.4.26/ext/spl/tests/SplFixedArray_setSize_destruct_reinit_during_clear.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/spl/tests/SplFixedArray_setSize_destruct_reinit_during_clear.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,68 @@ +--TEST-- +SplFixedArray::setSize: re-initialising from a destructor during clear (GH-23811) +--DESCRIPTION-- +setSize(0) clears elements and size before running the element destructors, so +the array momentarily looks like it was never constructed. __construct(), +__wakeup() and __unserialize() must not re-initialise it in that window: the +in-progress clear would discard whatever they installed, leaking it. +--FILE-- +setSize(0); + echo "size: ", $arr->getSize(), "\n"; + + /* The array must still be usable. */ + $arr->setSize(1); + $arr[0] = "ok"; + var_dump($arr[0]); + + Reentrant::$arr = null; + Reentrant::$action = null; +} + +echo "-- __construct() --\n"; +clear_with(function ($arr) { $arr->__construct(5); }); + +/* __construct() is ignored, but the following setSize() is still recorded as + * the pending resize and applied once the clear finishes. */ +echo "-- __construct() then setSize() --\n"; +clear_with(function ($arr) { $arr->__construct(7); $arr->setSize(3); }); + +echo "-- __unserialize() --\n"; +clear_with(function ($arr) { $arr->__unserialize(["a", "b", "c"]); }); + +echo "-- __wakeup() --\n"; +clear_with(function ($arr) { @$arr->__wakeup(); }); +?> +--EXPECT-- +-- __construct() -- +size: 0 +string(2) "ok" +-- __construct() then setSize() -- +size: 3 +string(2) "ok" +-- __unserialize() -- +size: 0 +string(2) "ok" +-- __wakeup() -- +size: 0 +string(2) "ok" diff -Nru php8.4-8.4.26/ext/spl/tests/SplFixedArray_subclass_without_parent_construct.phpt php8.4-8.4.27/ext/spl/tests/SplFixedArray_subclass_without_parent_construct.phpt --- php8.4-8.4.26/ext/spl/tests/SplFixedArray_subclass_without_parent_construct.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/spl/tests/SplFixedArray_subclass_without_parent_construct.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,63 @@ +--TEST-- +SplFixedArray: subclass not calling parent::__construct() (GH-23811) +--DESCRIPTION-- +The internal struct is zeroed on object creation, which used to leave the +"resize in progress" sentinel at 0 instead of -1. setSize() then took the +re-entrancy early return and silently did nothing, leaving the array stuck +at size 0 for the lifetime of the object. +--FILE-- +getSize(), "\n"; + +$a->setSize(3); +echo "after setSize(3): ", $a->getSize(), "\n"; + +$a[0] = "x"; +$a[2] = "z"; +var_dump($a->toArray()); + +$a->setSize(1); +echo "after setSize(1): ", $a->getSize(), "\n"; + +$a->setSize(0); +echo "after setSize(0): ", $a->getSize(), "\n"; + +/* Deferred initialisation: calling the parent constructor later still works. */ +class LateInit extends SplFixedArray { + public function __construct() { + } + public function init(int $size): void { + parent::__construct($size); + } +} +$b = new LateInit(); +$b->init(2); +echo "deferred parent::__construct(2): ", $b->getSize(), "\n"; + +/* Cloning one of these must also yield a resizable array. */ +$c = clone new Unconstructed(); +$c->setSize(2); +echo "clone then setSize(2): ", $c->getSize(), "\n"; +?> +--EXPECT-- +initial: 0 +after setSize(3): 3 +array(3) { + [0]=> + string(1) "x" + [1]=> + NULL + [2]=> + string(1) "z" +} +after setSize(1): 1 +after setSize(0): 0 +deferred parent::__construct(2): 2 +clone then setSize(2): 2 diff -Nru php8.4-8.4.26/ext/sqlite3/php_sqlite3_structs.h php8.4-8.4.27/ext/sqlite3/php_sqlite3_structs.h --- php8.4-8.4.26/ext/sqlite3/php_sqlite3_structs.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/sqlite3/php_sqlite3_structs.h 2026-10-19 14:38:59.000000000 +0000 @@ -50,6 +50,7 @@ zend_fcall_info_cache func; zend_fcall_info_cache step; zend_fcall_info_cache fini; + unsigned int *in_callback_ptr; } php_sqlite3_func; /* Structure for SQLite collation function */ @@ -58,6 +59,7 @@ const char *collation_name; zend_fcall_info_cache cmp_func; + unsigned int *in_callback_ptr; } php_sqlite3_collation; /* Structure for SQLite Database object. */ @@ -69,6 +71,7 @@ zend_fcall_info_cache authorizer_fcc; bool exception; + unsigned int in_callback; zend_llist free_list; zend_object zo; diff -Nru php8.4-8.4.26/ext/sqlite3/sqlite3.c php8.4-8.4.27/ext/sqlite3/sqlite3.c --- php8.4-8.4.26/ext/sqlite3/sqlite3.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/sqlite3/sqlite3.c 2026-10-19 14:38:59.000000000 +0000 @@ -191,6 +191,10 @@ } if (db_obj->initialised) { + if (db_obj->in_callback) { + zend_throw_error(NULL, "Cannot close SQLite3 database while inside a callback"); + RETURN_THROWS(); + } zend_llist_clean(&(db_obj->free_list)); if(db_obj->db) { errcode = sqlite3_close(db_obj->db); @@ -774,6 +778,9 @@ uint32_t fake_argc; zend_result ret = SUCCESS; php_sqlite3_agg_context *agg_context = NULL; + bool bailout = false; + php_sqlite3_func *cb_func = (php_sqlite3_func *)sqlite3_user_data(context); + unsigned int *in_callback = cb_func ? cb_func->in_callback_ptr : NULL; if (is_agg) { is_agg = 2; @@ -781,6 +788,10 @@ fake_argc = argc + is_agg; + if (in_callback) { + (*in_callback)++; + } + /* build up the params */ if (fake_argc) { zargs = (zval *)safe_emalloc(fake_argc, sizeof(zval), 0); @@ -823,7 +834,15 @@ } } + zend_try { zend_call_known_fcc(fcc, &retval, fake_argc, zargs, /* named_params */ NULL); + } zend_catch { + bailout = true; + } zend_end_try(); + + if (in_callback) { + (*in_callback)--; + } /* clean up the params */ if (is_agg) { @@ -889,6 +908,9 @@ if (!Z_ISUNDEF(retval)) { zval_ptr_dtor(&retval); } + if (bailout) { + zend_bailout(); + } return ret; } /* }}}*/ @@ -929,6 +951,7 @@ zval zargs[2]; zval retval; int ret = 0; + bool bailout = false; // Exception occurred on previous callback. Don't attempt to call function. if (EG(exception)) { @@ -938,10 +961,26 @@ ZVAL_STRINGL(&zargs[0], a, a_len); ZVAL_STRINGL(&zargs[1], b, b_len); + if (collation->in_callback_ptr) { + (*collation->in_callback_ptr)++; + } + + zend_try { zend_call_known_fcc(&collation->cmp_func, &retval, /* argc */ 2, zargs, /* named_params */ NULL); + } zend_catch { + bailout = true; + } zend_end_try(); + + if (collation->in_callback_ptr) { + (*collation->in_callback_ptr)--; + } zval_ptr_dtor(&zargs[0]); zval_ptr_dtor(&zargs[1]); + if (bailout) { + zval_ptr_dtor(&retval); + zend_bailout(); + } if (EG(exception)) { ret = 0; @@ -988,6 +1027,7 @@ } func = (php_sqlite3_func *)ecalloc(1, sizeof(*func)); + func->in_callback_ptr = &db_obj->in_callback; if (sqlite3_create_function(db_obj->db, sql_func, sql_func_num_args, flags | SQLITE_UTF8, func, php_sqlite3_callback_func, NULL, NULL) == SQLITE_OK) { func->func_name = estrdup(sql_func); @@ -1037,6 +1077,7 @@ } func = (php_sqlite3_func *)ecalloc(1, sizeof(*func)); + func->in_callback_ptr = &db_obj->in_callback; if (sqlite3_create_function(db_obj->db, sql_func, sql_func_num_args, SQLITE_UTF8, func, NULL, php_sqlite3_callback_step, php_sqlite3_callback_final) == SQLITE_OK) { func->func_name = estrdup(sql_func); @@ -1085,6 +1126,7 @@ } collation = (php_sqlite3_collation *)ecalloc(1, sizeof(*collation)); + collation->in_callback_ptr = &db_obj->in_callback; if (sqlite3_create_collation(db_obj->db, collation_name, SQLITE_UTF8, collation, php_sqlite3_callback_compare) == SQLITE_OK) { collation->collation_name = estrdup(collation_name); @@ -2151,8 +2193,15 @@ } int authreturn = SQLITE_DENY; + bool bailout = false; + db_obj->in_callback++; + zend_try { zend_call_known_fcc(&db_obj->authorizer_fcc, &retval, /* argc */ 5, argv, /* named_params */ NULL); + } zend_catch { + bailout = true; + } zend_end_try(); + db_obj->in_callback--; if (Z_ISUNDEF(retval)) { php_sqlite3_error(db_obj, 0, "An error occurred while invoking the authorizer callback"); } else { @@ -2176,6 +2225,9 @@ zval_ptr_dtor(&argv[3]); zval_ptr_dtor(&argv[4]); + if (bailout) { + zend_bailout(); + } return authreturn; } /* }}} */ diff -Nru php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback.phpt php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback.phpt --- php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +SQLite3::close() from within a UDF callback must not corrupt active statement +--EXTENSIONS-- +sqlite3 +--FILE-- +createFunction('boom', function () use ($db) { + try { + var_dump($db->close()); + } catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + return 1; +}); +$stmt = $db->prepare('SELECT boom()'); +var_dump($stmt !== false); +$res = $stmt->execute(); +var_dump($res !== false); +var_dump($res->fetchArray(SQLITE3_NUM)); +$res->finalize(); +var_dump($db->close()); +echo "done\n"; +?> +--EXPECT-- +bool(true) +Error: Cannot close SQLite3 database while inside a callback +bool(true) +Error: Cannot close SQLite3 database while inside a callback +array(1) { + [0]=> + int(1) +} +bool(true) +done diff -Nru php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback_aggregate.phpt php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback_aggregate.phpt --- php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback_aggregate.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback_aggregate.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,41 @@ +--TEST-- +SQLite3::close() from within a createAggregate() callback must not corrupt active statement +--EXTENSIONS-- +sqlite3 +--FILE-- +exec('CREATE TABLE t (a INTEGER)'); +$db->exec('INSERT INTO t VALUES (1)'); +$db->exec('INSERT INTO t VALUES (2)'); + +$reported = false; +$db->createAggregate('agg', function ($context, $rows, $a) use (&$db, &$reported) { + if (!$reported) { + $reported = true; + try { + var_dump($db->close()); + } catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + } + return (int) $context + $a; +}, function ($context, $rows) { + return $context; +}, 1); + +$stmt = $db->prepare('SELECT agg(a) FROM t'); +$res = $stmt->execute(); +var_dump($res->fetchArray(SQLITE3_NUM)); +$res->finalize(); +var_dump($db->close()); +echo "done\n"; +?> +--EXPECT-- +Error: Cannot close SQLite3 database while inside a callback +array(1) { + [0]=> + int(3) +} +bool(true) +done diff -Nru php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback_authorizer.phpt php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback_authorizer.phpt --- php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback_authorizer.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback_authorizer.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +SQLite3::close() from within a setAuthorizer() callback must not finalize live statements +--EXTENSIONS-- +sqlite3 +--FILE-- +exec('CREATE TABLE t (a INTEGER)'); +$db->exec('INSERT INTO t VALUES (7)'); +$live = $db->prepare('SELECT a FROM t'); + +$reported = false; +$db->setAuthorizer(function ($action, $arg1, $arg2, $arg3, $arg4) use (&$db, &$reported) { + if (!$reported) { + $reported = true; + try { + var_dump($db->close()); + } catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + } + return SQLite3::OK; +}); + +$db->prepare('SELECT 1'); + +$res = $live->execute(); +var_dump($res->fetchArray(SQLITE3_NUM)); +$res->finalize(); +echo "done\n"; +?> +--EXPECT-- +Error: Cannot close SQLite3 database while inside a callback +array(1) { + [0]=> + int(7) +} +done diff -Nru php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback_collation.phpt php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback_collation.phpt --- php8.4-8.4.26/ext/sqlite3/tests/sqlite3_close_from_callback_collation.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/sqlite3/tests/sqlite3_close_from_callback_collation.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +SQLite3::close() from within a createCollation() callback must not corrupt active statement +--EXTENSIONS-- +sqlite3 +--FILE-- +exec('CREATE TABLE t (s TEXT)'); +$db->exec("INSERT INTO t VALUES ('b')"); +$db->exec("INSERT INTO t VALUES ('a')"); + +$reported = false; +$db->createCollation('CB', function ($x, $y) use (&$db, &$reported) { + if (!$reported) { + $reported = true; + try { + var_dump($db->close()); + } catch (Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; + } + } + return strcmp($x, $y); +}); + +$stmt = $db->prepare('SELECT s FROM t ORDER BY s COLLATE CB'); +$res = $stmt->execute(); +while ($row = $res->fetchArray(SQLITE3_NUM)) { + echo $row[0], "\n"; +} +$res->finalize(); +var_dump($db->close()); +echo "done\n"; +?> +--EXPECT-- +Error: Cannot close SQLite3 database while inside a callback +a +b +bool(true) +done diff -Nru php8.4-8.4.26/ext/standard/array.c php8.4-8.4.27/ext/standard/array.c --- php8.4-8.4.26/ext/standard/array.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/array.c 2026-10-19 14:38:59.000000000 +0000 @@ -2831,8 +2831,9 @@ /* create packed array */ zval *zv; - array_init_size(return_value, (uint32_t)(start_key + num)); - zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); + if (UNEXPECTED(!array_finit_size_packed(return_value, (uint32_t)(start_key + num)))) { + RETURN_OOM(); + } Z_ARRVAL_P(return_value)->nNumUsed = (uint32_t)(start_key + num); Z_ARRVAL_P(return_value)->nNumOfElements = (uint32_t)num; Z_ARRVAL_P(return_value)->nNextFreeElement = (zend_long)(start_key + num); @@ -2853,8 +2854,9 @@ } } else { /* create hash */ - array_init_size(return_value, (uint32_t)num); - zend_hash_real_init_mixed(Z_ARRVAL_P(return_value)); + if (UNEXPECTED(!array_finit_size_mixed(return_value, (uint32_t)num))) { + RETURN_OOM(); + } if (Z_REFCOUNTED_P(val)) { GC_ADDREF_EX(Z_COUNTED_P(val), (uint32_t)num); } @@ -2910,7 +2912,9 @@ } \ size = (uint32_t)_php_math_round(__calc_size, 0, PHP_ROUND_HALF_UP); \ array_init_size(return_value, size); \ - zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); \ + if (UNEXPECTED(zend_hash_real_finit_packed(Z_ARRVAL_P(return_value), /* fallible */ true) == FAILURE)) { \ + RETURN_OOM(); \ + } \ } while (0) #define RANGE_CHECK_LONG_INIT_ARRAY(start, end, _step) do { \ @@ -2922,7 +2926,9 @@ } \ size = (uint32_t)(__calc_size + 1); \ array_init_size(return_value, size); \ - zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); \ + if (UNEXPECTED(zend_hash_real_finit_packed(Z_ARRVAL_P(return_value), /* fallible */ true) == FAILURE)) { \ + RETURN_OOM(); \ + } \ } while (0) /* Process input for the range() function @@ -4818,6 +4824,14 @@ } /* }}} */ +/* Releases references taken up-front for pad values that were not inserted. */ +static zend_always_inline void php_array_pad_release(zval *pad_value, zend_long num_pads) +{ + if (Z_REFCOUNTED_P(pad_value)) { + GC_DELREF_EX(Z_COUNTED_P(pad_value), num_pads); + } +} + /* {{{ Returns a copy of input array padded with pad_value to size pad_size */ PHP_FUNCTION(array_pad) { @@ -4859,7 +4873,10 @@ array_init_size(return_value, pad_size_abs); if (HT_IS_PACKED(Z_ARRVAL_P(input))) { - zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); + if (UNEXPECTED(zend_hash_real_finit_packed(Z_ARRVAL_P(return_value), /* fallible */ true) == FAILURE)) { + php_array_pad_release(pad_value, num_pads); + RETURN_OOM(); + } if (pad_size < 0) { ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) { @@ -4886,22 +4903,36 @@ } else { if (pad_size < 0) { for (i = 0; i < num_pads; i++) { - zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), pad_value); + if (UNEXPECTED(zend_hash_next_index_finsert_new(Z_ARRVAL_P(return_value), pad_value) == HASH_NOMEM)) { + php_array_pad_release(pad_value, num_pads - i); + RETURN_OOM(); + } } } ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(input), key, value) { Z_TRY_ADDREF_P(value); + zval *result; if (key) { - zend_hash_add_new(Z_ARRVAL_P(return_value), key, value); + result = zend_hash_fadd_new(Z_ARRVAL_P(return_value), key, value); } else { - zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), value); + result = zend_hash_next_index_finsert_new(Z_ARRVAL_P(return_value), value); + } + if (UNEXPECTED(result == HASH_NOMEM)) { + Z_TRY_DELREF_P(value); + if (pad_size > 0) { + php_array_pad_release(pad_value, num_pads); + } + RETURN_OOM(); } } ZEND_HASH_FOREACH_END(); if (pad_size > 0) { for (i = 0; i < num_pads; i++) { - zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), pad_value); + if (UNEXPECTED(zend_hash_next_index_finsert_new(Z_ARRVAL_P(return_value), pad_value) == HASH_NOMEM)) { + php_array_pad_release(pad_value, num_pads - i); + RETURN_OOM(); + } } } } @@ -6928,7 +6959,10 @@ } } - array_init_size(return_value, maxlen); + if (UNEXPECTED(!array_finit_size_packed(return_value, maxlen))) { + efree(array_pos); + RETURN_OOM(); + } if (!ZEND_FCI_INITIALIZED(fci)) { zval zv; @@ -6938,6 +6972,10 @@ /* If no callback, the result will be an array, consisting of current * entries from all arrays. */ + if (ZEND_HAS_OOM()) { + efree(array_pos); + RETURN_OOM(); + } array_init_size(&result, n_arrays); for (i = 0; i < n_arrays; i++) { @@ -7114,13 +7152,18 @@ size = num_in; } - array_init_size(return_value, (uint32_t)(((num_in - 1) / size) + 1)); + if (UNEXPECTED(!array_finit_size_packed(return_value, (uint32_t)(((num_in - 1) / size) + 1)))) { + RETURN_OOM(); + } ZVAL_UNDEF(&chunk); ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(input), num_key, str_key, entry) { /* If new chunk, create and initialize it. */ if (Z_TYPE(chunk) == IS_UNDEF) { + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } array_init_size(&chunk, (uint32_t)size); } diff -Nru php8.4-8.4.26/ext/standard/assert.c php8.4-8.4.27/ext/standard/assert.c --- php8.4-8.4.26/ext/standard/assert.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/assert.c 2026-10-19 14:38:59.000000000 +0000 @@ -247,7 +247,9 @@ * exception so we can avoid bailout and use unwind_exit. */ zend_exception_error(EG(exception), E_WARNING); } - zend_throw_unwind_exit(); + if (!EG(exception)) { + zend_throw_unwind_exit(); + } RETURN_THROWS(); } else { RETURN_FALSE; diff -Nru php8.4-8.4.26/ext/standard/basic_functions.c php8.4-8.4.27/ext/standard/basic_functions.c --- php8.4-8.4.26/ext/standard/basic_functions.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/basic_functions.c 2026-10-19 14:38:59.000000000 +0000 @@ -157,7 +157,9 @@ PHP_RSHUTDOWN(basic), /* request shutdown */ PHP_MINFO(basic), /* extension info */ PHP_STANDARD_VERSION, /* extension version */ - STANDARD_MODULE_PROPERTIES + NO_MODULE_GLOBALS, + ZEND_MODULE_POST_ZEND_DEACTIVATE_N(streams), + STANDARD_MODULE_PROPERTIES_EX }; /* }}} */ @@ -463,7 +465,6 @@ #endif BASIC_RSHUTDOWN_SUBMODULE(assert) BASIC_RSHUTDOWN_SUBMODULE(url_scanner_ex) - BASIC_RSHUTDOWN_SUBMODULE(streams) #ifdef PHP_WIN32 BASIC_RSHUTDOWN_SUBMODULE(win32_core_globals) #endif @@ -486,6 +487,18 @@ } /* }}} */ +/* Called from php_request_startup(), before any request data is processed. */ +PHPAPI void php_basic_early_rinit(void) +{ + /* The session upload progress handler (un)serializes the session and + * registers the session id with the URL rewriter from + * php_hash_environment(), before RINIT. */ + BG(serialize_lock) = 0; + memset(&BG(serialize), 0, sizeof(BG(serialize))); + memset(&BG(unserialize), 0, sizeof(BG(unserialize))); + php_url_scanner_early_rinit(); +} + PHP_MINFO_FUNCTION(basic) /* {{{ */ { php_info_print_table_start(); diff -Nru php8.4-8.4.26/ext/standard/basic_functions.h php8.4-8.4.27/ext/standard/basic_functions.h --- php8.4-8.4.26/ext/standard/basic_functions.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/basic_functions.h 2026-10-19 14:38:59.000000000 +0000 @@ -131,6 +131,7 @@ PHPAPI extern bool remove_user_shutdown_function(const char *function_name, size_t function_len); PHPAPI extern bool append_user_shutdown_function(php_shutdown_function_entry *shutdown_function_entry); +PHPAPI void php_basic_early_rinit(void); PHPAPI void php_call_shutdown_functions(void); PHPAPI void php_free_shutdown_functions(void); diff -Nru php8.4-8.4.26/ext/standard/config.m4 php8.4-8.4.27/ext/standard/config.m4 --- php8.4-8.4.26/ext/standard/config.m4 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/config.m4 2026-10-19 14:38:59.000000000 +0000 @@ -328,7 +328,7 @@ PHP_CHECK_FUNC(res_search, resolv, socket) -AC_CHECK_FUNCS([posix_spawn_file_actions_addchdir_np elf_aux_info]) +AC_CHECK_FUNCS([posix_spawn_file_actions_addchdir posix_spawn_file_actions_addchdir_np elf_aux_info]) dnl dnl Obsolete check for strptime() declaration. The strptime, where available, diff -Nru php8.4-8.4.26/ext/standard/file.c php8.4-8.4.27/ext/standard/file.c --- php8.4-8.4.26/ext/standard/file.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/file.c 2026-10-19 14:38:59.000000000 +0000 @@ -645,12 +645,18 @@ do { p++; parse_eol: + if (ZEND_HAS_OOM()) { + break; + } add_index_stringl(return_value, i++, s, p-s); s = p; } while ((p = memchr(p, eol_marker, (e-p)))); } else { do { int windows_eol = 0; + if (ZEND_HAS_OOM()) { + break; + } if (p != ZSTR_VAL(target_buf) && eol_marker == '\n' && *(p - 1) == '\r') { windows_eol++; } @@ -664,7 +670,7 @@ } /* handle any leftovers of files without new lines */ - if (s != e) { + if (s != e && !ZEND_HAS_OOM()) { p = e; goto parse_eol; } @@ -898,8 +904,13 @@ RETURN_FALSE; } // TODO: avoid reallocation ??? - RETVAL_STRINGL(buf, line_len); + /* This copy can double an already large buffer. */ + str = zend_string_finit(buf, line_len, /* persistent */ false, /* fallible */ true); efree(buf); + if (UNEXPECTED(!str)) { + RETURN_OOM(); + } + RETVAL_STR(str); } else { if (len <= 0) { zend_argument_value_error(2, "must be greater than 0"); @@ -1925,6 +1936,11 @@ char *comp_end, *hunk_begin; char *tptr = temp; + /* Each field costs a zval plus a zend_string, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + break; + } + inc_len = (bptr < limit ? (*bptr == '\0' ? 1 : php_mblen(bptr, limit - bptr)): 0); if (inc_len == 1) { char *tmp = bptr; diff -Nru php8.4-8.4.26/ext/standard/filters.c php8.4-8.4.27/ext/standard/filters.c --- php8.4-8.4.26/ext/standard/filters.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/filters.c 2026-10-19 14:38:59.000000000 +0000 @@ -953,7 +953,7 @@ err = PHP_CONV_ERR_INVALID_SEQ; goto out; } - next_char = (next_char << 4) | (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30); + next_char = (next_char << 4) | (*ps >= 'a' ? *ps - 0x57 : (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30)); scan_stat++; ps++, icnt--; if (scan_stat != 3) { diff -Nru php8.4-8.4.26/ext/standard/head.c php8.4-8.4.27/ext/standard/head.c --- php8.4-8.4.26/ext/standard/head.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/head.c 2026-10-19 14:38:59.000000000 +0000 @@ -137,12 +137,20 @@ smart_str_appends(&buf, "Set-Cookie: "); smart_str_append(&buf, name); smart_str_appendc(&buf, '='); + /* The encoded value is up to three copies of the input. */ if (url_encode) { zend_string *encoded_value = php_raw_url_encode(ZSTR_VAL(value), ZSTR_LEN(value)); - smart_str_append(&buf, encoded_value); + bool appended = smart_str_fappendl_ex(&buf, ZSTR_VAL(encoded_value), + ZSTR_LEN(encoded_value), /* persistent */ false, /* fallible */ true); zend_string_release_ex(encoded_value, 0); - } else { - smart_str_append(&buf, value); + if (UNEXPECTED(!appended)) { + smart_str_free(&buf); + return FAILURE; + } + } else if (UNEXPECTED(!smart_str_fappendl_ex(&buf, ZSTR_VAL(value), ZSTR_LEN(value), + /* persistent */ false, /* fallible */ true))) { + smart_str_free(&buf); + return FAILURE; } if (expires > 0) { diff -Nru php8.4-8.4.26/ext/standard/html.c php8.4-8.4.27/ext/standard/html.c --- php8.4-8.4.26/ext/standard/html.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/html.c 2026-10-19 14:38:59.000000000 +0000 @@ -1145,7 +1145,10 @@ maxlen = zend_safe_addmult(oldlen, 2, 0, "html_entities"); } - replaced = zend_string_alloc(maxlen, 0); + replaced = zend_string_falloc(maxlen, /* persistent */ false, /* fallible */ true); + if (!replaced) { + return ZSTR_EMPTY_ALLOC(); + } len = 0; cursor = 0; while (cursor < oldlen) { @@ -1158,7 +1161,12 @@ /* guarantee we have at least 40 bytes to write. * In HTML5, entities may take up to 33 bytes */ if (len > maxlen - 40) { /* maxlen can never be smaller than 128 */ - replaced = zend_string_safe_realloc(replaced, maxlen, 1, 128, 0); + zend_string *new_replaced = zend_string_safe_frealloc(replaced, maxlen, 1, 128, /* persistent */ false, /* fallible */ true); + if (!new_replaced) { + zend_string_release(replaced); + return ZSTR_EMPTY_ALLOC(); + } + replaced = new_replaced; maxlen += 128; } diff -Nru php8.4-8.4.26/ext/standard/image.c php8.4-8.4.27/ext/standard/image.c --- php8.4-8.4.26/ext/standard/image.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/image.c 2026-10-19 14:38:59.000000000 +0000 @@ -204,7 +204,14 @@ do { szlength = ZSTR_LEN(bufz) * (1< #endif -#ifdef HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP +#if defined(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP) || defined(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR) /* Only defined on glibc >= 2.29, FreeBSD CURRENT, musl >= 1.1.24, * MacOS Catalina or later.. * It should be posible to modify this so it is also @@ -44,7 +44,24 @@ * to be really buggy. */ #include +#ifdef __APPLE__ +#include +#endif #define USE_POSIX_SPAWN + +/* The non-_np variant is in macOS 26 (and _np deprecated). On Apple, it has to be selected by the + * deployment target rather than the configure check: the link check passes whenever the SDK + * exports the symbol even if the running system is older, in which case the weakly linked + * reference resolves to NULL at runtime. */ +#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 260000 +#define POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR posix_spawn_file_actions_addchdir +#elif defined(__APPLE__) +#define POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR posix_spawn_file_actions_addchdir_np +#elif defined(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR) +#define POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR posix_spawn_file_actions_addchdir +#else +#define POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR posix_spawn_file_actions_addchdir_np +#endif #endif /* This symbol is defined in ext/standard/config.m4. @@ -695,7 +712,7 @@ static void init_process_info(PROCESS_INFORMATION *pi) { - memset(&pi, 0, sizeof(pi)); + memset(pi, 0, sizeof(*pi)); } /* on success, returns length of *comspec, which then needs to be efree'd by caller */ @@ -746,7 +763,7 @@ static zend_result convert_command_to_use_shell(wchar_t **cmdw, size_t cmdw_len) { - wchar_t *comspec; + wchar_t *comspec = NULL; size_t len = find_comspec_nt(&comspec); if (len == 0) { php_error_docref(NULL, E_WARNING, "Command conversion failed"); @@ -829,7 +846,7 @@ #ifdef PHP_WIN32 desc->childend = CreateFileA("nul", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); - if (desc->childend == NULL) { + if (desc->childend == INVALID_HANDLE_VALUE) { php_error_docref(NULL, E_WARNING, "Failed to open nul"); return FAILURE; } @@ -1172,8 +1189,9 @@ { for (int i = 0; i < ndesc; i++) { close_descriptor(descriptors[i].childend); - if (descriptors[i].parentend) + if (descriptors[i].type != DESCRIPTOR_TYPE_STD) { close_descriptor(descriptors[i].parentend); + } } } @@ -1391,9 +1409,9 @@ } if (cwd) { - r = posix_spawn_file_actions_addchdir_np(&factions, cwd); + r = POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR(&factions, cwd); if (r != 0) { - php_error_docref(NULL, E_WARNING, "posix_spawn_file_actions_addchdir_np() failed: %s", strerror(r)); + php_error_docref(NULL, E_WARNING, ZEND_TOSTR(POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR) "() failed: %s", strerror(r)); } } diff -Nru php8.4-8.4.26/ext/standard/sha1.c php8.4-8.4.27/ext/standard/sha1.c --- php8.4-8.4.26/ext/standard/sha1.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/sha1.c 2026-10-19 14:38:59.000000000 +0000 @@ -84,10 +84,16 @@ PHP_SHA1Update(&context, buf, n); } + bool failed = n < 0 || !php_stream_eof(stream); + PHP_SHA1Final(digest, &context); php_stream_close(stream); + if (failed) { + RETURN_FALSE; + } + if (raw_output) { RETURN_STRINGL((char *) digest, 20); } else { diff -Nru php8.4-8.4.26/ext/standard/string.c php8.4-8.4.27/ext/standard/string.c --- php8.4-8.4.26/ext/standard/string.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/string.c 2026-10-19 14:38:59.000000000 +0000 @@ -735,7 +735,10 @@ /* Special case for a single-character break as it needs no additional storage space */ if (breakchar_len == 1 && !docut) { - newtext = zend_string_init(ZSTR_VAL(text), ZSTR_LEN(text), 0); + newtext = zend_string_finit(ZSTR_VAL(text), ZSTR_LEN(text), 0, /* fallible */ true); + if (UNEXPECTED(!newtext)) { + RETURN_OOM(); + } laststart = lastspace = 0; for (current = 0; current < (zend_long)ZSTR_LEN(text); current++) { @@ -758,12 +761,18 @@ /* Multiple character line break or forced cut */ if (linelength > 0) { chk = (size_t)(ZSTR_LEN(text)/linelength + 1); - newtext = zend_string_safe_alloc(chk, breakchar_len, ZSTR_LEN(text), 0); + newtext = zend_string_safe_falloc(chk, breakchar_len, ZSTR_LEN(text), 0, /* fallible */ true); + if (UNEXPECTED(!newtext)) { + RETURN_OOM(); + } alloced = ZSTR_LEN(text) + chk * breakchar_len + 1; } else { chk = ZSTR_LEN(text); alloced = ZSTR_LEN(text) * (breakchar_len + 1) + 1; - newtext = zend_string_safe_alloc(ZSTR_LEN(text), breakchar_len + 1, 0, 0); + newtext = zend_string_safe_falloc(ZSTR_LEN(text), breakchar_len + 1, 0, 0, /* fallible */ true); + if (UNEXPECTED(!newtext)) { + RETURN_OOM(); + } } /* now keep track of the actual new text length */ @@ -773,13 +782,16 @@ for (current = 0; current < (zend_long)ZSTR_LEN(text); current++) { if (chk == 0) { alloced += (size_t) (((ZSTR_LEN(text) - current + 1)/linelength + 1) * breakchar_len) + 1; - newtext = zend_string_extend(newtext, alloced, 0); + newtext = zend_string_fextend(newtext, alloced, 0, /* fallible */ true); + if (UNEXPECTED(!newtext)) { + RETURN_OOM(); + } chk = (size_t) ((ZSTR_LEN(text) - current)/linelength) + 1; } /* when we hit an existing break, copy to new buffer, and * fix up laststart and lastspace */ if (ZSTR_VAL(text)[current] == breakchar[0] - && current + breakchar_len < ZSTR_LEN(text) + && current + breakchar_len <= ZSTR_LEN(text) && !strncmp(ZSTR_VAL(text) + current, breakchar, breakchar_len)) { memcpy(ZSTR_VAL(newtext) + newtextlen, ZSTR_VAL(text) + laststart, current - laststart + breakchar_len); newtextlen += current - laststart + breakchar_len; @@ -834,7 +846,10 @@ ZSTR_VAL(newtext)[newtextlen] = '\0'; /* free unused memory */ - newtext = zend_string_truncate(newtext, newtextlen, 0); + newtext = zend_string_ftruncate(newtext, newtextlen, 0, /* fallible */ true); + if (UNEXPECTED(!newtext)) { + RETURN_OOM(); + } RETURN_NEW_STR(newtext); } @@ -856,6 +871,11 @@ zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) { do { + /* Each piece costs a zval plus a zend_string, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + ZEND_HASH_FILL_FINISH(); + return; + } ZEND_HASH_FILL_GROW(); ZEND_HASH_FILL_SET_STR(zend_string_init_fast(p1, p2 - p1)); ZEND_HASH_FILL_NEXT(); @@ -894,6 +914,11 @@ positions[found++] = p1; do { + /* One pointer per delimiter, then a zval and a zend_string per piece. */ + if (ZEND_HAS_OOM()) { + efree((void *)positions); + return; + } if (found >= allocated) { allocated = found + EXPLODE_ALLOC_STEP;/* make sure we have enough memory */ positions = erealloc(ZEND_VOIDP(positions), allocated*sizeof(char *)); @@ -905,6 +930,9 @@ to_return = limit + found; /* limit is at least -1 therefore no need of bounds checking : i will be always less than found */ for (i = 0; i < to_return; i++) { /* this checks also for to_return > 0 */ + if (ZEND_HAS_OOM()) { + break; + } ZVAL_STRINGL(&tmp, positions[i], (positions[i+1] - ZSTR_LEN(delim)) - positions[i]); zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp); } @@ -1016,7 +1044,18 @@ } ZEND_HASH_FOREACH_END(); /* numelems cannot be 0, we checked above */ - str = zend_string_safe_alloc(numelems - 1, ZSTR_LEN(glue), len, 0); + /* The glue is repeated once per element, so the result can dwarf the input. */ + str = zend_string_safe_falloc(numelems - 1, ZSTR_LEN(glue), len, 0, /* fallible */ true); + if (UNEXPECTED(!str)) { + while (ptr > strings) { + ptr--; + if (ptr->str && ptr->lval) { + zend_string_release_ex(ptr->str, 0); + } + } + free_alloca(strings, use_heap); + RETURN_OOM(); + } GC_ADD_FLAGS(str, flags); cptr = ZSTR_VAL(str) + ZSTR_LEN(str); *cptr = 0; @@ -2175,7 +2214,10 @@ chunks++; } - dest = zend_string_safe_alloc(chunks, endlen, srclen, 0); + dest = zend_string_safe_falloc(chunks, endlen, srclen, 0, /* fallible */ true); + if (UNEXPECTED(!dest)) { + return NULL; + } for (p = src, q = ZSTR_VAL(dest); p < (src + srclen - chunklen + 1); ) { q = zend_mempcpy(q, p, chunklen); @@ -2218,7 +2260,10 @@ if ((size_t)chunklen > ZSTR_LEN(str)) { /* to maintain BC, we must return original string + ending */ - result = zend_string_safe_alloc(ZSTR_LEN(str), 1, endlen, 0); + result = zend_string_safe_falloc(ZSTR_LEN(str), 1, endlen, 0, /* fallible */ true); + if (UNEXPECTED(!result)) { + RETURN_OOM(); + } memcpy(ZSTR_VAL(result), ZSTR_VAL(str), ZSTR_LEN(str)); memcpy(ZSTR_VAL(result) + ZSTR_LEN(str), end, endlen); ZSTR_VAL(result)[ZSTR_LEN(result)] = '\0'; @@ -2230,6 +2275,9 @@ } result = php_chunk_split(ZSTR_VAL(str), ZSTR_LEN(str), end, endlen, (size_t)chunklen); + if (UNEXPECTED(!result)) { + RETURN_OOM(); + } RETURN_STR(result); } @@ -2454,7 +2502,13 @@ ZEND_HASH_FOREACH_KEY_VAL(str_ht, num_index, str_index, tmp_str) { zend_string *tmp_orig_str; - zend_string *orig_str = zval_get_tmp_string(tmp_str, &tmp_orig_str); + zend_string *orig_str; + + /* The replacement is repeated once per element, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } + orig_str = zval_get_tmp_string(tmp_str, &tmp_orig_str); if (from_ht) { if (HT_IS_PACKED(from_ht)) { @@ -3008,6 +3062,15 @@ old_pos = pos = 0; while (pos <= slen - minlen) { + /* One replacement is appended per match, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + smart_str_free(&result); + if (pats == &str_hash) { + zend_hash_destroy(&str_hash); + } + efree(num_bitset); + RETURN_OOM(); + } key = str + pos; if (bitset[((unsigned char)key[0]) / sizeof(zend_ulong)] & (Z_UL(1) << (((unsigned char)key[0]) % sizeof(zend_ulong)))) { len = maxlen; @@ -3127,7 +3190,11 @@ } if (to_len > 0) { - result = zend_string_safe_alloc(char_count, to_len - 1, ZSTR_LEN(str), 0); + /* The replacement is repeated once per match, so the result can dwarf the input. */ + result = zend_string_safe_falloc(char_count, to_len - 1, ZSTR_LEN(str), 0, /* fallible */ true); + if (UNEXPECTED(!result)) { + return NULL; + } } else { result = zend_string_alloc(ZSTR_LEN(str) - char_count, 0); } @@ -3202,7 +3269,10 @@ goto nothing_todo; } if (str_len > needle_len) { - new_str = zend_string_safe_alloc(count, str_len - needle_len, ZSTR_LEN(haystack), 0); + new_str = zend_string_safe_falloc(count, str_len - needle_len, ZSTR_LEN(haystack), 0, /* fallible */ true); + if (UNEXPECTED(!new_str)) { + return NULL; + } } else { new_str = zend_string_alloc(count * (str_len - needle_len) + ZSTR_LEN(haystack), 0); } @@ -3280,7 +3350,10 @@ } if (str_len > ZSTR_LEN(lc_needle)) { - new_str = zend_string_safe_alloc(count, str_len - ZSTR_LEN(lc_needle), ZSTR_LEN(haystack), 0); + new_str = zend_string_safe_falloc(count, str_len - ZSTR_LEN(lc_needle), ZSTR_LEN(haystack), 0, /* fallible */ true); + if (UNEXPECTED(!new_str)) { + return NULL; + } } else { new_str = zend_string_alloc(count * (str_len - ZSTR_LEN(lc_needle)) + ZSTR_LEN(haystack), 0); } @@ -3416,21 +3489,34 @@ php_error_docref(NULL, E_WARNING, "Ignoring replacement of empty string"); RETVAL_STR_COPY(str); } else if (ZSTR_LEN(str_key) == 1) { - RETVAL_STR(php_char_to_str_ex(str, + zend_string *res = php_char_to_str_ex(str, ZSTR_VAL(str_key)[0], ZSTR_VAL(replace), ZSTR_LEN(replace), /* case_sensitive */ true, - NULL)); + NULL); + if (UNEXPECTED(!res)) { + goto strtr_oom; + } + RETVAL_STR(res); } else { zend_long dummy = 0; - RETVAL_STR(php_str_to_str_ex(str, + zend_string *res = php_str_to_str_ex(str, ZSTR_VAL(str_key), ZSTR_LEN(str_key), - ZSTR_VAL(replace), ZSTR_LEN(replace), &dummy)); + ZSTR_VAL(replace), ZSTR_LEN(replace), &dummy); + if (UNEXPECTED(!res)) { + goto strtr_oom; + } + RETVAL_STR(res); } zend_tmp_string_release(tmp_str); zend_tmp_string_release(tmp_replace); break; + +strtr_oom: + zend_tmp_string_release(tmp_str); + zend_tmp_string_release(tmp_replace); + RETURN_OOM(); } ZEND_HASH_FOREACH_END(); } else { php_strtr_array_ex(return_value, str, from_ht); @@ -4428,6 +4514,15 @@ zend_tmp_string_release(tmp_search_str); zend_tmp_string_release(tmp_replace_entry_str); + if (UNEXPECTED(!tmp_result)) { + zend_string_release_ex(subject_str, 0); + ZVAL_EMPTY_STRING(result); + if (lc_subject_str) { + zend_string_release_ex(lc_subject_str, 0); + } + return replace_count; + } + if (subject_str == tmp_result) { zend_string_delref(subject_str); } else { @@ -4450,24 +4545,33 @@ } else { ZEND_ASSERT(search_str); if (ZSTR_LEN(search_str) == 1) { - ZVAL_STR(result, - php_char_to_str_ex(subject_str, + tmp_result = php_char_to_str_ex(subject_str, ZSTR_VAL(search_str)[0], ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), case_sensitivity, - &replace_count)); + &replace_count); + if (UNEXPECTED(!tmp_result)) { + ZVAL_EMPTY_STRING(result); + return replace_count; + } + ZVAL_STR(result, tmp_result); } else if (ZSTR_LEN(search_str) > 1) { if (case_sensitivity) { - ZVAL_STR(result, php_str_to_str_ex(subject_str, + tmp_result = php_str_to_str_ex(subject_str, ZSTR_VAL(search_str), ZSTR_LEN(search_str), - ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), &replace_count)); + ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), &replace_count); } else { lc_subject_str = zend_string_tolower(subject_str); - ZVAL_STR(result, php_str_to_str_i_ex(subject_str, ZSTR_VAL(lc_subject_str), - search_str, ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), &replace_count)); + tmp_result = php_str_to_str_i_ex(subject_str, ZSTR_VAL(lc_subject_str), + search_str, ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), &replace_count); zend_string_release_ex(lc_subject_str, 0); } + if (UNEXPECTED(!tmp_result)) { + ZVAL_EMPTY_STRING(result); + return replace_count; + } + ZVAL_STR(result, tmp_result); } else { ZVAL_STR_COPY(result, subject_str); } @@ -4806,7 +4910,10 @@ { size_t repl_len = is_xhtml ? (sizeof("
") - 1) : (sizeof("
") - 1); - result = zend_string_safe_alloc(repl_cnt, repl_len, ZSTR_LEN(str), 0); + result = zend_string_safe_falloc(repl_cnt, repl_len, ZSTR_LEN(str), 0, /* fallible */ true); + if (UNEXPECTED(!result)) { + RETURN_OOM(); + } target = ZSTR_VAL(result); } @@ -5515,7 +5622,11 @@ RETURN_EMPTY_STRING(); /* Initialize the result string */ - result = zend_string_safe_alloc(ZSTR_LEN(input_str), mult, 0, 0); + result = zend_string_safe_falloc(ZSTR_LEN(input_str), mult, 0, /*persistent */ false, /* fallible */ true); + if (UNEXPECTED(!result)) { + RETURN_OOM(); + } + result_len = ZSTR_LEN(input_str) * mult; ZSTR_COPY_CONCAT_PROPERTIES(result, input_str); @@ -5802,7 +5913,10 @@ } num_pad_chars = pad_length - ZSTR_LEN(input); - result = zend_string_safe_alloc(1, ZSTR_LEN(input), num_pad_chars, 0); + result = zend_string_safe_falloc(1, ZSTR_LEN(input), num_pad_chars, 0, /* falllible */ true); + if (UNEXPECTED(!result)) { + RETURN_OOM(); + } ZSTR_LEN(result) = 0; /* We need to figure out the left/right padding lengths. */ @@ -6084,6 +6198,10 @@ } while (p < e) { + /* Each word costs a zval plus a zend_string, so stop once over the limit. */ + if (type && ZEND_HAS_OOM()) { + RETURN_OOM(); + } s = p; while (p < e && (isalpha((unsigned char)*p) || (char_list && ch[(unsigned char)*p]) || *p == '\'' || *p == '-')) { p++; @@ -6141,12 +6259,18 @@ return; } - array_init_size(return_value, (uint32_t)(((ZSTR_LEN(str) - 1) / split_length) + 1)); + if (UNEXPECTED(!array_finit_size_packed(return_value, (uint32_t)(((ZSTR_LEN(str) - 1) / split_length) + 1)))) { + RETURN_OOM(); + } n_reg_segments = ZSTR_LEN(str) / split_length; p = ZSTR_VAL(str); while (n_reg_segments-- > 0) { + /* Each segment costs a zval plus a zend_string, so stop once over the limit. */ + if (ZEND_HAS_OOM()) { + RETURN_OOM(); + } add_next_index_stringl(return_value, p, split_length); p += split_length; } diff -Nru php8.4-8.4.26/ext/standard/tests/GHSA-96wq-48vp-hh57.phpt php8.4-8.4.27/ext/standard/tests/GHSA-96wq-48vp-hh57.phpt --- php8.4-8.4.26/ext/standard/tests/GHSA-96wq-48vp-hh57.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/GHSA-96wq-48vp-hh57.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -8,7 +8,8 @@ --FILE-- +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/array/oom_array_map_zip.phpt php8.4-8.4.27/ext/standard/tests/array/oom_array_map_zip.phpt --- php8.4-8.4.26/ext/standard/tests/array/oom_array_map_zip.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/array/oom_array_map_zip.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +array_map() without a callback doesn't reach hard limit +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/file/fread_oom_chunk_size.phpt php8.4-8.4.27/ext/standard/tests/file/fread_oom_chunk_size.phpt --- php8.4-8.4.26/ext/standard/tests/file/fread_oom_chunk_size.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/file/fread_oom_chunk_size.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +fread() with a large chunk size doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/file/fread_oom_filter_chunk_size.phpt php8.4-8.4.27/ext/standard/tests/file/fread_oom_filter_chunk_size.phpt --- php8.4-8.4.26/ext/standard/tests/file/fread_oom_filter_chunk_size.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/file/fread_oom_filter_chunk_size.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +fread() with a filter and a large chunk size doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/file/fread_oom_length.phpt php8.4-8.4.27/ext/standard/tests/file/fread_oom_length.phpt --- php8.4-8.4.26/ext/standard/tests/file/fread_oom_length.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/file/fread_oom_length.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +fread() with a large length doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/file/ghsa-9f67-6fw4-hpfp-win32.phpt php8.4-8.4.27/ext/standard/tests/file/ghsa-9f67-6fw4-hpfp-win32.phpt --- php8.4-8.4.26/ext/standard/tests/file/ghsa-9f67-6fw4-hpfp-win32.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/file/ghsa-9f67-6fw4-hpfp-win32.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -22,12 +22,28 @@ } echo "Reserved names in paths are rejected:\n"; -foreach (['NUL', 'con', 'COM1', 'LPT9', 'CONIN$', 'NUL.txt', 'con.php', 'aux:stream', 'NUL .txt', 'NUL :txt', '.\\NUL'] as $name) { +foreach (['NUL', 'con', 'COM1', 'LPT9', 'CONIN$', '.\\NUL'] as $name) { $blocked = $dir . DIRECTORY_SEPARATOR . $name; var_dump(@fopen($blocked, 'wb') === false); var_dump(file_exists($blocked)); } -var_dump(@fopen('NUL.txt', 'wb') === false); + +echo "Suffixed device names:\n"; +foreach (['NUL.txt', 'con.php', 'aux:stream', 'NUL .txt', 'NUL :txt'] as $name) { + $file = $dir . DIRECTORY_SEPARATOR . $name; + $h = @fopen($file, 'wb'); + if (PHP_WINDOWS_VERSION_BUILD < 22000) { + var_dump($h === false); + } else { + // Windows 11 treats these as regular files + var_dump(is_resource($h) && (fstat($h)['mode'] & 0170000) === 0100000); + fclose($h); + // Delete the base file and its streams + $base = $dir . DIRECTORY_SEPARATOR . explode(':', $name)[0]; + unlink('\\\\.\\' . $base . '::$DATA'); + } + var_dump(file_exists($file)); +} var_dump(@stat($dir . DIRECTORY_SEPARATOR . 'NUL') === false); var_dump(@mkdir($dir . DIRECTORY_SEPARATOR . 'NUL') === false); var_dump(@rename(__FILE__, $dir . DIRECTORY_SEPARATOR . 'PRN') === false); @@ -61,6 +77,7 @@ bool(false) bool(true) bool(false) +Suffixed device names: bool(true) bool(false) bool(true) @@ -74,7 +91,6 @@ bool(true) bool(true) bool(true) -bool(true) bool(true) Similar names are fine: bool(true) diff -Nru php8.4-8.4.26/ext/standard/tests/file/oom_file.phpt php8.4-8.4.27/ext/standard/tests/file/oom_file.phpt --- php8.4-8.4.26/ext/standard/tests/file/oom_file.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/file/oom_file.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +file() doesn't reach hard limit +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/file/oom_file_get_contents.phpt php8.4-8.4.27/ext/standard/tests/file/oom_file_get_contents.phpt --- php8.4-8.4.26/ext/standard/tests/file/oom_file_get_contents.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/file/oom_file_get_contents.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +file_get_contents() doesn't reach hard limit +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/filters/qp_decode_lowercase.phpt php8.4-8.4.27/ext/standard/tests/filters/qp_decode_lowercase.phpt --- php8.4-8.4.26/ext/standard/tests/filters/qp_decode_lowercase.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/filters/qp_decode_lowercase.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +convert.quoted-printable-decode: lowercase hex digits decode correctly +--FILE-- + ', bin2hex(stream_get_contents($fp)), "\n"; + fclose($fp); +} +?> +--EXPECT-- +=cd => cd +=0a => 0a +=da => da +=CD => cd +=AB => ab +=ab => ab diff -Nru php8.4-8.4.26/ext/standard/tests/general_functions/proc_open_descriptor_0_setup_failure.phpt php8.4-8.4.27/ext/standard/tests/general_functions/proc_open_descriptor_0_setup_failure.phpt --- php8.4-8.4.26/ext/standard/tests/general_functions/proc_open_descriptor_0_setup_failure.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/general_functions/proc_open_descriptor_0_setup_failure.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +proc_open() closes descriptor 0 when setup fails after pipe allocation +--SKIPIF-- + +--FILE-- + ["pipe", "w"], 1 => ["bogus_type"]], $pipes)); +$fd = fopen("/dev/null", "r"); +var_dump(readlink("/proc/self/fd/0")); +fclose($fd); +PHP; +$process = proc_open([PHP_BINARY, "-n", "-r", $code], [1 => ["pipe", "w"]], $pipes); +echo stream_get_contents($pipes[1]); +fclose($pipes[1]); +var_dump(proc_close($process)); +?> +--EXPECT-- +bool(false) +string(9) "/dev/null" +int(0) diff -Nru php8.4-8.4.26/ext/standard/tests/general_functions/proc_open_socket_descriptor_0_setup_failure.phpt php8.4-8.4.27/ext/standard/tests/general_functions/proc_open_socket_descriptor_0_setup_failure.phpt --- php8.4-8.4.26/ext/standard/tests/general_functions/proc_open_socket_descriptor_0_setup_failure.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/general_functions/proc_open_socket_descriptor_0_setup_failure.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +proc_open() closes descriptor 0 when setup fails after socket allocation +--SKIPIF-- + +--FILE-- + ["socket"], 1 => ["bogus_type"]], $pipes)); +$fd = fopen("/dev/null", "r"); +var_dump(readlink("/proc/self/fd/0")); +fclose($fd); +PHP; +$process = proc_open([PHP_BINARY, "-n", "-r", $code], [1 => ["pipe", "w"]], $pipes); +echo stream_get_contents($pipes[1]); +fclose($pipes[1]); +var_dump(proc_close($process)); +?> +--EXPECT-- +bool(false) +string(9) "/dev/null" +int(0) diff -Nru php8.4-8.4.26/ext/standard/tests/image/iptcembed_reentrant.phpt php8.4-8.4.27/ext/standard/tests/image/iptcembed_reentrant.phpt --- php8.4-8.4.26/ext/standard/tests/image/iptcembed_reentrant.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/image/iptcembed_reentrant.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,34 @@ +--TEST-- +iptcembed() keeps APP13 headers local during reentrant output handling +--FILE-- + +--CLEAN-- + +--EXPECT-- +Nested call: bool(true) +APP13 length: int(30) +Outer payload: string(2) "AA" diff -Nru php8.4-8.4.26/ext/standard/tests/image/oom_getimagesize_cws.inc php8.4-8.4.27/ext/standard/tests/image/oom_getimagesize_cws.inc --- php8.4-8.4.26/ext/standard/tests/image/oom_getimagesize_cws.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/image/oom_getimagesize_cws.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ + 9]); + $chunk = str_repeat('A', 1024 * 1024); + for ($i = 0; $i < 320; $i++) { + fwrite($file, deflate_add( + $deflate, + $chunk, + $i === 319 ? ZLIB_FINISH : ZLIB_NO_FLUSH, + )); + } + fclose($file); +} diff -Nru php8.4-8.4.26/ext/standard/tests/image/oom_getimagesize_cws.phpt php8.4-8.4.27/ext/standard/tests/image/oom_getimagesize_cws.phpt --- php8.4-8.4.26/ext/standard/tests/image/oom_getimagesize_cws.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/image/oom_getimagesize_cws.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +getimagesize() decompression doesn't reach hard limit +--INI-- +memory_limit=128M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/image/oom_getimagesize_xbm.phpt php8.4-8.4.27/ext/standard/tests/image/oom_getimagesize_xbm.phpt --- php8.4-8.4.26/ext/standard/tests/image/oom_getimagesize_xbm.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/image/oom_getimagesize_xbm.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +getimagesize() doesn't reach hard limit on a file without newlines +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/image/oom_getimagesizefromstring_cws.phpt php8.4-8.4.27/ext/standard/tests/image/oom_getimagesizefromstring_cws.phpt --- php8.4-8.4.26/ext/standard/tests/image/oom_getimagesizefromstring_cws.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/image/oom_getimagesizefromstring_cws.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +getimagesizefromstring() decompression doesn't reach hard limit +--INI-- +memory_limit=128M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 134217728 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/serialize/incomplete_class_raw_payload_markers.phpt php8.4-8.4.27/ext/standard/tests/serialize/incomplete_class_raw_payload_markers.phpt --- php8.4-8.4.26/ext/standard/tests/serialize/incomplete_class_raw_payload_markers.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/serialize/incomplete_class_raw_payload_markers.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +serialize() keeps O: for incomplete classes whose properties look like raw C:/E: payloads +--FILE-- + false])); +var_dump($stored === $untrusted); +?> +--EXPECT-- +bool(true) diff -Nru php8.4-8.4.26/ext/standard/tests/streams/bug61115-1.phpt php8.4-8.4.27/ext/standard/tests/streams/bug61115-1.phpt --- php8.4-8.4.26/ext/standard/tests/streams/bug61115-1.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/streams/bug61115-1.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -5,6 +5,9 @@ if (getenv("USE_ZEND_ALLOC") === "0") { die("skip Zend MM disabled"); } +if (PHP_ZTS) { + die("skip No hard limit in ZTS"); +} ?> --FILE-- +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/streams/oom_stream_get_contents.phpt php8.4-8.4.27/ext/standard/tests/streams/oom_stream_get_contents.phpt --- php8.4-8.4.26/ext/standard/tests/streams/oom_stream_get_contents.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/streams/oom_stream_get_contents.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +stream_get_contents() doesn't reach hard limit +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/streams/persistent_stream_context_shutdown.phpt php8.4-8.4.27/ext/standard/tests/streams/persistent_stream_context_shutdown.phpt --- php8.4-8.4.26/ext/standard/tests/streams/persistent_stream_context_shutdown.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/streams/persistent_stream_context_shutdown.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,63 @@ +--TEST-- +Persistent stream contexts created during resource shutdown are detached +--FILE-- + ['pipe', 'r'], + 1 => ['pipe', 'w'], + 2 => ['pipe', 'w'], + ], + $pipes, + ); + fclose($pipes[0]); + stream_get_contents($pipes[1]); + fclose($pipes[1]); + stream_get_contents($pipes[2]); + fclose($pipes[2]); + var_dump(proc_close($process)); + return; +} + +final class LateContextWrapper +{ + public $context; + private string $address; + + public function stream_open($path, $mode, $options, &$opened_path): bool + { + $this->address = substr($path, strlen('late-context://')); + return true; + } + + public function stream_close(): void + { + $context = stream_context_create([ + 'socket' => ['tcp_nodelay' => true], + ]); + stream_socket_client( + $this->address, + $errno, + $error, + 1, + STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, + $context, + ); + } +} + +$server = stream_socket_server('tcp://127.0.0.1:0', $errno, $error); +if (!$server) { + die("server failed: $error ($errno)\n"); +} + +stream_wrapper_register('late-context', LateContextWrapper::class); +$trigger = fopen('late-context://tcp://' . stream_socket_get_name($server, false), 'r'); + +?> +--EXPECT-- +int(0) diff -Nru php8.4-8.4.26/ext/standard/tests/streams/stream_get_line_oom_chunk_size.phpt php8.4-8.4.27/ext/standard/tests/streams/stream_get_line_oom_chunk_size.phpt --- php8.4-8.4.26/ext/standard/tests/streams/stream_get_line_oom_chunk_size.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/streams/stream_get_line_oom_chunk_size.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +stream_get_line() with a large chunk size doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/chunk_split_variation3.phpt php8.4-8.4.27/ext/standard/tests/strings/chunk_split_variation3.phpt --- php8.4-8.4.26/ext/standard/tests/strings/chunk_split_variation3.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/chunk_split_variation3.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -1,24 +1,18 @@ --TEST-- -Test chunk_split() function : usage variations - unexpected large number of chunks +Test chunk_split() function : usage variations - OOM with chunk length larger than str --SKIPIF-- +--INI-- +memory_limit=128M --FILE-- --EXPECTF-- -*** Testing chunk_split() : unexpected large 'end' string argument variation 2 *** -Body generation -Using chunk_split() - -Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d +Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line 5 diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_explode.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_explode.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_explode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_explode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +explode() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_implode.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_implode.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_implode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_implode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +implode() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_levenshtein.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_levenshtein.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_levenshtein.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_levenshtein.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +levenshtein() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_nl2br.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_nl2br.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_nl2br.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_nl2br.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +nl2br() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_setcookie_value.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_setcookie_value.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_setcookie_value.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_setcookie_value.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +setcookie() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_str_getcsv.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_str_getcsv.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_str_getcsv.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_str_getcsv.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +str_getcsv() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Deprecated: str_getcsv(): the $escape parameter must be provided as its default value will change in %s on line %d + +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_str_ireplace.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_str_ireplace.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_str_ireplace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_str_ireplace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +str_ireplace() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_str_replace.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_str_replace.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_str_replace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_str_replace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +str_replace() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_str_split.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_str_split.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_str_split.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_str_split.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +str_split() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_str_word_count.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_str_word_count.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_str_word_count.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_str_word_count.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +str_word_count() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_strtr.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_strtr.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_strtr.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_strtr.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +strtr() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + str_repeat('b', 16)])); +?> +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_substr_replace.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_substr_replace.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_substr_replace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_substr_replace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +substr_replace() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/oom_unpack.phpt php8.4-8.4.27/ext/standard/tests/strings/oom_unpack.phpt --- php8.4-8.4.26/ext/standard/tests/strings/oom_unpack.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/oom_unpack.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +unpack() doesn't reach hard limit +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/sha1_file_stream_error.phpt php8.4-8.4.27/ext/standard/tests/strings/sha1_file_stream_error.phpt --- php8.4-8.4.26/ext/standard/tests/strings/sha1_file_stream_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/sha1_file_stream_error.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,77 @@ +--TEST-- +sha1_file() returns false when a stream read fails +--FILE-- +mode = substr($path, strlen('test://')); + + return true; + } + + public function stream_read(int $count): string|false + { + $position = $this->position++; + if ($this->mode === 'error') { + return false; + } + if ($this->mode === 'empty' || $this->mode === 'stalled') { + return ''; + } + if ($this->mode === 'short') { + return substr('prefix', $position * 2, 2); + } + if ($position === 0) { + return 'prefix'; + } + + return $this->mode === 'prefix-error' ? false : ''; + } + + public function stream_eof(): bool + { + return $this->mode === 'empty' + || ($this->mode === 'eof' && $this->position > 1) + || ($this->mode === 'short' && $this->position >= 3); + } +} + +stream_wrapper_register('test', TestStream::class); + +foreach (['error', 'prefix-error', 'stalled', 'prefix-stalled', 'empty', 'eof', 'short'] as $mode) { + echo "$mode: "; + var_dump(sha1_file("test://$mode")); + echo "$mode (raw): "; + $result = sha1_file("test://$mode", true); + var_dump(is_string($result) ? bin2hex($result) : $result); +} + +echo "directory: "; +var_dump(@sha1_file(__DIR__)); +echo "directory (raw): "; +$result = @sha1_file(__DIR__, true); +var_dump(is_string($result) ? bin2hex($result) : $result); +?> +--EXPECT-- +error: bool(false) +error (raw): bool(false) +prefix-error: bool(false) +prefix-error (raw): bool(false) +stalled: bool(false) +stalled (raw): bool(false) +prefix-stalled: bool(false) +prefix-stalled (raw): bool(false) +empty: string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +empty (raw): string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +eof: string(40) "b4ebfe34d0fa97f0dd2bb1234fad8f59805f4e8d" +eof (raw): string(40) "b4ebfe34d0fa97f0dd2bb1234fad8f59805f4e8d" +short: string(40) "b4ebfe34d0fa97f0dd2bb1234fad8f59805f4e8d" +short (raw): string(40) "b4ebfe34d0fa97f0dd2bb1234fad8f59805f4e8d" +directory: bool(false) +directory (raw): bool(false) diff -Nru php8.4-8.4.26/ext/standard/tests/strings/str_pad_variation1.phpt php8.4-8.4.27/ext/standard/tests/strings/str_pad_variation1.phpt --- php8.4-8.4.26/ext/standard/tests/strings/str_pad_variation1.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/str_pad_variation1.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -33,4 +33,4 @@ *** Testing str_pad() function: with large value for for 'pad_length' argument *** str_pad(): Argument #2 ($length) must be of type int, float given -Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d +Fatal error: Allowed memory size of 134217728 bytes exhausted%s(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/standard/tests/strings/wordwrap_memory_limit_002.phpt php8.4-8.4.27/ext/standard/tests/strings/wordwrap_memory_limit_002.phpt --- php8.4-8.4.26/ext/standard/tests/strings/wordwrap_memory_limit_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/wordwrap_memory_limit_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +wordwrap() OOM - single character break +--SKIPIF-- + +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted%s(tried to allocate %d bytes) in %s on line 4 diff -Nru php8.4-8.4.26/ext/standard/tests/strings/wordwrap_memory_limit_003.phpt php8.4-8.4.27/ext/standard/tests/strings/wordwrap_memory_limit_003.phpt --- php8.4-8.4.26/ext/standard/tests/strings/wordwrap_memory_limit_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/wordwrap_memory_limit_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +wordwrap() OOM - multi character break +--SKIPIF-- + +--INI-- +memory_limit=10M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted%s(tried to allocate %d bytes) in %s on line 4 diff -Nru php8.4-8.4.26/ext/standard/tests/strings/wordwrap_memory_limit_004.phpt php8.4-8.4.27/ext/standard/tests/strings/wordwrap_memory_limit_004.phpt --- php8.4-8.4.26/ext/standard/tests/strings/wordwrap_memory_limit_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/wordwrap_memory_limit_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +wordwrap() OOM - extend +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted%s(tried to allocate %d bytes) in %s on line 6 diff -Nru php8.4-8.4.26/ext/standard/tests/strings/wordwrap_trailing_break.phpt php8.4-8.4.27/ext/standard/tests/strings/wordwrap_trailing_break.phpt --- php8.4-8.4.26/ext/standard/tests/strings/wordwrap_trailing_break.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/standard/tests/strings/wordwrap_trailing_break.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +wordwrap() recognizes an existing break at the end of the string +--FILE-- + +--EXPECT-- +"abc\n" +"ab cd\n" +"abc\nd\n" +"abc\nabc\n" +"abc-" +"abc\r\n" +"\r\n" +"ab cd\r\n" diff -Nru php8.4-8.4.26/ext/standard/url_scanner_ex.c php8.4-8.4.27/ext/standard/url_scanner_ex.c --- php8.4-8.4.26/ext/standard/url_scanner_ex.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/url_scanner_ex.c 2026-10-19 14:38:59.000000000 +0000 @@ -1028,6 +1028,13 @@ smart_str_free(&ctx->attr_val); } +void php_url_scanner_early_rinit(void) +{ + /* See php_basic_early_rinit() */ + php_url_scanner_ex_activate(1); + php_url_scanner_ex_activate(0); +} + static inline void php_url_scanner_session_handler_impl(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode, bool is_session) { size_t len; diff -Nru php8.4-8.4.26/ext/standard/url_scanner_ex.h php8.4-8.4.27/ext/standard/url_scanner_ex.h --- php8.4-8.4.26/ext/standard/url_scanner_ex.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/url_scanner_ex.h 2026-10-19 14:38:59.000000000 +0000 @@ -22,6 +22,7 @@ PHP_RINIT_FUNCTION(url_scanner_ex); PHP_RSHUTDOWN_FUNCTION(url_scanner_ex); +void php_url_scanner_early_rinit(void); PHPAPI char *php_url_scanner_adapt_single_url(const char *url, size_t urllen, const char *name, const char *value, size_t *newlen, bool encode); PHPAPI zend_result php_url_scanner_add_session_var(const char *name, size_t name_len, const char *value, size_t value_len, bool encode); diff -Nru php8.4-8.4.26/ext/standard/url_scanner_ex.re php8.4-8.4.27/ext/standard/url_scanner_ex.re --- php8.4-8.4.26/ext/standard/url_scanner_ex.re 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/url_scanner_ex.re 2026-10-19 14:38:59.000000000 +0000 @@ -683,6 +683,13 @@ smart_str_free(&ctx->attr_val); } +void php_url_scanner_early_rinit(void) +{ + /* See php_basic_early_rinit() */ + php_url_scanner_ex_activate(1); + php_url_scanner_ex_activate(0); +} + static inline void php_url_scanner_session_handler_impl(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode, bool is_session) { size_t len; diff -Nru php8.4-8.4.26/ext/standard/var.c php8.4-8.4.27/ext/standard/var.c --- php8.4-8.4.26/ext/standard/var.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/var.c 2026-10-19 14:38:59.000000000 +0000 @@ -35,6 +35,9 @@ struct php_serialize_data { HashTable ht; uint32_t n; + /* Write back the C: and E: payloads kept by php_var_unserialize() in + * incomplete_classes_only mode, see php_var_serialize_incomplete_raw() */ + bool incomplete_classes_only; }; #define COMMON (is_ref ? "&" : "") @@ -848,6 +851,56 @@ } /* }}} */ +static bool php_var_serialize_incomplete_raw(smart_str *buf, zval *struc) +{ + HashTable *props = Z_OBJ_P(struc)->properties; + zend_string *class_name; + zval *member; + + if (!props) { + return false; + } + + member = zend_hash_str_find(props, MAGIC_MEMBER_SERIALIZED, sizeof(MAGIC_MEMBER_SERIALIZED) - 1); + if (member && Z_TYPE_P(member) == IS_STRING) { + class_name = php_lookup_class_name(Z_OBJ_P(struc)); + if (!class_name) { + return false; + } + smart_str_appendl(buf, "C:", 2); + smart_str_append_unsigned(buf, ZSTR_LEN(class_name)); + smart_str_appendl(buf, ":\"", 2); + smart_str_append(buf, class_name); + smart_str_appendl(buf, "\":", 2); + smart_str_append_unsigned(buf, Z_STRLEN_P(member)); + smart_str_appendl(buf, ":{", 2); + smart_str_append(buf, Z_STR_P(member)); + smart_str_appendc(buf, '}'); + zend_string_release_ex(class_name, 0); + return true; + } + + member = zend_hash_str_find(props, MAGIC_MEMBER_ENUM_CASE, sizeof(MAGIC_MEMBER_ENUM_CASE) - 1); + if (member && Z_TYPE_P(member) == IS_STRING) { + class_name = php_lookup_class_name(Z_OBJ_P(struc)); + if (!class_name) { + return false; + } + smart_str_appendl(buf, "E:", 2); + smart_str_append_unsigned(buf, ZSTR_LEN(class_name) + strlen(":") + Z_STRLEN_P(member)); + smart_str_appendl(buf, ":\"", 2); + smart_str_append(buf, class_name); + smart_str_appendc(buf, ':'); + smart_str_append(buf, Z_STR_P(member)); + smart_str_appendl(buf, "\";", 2); + zend_string_release_ex(class_name, 0); + return true; + } + + /* Other incomplete classes are handled using the normal path */ + return false; +} + static HashTable* php_var_serialize_call_sleep(zend_object *obj, zend_function *fn) /* {{{ */ { zval retval; @@ -1134,6 +1187,10 @@ bool incomplete_class; uint32_t count; + if (ce == PHP_IC_ENTRY && var_hash->incomplete_classes_only && php_var_serialize_incomplete_raw(buf, struc)) { + return; + } + if (ce->ce_flags & ZEND_ACC_NOT_SERIALIZABLE) { zend_throw_exception_ex(NULL, 0, "Serialization of '%s' is not allowed", ZSTR_VAL(ce->name)); @@ -1350,6 +1407,7 @@ d = emalloc(sizeof(struct php_serialize_data)); zend_hash_init(&d->ht, 16, NULL, ZVAL_PTR_DTOR, 0); d->n = 0; + d->incomplete_classes_only = false; if (!BG(serialize_lock)) { BG(serialize).data = d; BG(serialize).level = 1; @@ -1361,6 +1419,10 @@ return d; } +PHPAPI void php_var_serialize_set_incomplete_classes_only(php_serialize_data_t d, bool incomplete_classes_only) { + d->incomplete_classes_only = incomplete_classes_only; +} + PHPAPI void php_var_serialize_destroy(php_serialize_data_t d) { /* fprintf(stderr, "SERIALIZE_DESTROY == lock: %u, level: %u\n", BG(serialize_lock), BG(serialize).level); */ if (BG(serialize_lock) || BG(serialize).level == 1) { diff -Nru php8.4-8.4.26/ext/standard/var_unserializer.c php8.4-8.4.27/ext/standard/var_unserializer.c --- php8.4-8.4.26/ext/standard/var_unserializer.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/var_unserializer.c 2026-10-19 14:38:59.000000000 +0000 @@ -55,6 +55,11 @@ HashTable *ref_props; zend_long cur_depth; zend_long max_depth; + /* Represent every object as __PHP_Incomplete_Class, without resolving its + * class: no autoloading, no unserialize_callback_func, no __wakeup() or + * __unserialize(). O:, C: and E: values all serialize back to the same + * bytes. */ + bool incomplete_classes_only; var_entries entries; }; @@ -69,6 +74,7 @@ d->ref_props = NULL; d->cur_depth = 0; d->max_depth = BG(unserialize_max_depth); + d->incomplete_classes_only = false; d->entries.used_slots = 0; d->entries.next = NULL; if (!BG(serialize_lock)) { @@ -100,6 +106,10 @@ d->allowed_classes = classes; } +PHPAPI void php_var_unserialize_set_incomplete_classes_only(php_unserialize_data_t d, bool incomplete_classes_only) { + d->incomplete_classes_only = incomplete_classes_only; +} + PHPAPI void php_var_unserialize_set_max_depth(php_unserialize_data_t d, zend_long max_depth) { d->max_depth = max_depth; } @@ -276,7 +286,7 @@ fci_cache.called_scope = fci.object->ce; BG(serialize_lock)++; - if (zend_call_function(&fci, &fci_cache) == FAILURE || Z_ISUNDEF(retval)) { + if (zend_call_function(&fci, &fci_cache) == FAILURE || Z_ISUNDEF(retval) || ZEND_HAS_OOM()) { delayed_call_failed = 1; GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED); } @@ -295,7 +305,7 @@ BG(serialize_lock)++; zend_call_known_instance_method_with_1_params( Z_OBJCE_P(zv)->__unserialize, Z_OBJ_P(zv), NULL, ¶m); - if (EG(exception)) { + if (EG(exception) || ZEND_HAS_OOM()) { delayed_call_failed = 1; GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED); } @@ -324,7 +334,10 @@ static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen) { size_t i, j; - zend_string *str = zend_string_safe_alloc(1, len, 0, 0); + zend_string *str = zend_string_falloc(len, 0, /* fallible */ true); + if (UNEXPECTED(!str)) { + return NULL; + } unsigned char *end = *(unsigned char **)p+maxlen; for (i = 0; i < len; i++) { @@ -511,6 +524,10 @@ (*p)--; goto failure; } + + if (ZEND_HAS_OOM()) { + goto failure; + } } if (var_hash) { @@ -566,6 +583,17 @@ } +/* The members that incomplete_classes_only mode writes itself: the class name of + * every object, and the payload kept for C: and E: entries. Data that already + * carries one of them cannot be told apart from that bookkeeping, so it is + * rejected rather than silently overwritten. */ +static zend_always_inline bool is_incomplete_class_reserved_member(const zend_string *name) +{ + return zend_string_equals_literal(name, MAGIC_MEMBER) + || zend_string_equals_literal(name, MAGIC_MEMBER_SERIALIZED) + || zend_string_equals_literal(name, MAGIC_MEMBER_ENUM_CASE); +} + static zend_always_inline int process_nested_object_data(UNSERIALIZE_PARAMETER, HashTable *ht, zend_long elements, zend_object *obj) { if (var_hash) { @@ -591,6 +619,13 @@ goto failure; } + if (UNEXPECTED(var_hash && (*var_hash)->incomplete_classes_only) + && Z_TYPE(key) == IS_STRING + && UNEXPECTED(is_incomplete_class_reserved_member(Z_STR(key)))) { + zval_ptr_dtor(&key); + goto failure; + } + if (EXPECTED(Z_TYPE(key) == IS_STRING)) { string_key: data = zend_hash_find(ht, Z_STR(key)); @@ -706,6 +741,10 @@ (*p)--; goto failure; } + + if (ZEND_HAS_OOM()) { + goto failure; + } } if (var_hash) { @@ -730,7 +769,7 @@ return 1; } -static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) +static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce, bool keep_payload) { zend_long datalen; @@ -764,13 +803,28 @@ return 0; } - if (ce->unserialize == NULL) { + if (keep_payload) { + /* The class was not resolved (see php_var_unserialize_set_incomplete_classes_only()): + * keep the payload verbatim, so that the object serializes back to the same bytes. */ + zval payload; + + ZEND_ASSERT(ce == PHP_IC_ENTRY); + if (UNEXPECTED(!ZVAL_FSTRINGL(&payload, (const char *) *p, datalen))) { + return 0; + } + object_init_ex(rval, ce); + zend_hash_str_update(Z_OBJPROP_P(rval), MAGIC_MEMBER_SERIALIZED, sizeof(MAGIC_MEMBER_SERIALIZED) - 1, &payload); + } else if (ce->unserialize == NULL) { zend_error(E_WARNING, "Class %s has no unserializer", ZSTR_VAL(ce->name)); object_init_ex(rval, ce); } else if (ce->unserialize(rval, ce, (const unsigned char*)*p, datalen, (zend_unserialize_data *)var_hash) != SUCCESS) { return 0; } + if (ZEND_HAS_OOM()) { + return 0; + } + (*p) += datalen + 1; /* +1 for '}' */ return 1; } @@ -790,9 +844,10 @@ return 0; } - array_init_size(&ary, elements); /* Avoid reallocation due to packed -> mixed conversion. */ - zend_hash_real_init_mixed(Z_ARRVAL(ary)); + if (UNEXPECTED(!array_finit_size_mixed(&ary, elements))) { + return 0; + } if (!process_nested_array_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL(ary), elements)) { ZVAL_DEREF(rval); GC_ADD_FLAGS(Z_OBJ_P(rval), IS_OBJ_DESTRUCTOR_CALLED); @@ -820,7 +875,9 @@ return 0; } - zend_hash_extend(ht, zend_hash_num_elements(ht) + elements, HT_IS_PACKED(ht)); + if (UNEXPECTED(zend_hash_fextend(ht, zend_hash_num_elements(ht) + elements, HT_IS_PACKED(ht)) == FAILURE)) { + return 0; + } if (!process_nested_object_data(UNSERIALIZE_PASSTHRU, ht, elements, Z_OBJ_P(rval))) { if (has_wakeup) { ZVAL_DEREF(rval); @@ -1427,11 +1484,25 @@ return 0; } - class_name = zend_string_init_interned(str, len, 0); + class_name = zend_string_finit_existing_interned(str, len, /* permanent */ false, /* fallible */ true); + if (UNEXPECTED(!class_name)) { + return 0; + } do { zend_string *lc_name; + if ((*var_hash)->incomplete_classes_only) { + /* Do not look the class up at all, so that no user code can run. */ + if (!zend_is_valid_class_name(class_name)) { + zend_string_release_ex(class_name, 0); + return 0; + } + incomplete_class = 1; + ce = PHP_IC_ENTRY; + break; + } + if (!(*var_hash)->allowed_classes && ZSTR_HAS_CE_CACHE(class_name)) { ce = ZSTR_GET_CE_CACHE(class_name); if (ce) { @@ -1439,7 +1510,11 @@ } } - lc_name = zend_string_tolower(class_name); + lc_name = zend_string_ftolower(class_name); + if (UNEXPECTED(!lc_name)) { + zend_string_release_ex(class_name, 0); + return 0; + } if(!unserialize_allowed_class(lc_name, var_hash)) { zend_string_release_ex(lc_name, 0); if (!zend_is_valid_class_name(class_name)) { @@ -1533,7 +1608,7 @@ if (custom_object) { int ret; - ret = object_custom(UNSERIALIZE_PASSTHRU, ce); + ret = object_custom(UNSERIALIZE_PASSTHRU, ce, (*var_hash)->incomplete_classes_only); if (ret && incomplete_class) { php_store_class_name(rval, class_name); @@ -1585,6 +1660,11 @@ return 0; } + if (ZEND_HAS_OOM()) { + zend_string_release_ex(class_name, 0); + return 0; + } + if (incomplete_class) { php_store_class_name(rval, class_name); } @@ -1630,6 +1710,25 @@ goto fail; } + if ((*var_hash)->incomplete_classes_only) { + /* Do not load the enum: keep the case name, so that the value serializes + * back to the same bytes. */ + zval case_zv; + + YYCURSOR += 2; + *p = YYCURSOR; + + object_init_ex(rval, PHP_IC_ENTRY); + if (ZEND_HAS_OOM()) { + goto fail; + } + php_store_class_name(rval, enum_name); + ZVAL_STR(&case_zv, case_name); + zend_hash_str_update(Z_OBJPROP_P(rval), MAGIC_MEMBER_ENUM_CASE, sizeof(MAGIC_MEMBER_ENUM_CASE) - 1, &case_zv); + zend_string_release_ex(enum_name, 0); + return 1; + } + zend_class_entry *ce = zend_lookup_class(enum_name); if (!ce) { php_error_docref(NULL, E_WARNING, "Class '%s' not found", ZSTR_VAL(enum_name)); @@ -1724,10 +1823,11 @@ } if (elements) { - array_init_size(rval, elements); /* we can't convert from packed to hash during unserialization, because reference to some zvals might be kept in var_hash (to support references) */ - zend_hash_real_init_mixed(Z_ARRVAL_P(rval)); + if (UNEXPECTED(!array_finit_size_mixed(rval, elements))) { + return 0; + } } else { ZVAL_EMPTY_ARRAY(rval); return finish_nested_data(UNSERIALIZE_PASSTHRU); @@ -1791,12 +1891,21 @@ YYCURSOR += 2; *p = YYCURSOR; + zend_string *zstr; + if (!var_hash) { /* Array or object key unserialization */ - ZVAL_STR(rval, zend_string_init_existing_interned(str, len, 0)); + zstr = zend_string_finit_existing_interned(str, len, /* permanent */ false, /* fallible */ true); } else { - ZVAL_STRINGL_FAST(rval, str, len); + zstr = zend_string_finit_fast(str, len, /* fallible */ true); } + + if (UNEXPECTED(!zstr)) { + return 0; + } + + ZVAL_STR(rval, zstr); + return 1; } yy67: diff -Nru php8.4-8.4.26/ext/standard/var_unserializer.re php8.4-8.4.27/ext/standard/var_unserializer.re --- php8.4-8.4.26/ext/standard/var_unserializer.re 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/standard/var_unserializer.re 2026-10-19 14:38:59.000000000 +0000 @@ -54,6 +54,11 @@ HashTable *ref_props; zend_long cur_depth; zend_long max_depth; + /* Represent every object as __PHP_Incomplete_Class, without resolving its + * class: no autoloading, no unserialize_callback_func, no __wakeup() or + * __unserialize(). O:, C: and E: values all serialize back to the same + * bytes. */ + bool incomplete_classes_only; var_entries entries; }; @@ -68,6 +73,7 @@ d->ref_props = NULL; d->cur_depth = 0; d->max_depth = BG(unserialize_max_depth); + d->incomplete_classes_only = false; d->entries.used_slots = 0; d->entries.next = NULL; if (!BG(serialize_lock)) { @@ -99,6 +105,10 @@ d->allowed_classes = classes; } +PHPAPI void php_var_unserialize_set_incomplete_classes_only(php_unserialize_data_t d, bool incomplete_classes_only) { + d->incomplete_classes_only = incomplete_classes_only; +} + PHPAPI void php_var_unserialize_set_max_depth(php_unserialize_data_t d, zend_long max_depth) { d->max_depth = max_depth; } @@ -275,7 +285,7 @@ fci_cache.called_scope = fci.object->ce; BG(serialize_lock)++; - if (zend_call_function(&fci, &fci_cache) == FAILURE || Z_ISUNDEF(retval)) { + if (zend_call_function(&fci, &fci_cache) == FAILURE || Z_ISUNDEF(retval) || ZEND_HAS_OOM()) { delayed_call_failed = 1; GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED); } @@ -294,7 +304,7 @@ BG(serialize_lock)++; zend_call_known_instance_method_with_1_params( Z_OBJCE_P(zv)->__unserialize, Z_OBJ_P(zv), NULL, ¶m); - if (EG(exception)) { + if (EG(exception) || ZEND_HAS_OOM()) { delayed_call_failed = 1; GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED); } @@ -323,7 +333,10 @@ static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen) { size_t i, j; - zend_string *str = zend_string_safe_alloc(1, len, 0, 0); + zend_string *str = zend_string_falloc(len, 0, /* fallible */ true); + if (UNEXPECTED(!str)) { + return NULL; + } unsigned char *end = *(unsigned char **)p+maxlen; for (i = 0; i < len; i++) { @@ -517,6 +530,10 @@ (*p)--; goto failure; } + + if (ZEND_HAS_OOM()) { + goto failure; + } } if (var_hash) { @@ -572,6 +589,17 @@ } +/* The members that incomplete_classes_only mode writes itself: the class name of + * every object, and the payload kept for C: and E: entries. Data that already + * carries one of them cannot be told apart from that bookkeeping, so it is + * rejected rather than silently overwritten. */ +static zend_always_inline bool is_incomplete_class_reserved_member(const zend_string *name) +{ + return zend_string_equals_literal(name, MAGIC_MEMBER) + || zend_string_equals_literal(name, MAGIC_MEMBER_SERIALIZED) + || zend_string_equals_literal(name, MAGIC_MEMBER_ENUM_CASE); +} + static zend_always_inline int process_nested_object_data(UNSERIALIZE_PARAMETER, HashTable *ht, zend_long elements, zend_object *obj) { if (var_hash) { @@ -597,6 +625,13 @@ goto failure; } + if (UNEXPECTED(var_hash && (*var_hash)->incomplete_classes_only) + && Z_TYPE(key) == IS_STRING + && UNEXPECTED(is_incomplete_class_reserved_member(Z_STR(key)))) { + zval_ptr_dtor(&key); + goto failure; + } + if (EXPECTED(Z_TYPE(key) == IS_STRING)) { string_key: data = zend_hash_find(ht, Z_STR(key)); @@ -712,6 +747,10 @@ (*p)--; goto failure; } + + if (ZEND_HAS_OOM()) { + goto failure; + } } if (var_hash) { @@ -736,7 +775,7 @@ return 1; } -static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) +static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce, bool keep_payload) { zend_long datalen; @@ -770,13 +809,28 @@ return 0; } - if (ce->unserialize == NULL) { + if (keep_payload) { + /* The class was not resolved (see php_var_unserialize_set_incomplete_classes_only()): + * keep the payload verbatim, so that the object serializes back to the same bytes. */ + zval payload; + + ZEND_ASSERT(ce == PHP_IC_ENTRY); + if (UNEXPECTED(!ZVAL_FSTRINGL(&payload, (const char *) *p, datalen))) { + return 0; + } + object_init_ex(rval, ce); + zend_hash_str_update(Z_OBJPROP_P(rval), MAGIC_MEMBER_SERIALIZED, sizeof(MAGIC_MEMBER_SERIALIZED) - 1, &payload); + } else if (ce->unserialize == NULL) { zend_error(E_WARNING, "Class %s has no unserializer", ZSTR_VAL(ce->name)); object_init_ex(rval, ce); } else if (ce->unserialize(rval, ce, (const unsigned char*)*p, datalen, (zend_unserialize_data *)var_hash) != SUCCESS) { return 0; } + if (ZEND_HAS_OOM()) { + return 0; + } + (*p) += datalen + 1; /* +1 for '}' */ return 1; } @@ -796,9 +850,10 @@ return 0; } - array_init_size(&ary, elements); /* Avoid reallocation due to packed -> mixed conversion. */ - zend_hash_real_init_mixed(Z_ARRVAL(ary)); + if (UNEXPECTED(!array_finit_size_mixed(&ary, elements))) { + return 0; + } if (!process_nested_array_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL(ary), elements)) { ZVAL_DEREF(rval); GC_ADD_FLAGS(Z_OBJ_P(rval), IS_OBJ_DESTRUCTOR_CALLED); @@ -826,7 +881,9 @@ return 0; } - zend_hash_extend(ht, zend_hash_num_elements(ht) + elements, HT_IS_PACKED(ht)); + if (UNEXPECTED(zend_hash_fextend(ht, zend_hash_num_elements(ht) + elements, HT_IS_PACKED(ht)) == FAILURE)) { + return 0; + } if (!process_nested_object_data(UNSERIALIZE_PASSTHRU, ht, elements, Z_OBJ_P(rval))) { if (has_wakeup) { ZVAL_DEREF(rval); @@ -1049,12 +1106,21 @@ YYCURSOR += 2; *p = YYCURSOR; + zend_string *zstr; + if (!var_hash) { /* Array or object key unserialization */ - ZVAL_STR(rval, zend_string_init_existing_interned(str, len, 0)); + zstr = zend_string_finit_existing_interned(str, len, /* permanent */ false, /* fallible */ true); } else { - ZVAL_STRINGL_FAST(rval, str, len); + zstr = zend_string_finit_fast(str, len, /* fallible */ true); + } + + if (UNEXPECTED(!zstr)) { + return 0; } + + ZVAL_STR(rval, zstr); + return 1; } @@ -1106,10 +1172,11 @@ } if (elements) { - array_init_size(rval, elements); /* we can't convert from packed to hash during unserialization, because reference to some zvals might be kept in var_hash (to support references) */ - zend_hash_real_init_mixed(Z_ARRVAL_P(rval)); + if (UNEXPECTED(!array_finit_size_mixed(rval, elements))) { + return 0; + } } else { ZVAL_EMPTY_ARRAY(rval); return finish_nested_data(UNSERIALIZE_PASSTHRU); @@ -1182,11 +1249,25 @@ return 0; } - class_name = zend_string_init_interned(str, len, 0); + class_name = zend_string_finit_existing_interned(str, len, /* permanent */ false, /* fallible */ true); + if (UNEXPECTED(!class_name)) { + return 0; + } do { zend_string *lc_name; + if ((*var_hash)->incomplete_classes_only) { + /* Do not look the class up at all, so that no user code can run. */ + if (!zend_is_valid_class_name(class_name)) { + zend_string_release_ex(class_name, 0); + return 0; + } + incomplete_class = 1; + ce = PHP_IC_ENTRY; + break; + } + if (!(*var_hash)->allowed_classes && ZSTR_HAS_CE_CACHE(class_name)) { ce = ZSTR_GET_CE_CACHE(class_name); if (ce) { @@ -1194,7 +1275,11 @@ } } - lc_name = zend_string_tolower(class_name); + lc_name = zend_string_ftolower(class_name); + if (UNEXPECTED(!lc_name)) { + zend_string_release_ex(class_name, 0); + return 0; + } if(!unserialize_allowed_class(lc_name, var_hash)) { zend_string_release_ex(lc_name, 0); if (!zend_is_valid_class_name(class_name)) { @@ -1288,7 +1373,7 @@ if (custom_object) { int ret; - ret = object_custom(UNSERIALIZE_PASSTHRU, ce); + ret = object_custom(UNSERIALIZE_PASSTHRU, ce, (*var_hash)->incomplete_classes_only); if (ret && incomplete_class) { php_store_class_name(rval, class_name); @@ -1340,6 +1425,11 @@ return 0; } + if (ZEND_HAS_OOM()) { + zend_string_release_ex(class_name, 0); + return 0; + } + if (incomplete_class) { php_store_class_name(rval, class_name); } @@ -1384,6 +1474,25 @@ goto fail; } + if ((*var_hash)->incomplete_classes_only) { + /* Do not load the enum: keep the case name, so that the value serializes + * back to the same bytes. */ + zval case_zv; + + YYCURSOR += 2; + *p = YYCURSOR; + + object_init_ex(rval, PHP_IC_ENTRY); + if (ZEND_HAS_OOM()) { + goto fail; + } + php_store_class_name(rval, enum_name); + ZVAL_STR(&case_zv, case_name); + zend_hash_str_update(Z_OBJPROP_P(rval), MAGIC_MEMBER_ENUM_CASE, sizeof(MAGIC_MEMBER_ENUM_CASE) - 1, &case_zv); + zend_string_release_ex(enum_name, 0); + return 1; + } + zend_class_entry *ce = zend_lookup_class(enum_name); if (!ce) { php_error_docref(NULL, E_WARNING, "Class '%s' not found", ZSTR_VAL(enum_name)); diff -Nru php8.4-8.4.26/ext/tidy/tests/reparse_node.phpt php8.4-8.4.27/ext/tidy/tests/reparse_node.phpt --- php8.4-8.4.26/ext/tidy/tests/reparse_node.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/tidy/tests/reparse_node.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,66 @@ +--TEST-- +tidyNode objects are invalid after reparsing their document +--EXTENSIONS-- +tidy +--FILE-- +hasChildren(); + echo "unowned node: no error\n"; +} catch (Error $e) { + echo 'unowned node: ', $e::class, ': ', $e->getMessage(), "\n"; +} + +$tidy = tidy_parse_string('

one

two

'); +$node = $tidy->body()->child[0]; +var_dump($node->isHtml()); +var_dump($node->hasSiblings()); + +$tidy->parseString('

three

'); + +$operations = [ + 'string cast' => static fn() => (string) $node, + 'hasChildren' => static fn() => $node->hasChildren(), + 'hasSiblings' => static fn() => $node->hasSiblings(), + 'isComment' => static fn() => $node->isComment(), + 'isHtml' => static fn() => $node->isHtml(), + 'isText' => static fn() => $node->isText(), + 'isJste' => static fn() => $node->isJste(), + 'isAsp' => static fn() => $node->isAsp(), + 'isPhp' => static fn() => $node->isPhp(), + 'getParent' => static fn() => $node->getParent(), + 'getPreviousSibling' => static fn() => $node->getPreviousSibling(), + 'getNextSibling' => static fn() => $node->getNextSibling(), +]; + +foreach ($operations as $operation => $callback) { + try { + $callback(); + echo $operation, ": no error\n"; + } catch (Error $e) { + echo $operation, ': ', $e::class, ': ', $e->getMessage(), "\n"; + } +} + +var_dump($tidy->body()->child[0]->isHtml()); + +?> +--EXPECT-- +unowned node: Error: tidyNode object is not initialized +bool(true) +bool(true) +string cast: Error: tidyNode object is no longer valid after its document was reparsed +hasChildren: Error: tidyNode object is no longer valid after its document was reparsed +hasSiblings: Error: tidyNode object is no longer valid after its document was reparsed +isComment: Error: tidyNode object is no longer valid after its document was reparsed +isHtml: Error: tidyNode object is no longer valid after its document was reparsed +isText: Error: tidyNode object is no longer valid after its document was reparsed +isJste: Error: tidyNode object is no longer valid after its document was reparsed +isAsp: Error: tidyNode object is no longer valid after its document was reparsed +isPhp: Error: tidyNode object is no longer valid after its document was reparsed +getParent: Error: tidyNode object is no longer valid after its document was reparsed +getPreviousSibling: Error: tidyNode object is no longer valid after its document was reparsed +getNextSibling: Error: tidyNode object is no longer valid after its document was reparsed +bool(true) diff -Nru php8.4-8.4.26/ext/tidy/tidy.c php8.4-8.4.27/ext/tidy/tidy.c --- php8.4-8.4.26/ext/tidy/tidy.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/tidy/tidy.c 2026-10-19 14:38:59.000000000 +0000 @@ -76,6 +76,11 @@ } \ obj = Z_TIDY_P(object); \ +#define TIDY_FETCH_VALID_NODE \ + TIDY_FETCH_ONLY_OBJECT; \ + if (tidy_node_validate(obj) != SUCCESS) { \ + RETURN_THROWS(); \ + } #define TIDY_SET_DEFAULT_CONFIG(_doc) \ if (TG(default_config) && TG(default_config)[0]) { \ php_tidy_load_config(_doc, TG(default_config)); \ @@ -102,12 +107,14 @@ TidyDoc doc; TidyBuffer *errbuf; unsigned int ref_count; + size_t parse_generation; unsigned int initialized:1; }; struct _PHPTidyObj { TidyNode node; tidy_obj_type type; + size_t node_generation; PHPTidyDoc *ptdoc; zend_object std; }; @@ -302,12 +309,28 @@ return FAILURE; } +static zend_result tidy_node_validate(const PHPTidyObj *obj) +{ + if (!obj->ptdoc) { + zend_throw_error(NULL, "tidyNode object is not initialized"); + return FAILURE; + } + + if (obj->node_generation != obj->ptdoc->parse_generation) { + zend_throw_error(NULL, "tidyNode object is no longer valid after its document was reparsed"); + return FAILURE; + } + + return SUCCESS; +} + static void tidy_create_node_object(zval *zv, PHPTidyDoc *ptdoc, TidyNode node) { tidy_instantiate(tidy_ce_node, zv); PHPTidyObj *newobj = Z_TIDY_P(zv); newobj->node = node; newobj->type = is_node; + newobj->node_generation = ptdoc->parse_generation; newobj->ptdoc = ptdoc; newobj->ptdoc->ref_count++; tidy_add_node_default_properties(newobj); @@ -465,6 +488,7 @@ intern->ptdoc = emalloc(sizeof(PHPTidyDoc)); intern->ptdoc->doc = tidyCreate(); intern->ptdoc->ref_count = 1; + intern->ptdoc->parse_generation = 0; intern->ptdoc->initialized = 0; intern->ptdoc->errbuf = emalloc(sizeof(TidyBuffer)); tidyBufInit(intern->ptdoc->errbuf); @@ -565,6 +589,9 @@ case IS_STRING: obj = php_tidy_fetch_object(in); + if (tidy_node_validate(obj) != SUCCESS) { + return FAILURE; + } tidyBufInit(&buf); if (obj->ptdoc && tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf)) { ZVAL_STRINGL(out, (const char *) buf.bp, buf.size-1); @@ -621,6 +648,10 @@ zval attribute, children, temp; const char *name; + if (tidy_node_validate(obj) != SUCCESS) { + return; + } + tidyBufInit(&buf); (void) tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); @@ -845,6 +876,7 @@ obj->ptdoc->initialized = 1; tidyBufInit(&buf); + obj->ptdoc->parse_generation++; tidyBufAttach(&buf, (byte *) string, len); if (tidyParseBuffer(obj->ptdoc->doc, &buf) < 0) { php_error_docref(NULL, E_WARNING, "%s", obj->ptdoc->errbuf->bp); @@ -1522,7 +1554,7 @@ /* {{{ Returns true if this node has children */ PHP_METHOD(tidyNode, hasChildren) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (tidyGetChild(obj->node)) { RETURN_TRUE; @@ -1535,7 +1567,7 @@ /* {{{ Returns true if this node has siblings */ PHP_METHOD(tidyNode, hasSiblings) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (obj->node && tidyGetNext(obj->node)) { RETURN_TRUE; @@ -1548,7 +1580,7 @@ /* {{{ Returns true if this node represents a comment */ PHP_METHOD(tidyNode, isComment) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (tidyNodeGetType(obj->node) == TidyNode_Comment) { RETURN_TRUE; @@ -1561,7 +1593,7 @@ /* {{{ Returns true if this node is part of a HTML document */ PHP_METHOD(tidyNode, isHtml) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; switch (tidyNodeGetType(obj->node)) { case TidyNode_Start: @@ -1577,7 +1609,7 @@ /* {{{ Returns true if this node represents text (no markup) */ PHP_METHOD(tidyNode, isText) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (tidyNodeGetType(obj->node) == TidyNode_Text) { RETURN_TRUE; @@ -1590,7 +1622,7 @@ /* {{{ Returns true if this node is JSTE */ PHP_METHOD(tidyNode, isJste) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (tidyNodeGetType(obj->node) == TidyNode_Jste) { RETURN_TRUE; @@ -1603,7 +1635,7 @@ /* {{{ Returns true if this node is ASP */ PHP_METHOD(tidyNode, isAsp) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (tidyNodeGetType(obj->node) == TidyNode_Asp) { RETURN_TRUE; @@ -1616,7 +1648,7 @@ /* {{{ Returns true if this node is PHP */ PHP_METHOD(tidyNode, isPhp) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; if (tidyNodeGetType(obj->node) == TidyNode_Php) { RETURN_TRUE; @@ -1629,7 +1661,7 @@ /* {{{ Returns the parent node if available or NULL */ PHP_METHOD(tidyNode, getParent) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; TidyNode parent_node = tidyGetParent(obj->node); if (parent_node) { @@ -1640,7 +1672,7 @@ PHP_METHOD(tidyNode, getPreviousSibling) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; TidyNode previous_node = tidyGetPrev(obj->node); if (previous_node) { @@ -1650,7 +1682,7 @@ PHP_METHOD(tidyNode, getNextSibling) { - TIDY_FETCH_ONLY_OBJECT; + TIDY_FETCH_VALID_NODE; TidyNode next_node = tidyGetNext(obj->node); if (next_node) { diff -Nru php8.4-8.4.26/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_oom_feedback.phpt php8.4-8.4.27/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_oom_feedback.phpt --- php8.4-8.4.26/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_oom_feedback.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_oom_feedback.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +TOKEN_PARSE feedback after a token is dropped on OOM +--EXTENSIONS-- +tokenizer +--ENV-- +USE_ZEND_ALLOC=0 +USE_TRACKED_ALLOC=1 +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/tokenizer/tokenizer.c php8.4-8.4.27/ext/tokenizer/tokenizer.c --- php8.4-8.4.26/ext/tokenizer/tokenizer.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/tokenizer/tokenizer.c 2026-10-19 14:38:59.000000000 +0000 @@ -111,7 +111,7 @@ } if (!tokenize_common(return_value, source, flags, token_class)) { - RETURN_THROWS(); + return; } } @@ -271,23 +271,30 @@ if (interned_str) { return zend_string_copy(interned_str); } - interned_str = zend_string_init((char *) text, leng, 0); + interned_str = zend_string_finit((char *) text, leng, /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!interned_str)) { + return NULL; + } zend_hash_add_new_ptr(interned_strings, interned_str, interned_str); return interned_str; } else { - return zend_string_init((char *) text, leng, 0); + return zend_string_finit((char *) text, leng, /* persistent */ false, /* fallible */ true); } } -static void add_token( +static bool add_token( zval *return_value, int token_type, unsigned char *text, size_t leng, int lineno, zend_class_entry *token_class, HashTable *interned_strings) { zval token; if (token_class) { + zend_string *value = make_str(text, leng, interned_strings); + if (UNEXPECTED(!value)) { + return false; + } zend_object *obj = zend_objects_new(token_class); ZVAL_OBJ(&token, obj); ZVAL_LONG(OBJ_PROP_NUM(obj, 0), token_type); - ZVAL_STR(OBJ_PROP_NUM(obj, 1), make_str(text, leng, interned_strings)); + ZVAL_STR(OBJ_PROP_NUM(obj, 1), value); ZVAL_LONG(OBJ_PROP_NUM(obj, 2), lineno); ZVAL_LONG(OBJ_PROP_NUM(obj, 3), text - LANG_SCNG(yy_start)); @@ -305,17 +312,28 @@ array_init_size(&token, 3); zend_hash_real_init_packed(Z_ARRVAL(token)); ZEND_HASH_FILL_PACKED(Z_ARRVAL(token)) { + zend_string *value = make_str(text, leng, interned_strings); + if (UNEXPECTED(!value)) { + ZEND_HASH_FILL_FINISH(); + zval_ptr_dtor(&token); + return false; + } ZEND_HASH_FILL_SET_LONG(token_type); ZEND_HASH_FILL_NEXT(); - ZEND_HASH_FILL_SET_STR(make_str(text, leng, interned_strings)); + ZEND_HASH_FILL_SET_STR(value); ZEND_HASH_FILL_NEXT(); ZEND_HASH_FILL_SET_LONG(lineno); ZEND_HASH_FILL_NEXT(); } ZEND_HASH_FILL_END(); } else { - ZVAL_STR(&token, make_str(text, leng, interned_strings)); + zend_string *value = make_str(text, leng, interned_strings); + if (UNEXPECTED(!value)) { + return false; + } + ZVAL_STR(&token, value); } zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &token); + return true; } static bool tokenize(zval *return_value, zend_string *source, zend_class_entry *token_class) @@ -327,6 +345,7 @@ int token_line = 1; int need_tokens = -1; /* for __halt_compiler lexing. -1 = disabled */ HashTable interned_strings; + bool success = true; ZVAL_STR_COPY(&source_zval, source); zend_save_lexical_state(&original_lex_state); @@ -340,9 +359,12 @@ while ((token_type = lex_scan(&token, NULL))) { ZEND_ASSERT(token_type != T_ERROR); - add_token( + if (!add_token( return_value, token_type, zendtext, zendleng, token_line, - token_class, &interned_strings); + token_class, &interned_strings)) { + success = false; + break; + } if (Z_TYPE(token) != IS_UNDEF) { zval_ptr_dtor_nogc(&token); @@ -357,9 +379,12 @@ ) { /* fetch the rest into a T_INLINE_HTML */ if (zendcursor < zendlimit) { - add_token( + if (!add_token( return_value, T_INLINE_HTML, zendcursor, zendlimit - zendcursor, - token_line, token_class, &interned_strings); + token_line, token_class, &interned_strings)) { + success = false; + break; + } } break; } @@ -379,12 +404,13 @@ zend_restore_lexical_state(&original_lex_state); zend_hash_destroy(&interned_strings); - return 1; + return success; } struct event_context { zval *tokens; zend_class_entry *token_class; + bool oom; }; static zval *extract_token_id_to_replace(zval *token_zv, const char *text, size_t length) { @@ -415,6 +441,10 @@ { struct event_context *ctx = context; + if (UNEXPECTED(ctx->oom)) { + return; + } + switch (event) { case ON_TOKEN: if (token == END) break; @@ -424,8 +454,11 @@ } else if (token == T_ECHO && LANG_SCNG(yy_leng) == sizeof("tokens, token, (unsigned char *) text, length, line, ctx->token_class, NULL); + if (UNEXPECTED(!add_token( + ctx->tokens, token, (unsigned char *) text, length, line, ctx->token_class, NULL))) { + ZEND_ASSERT(ZEND_HAS_OOM()); + ctx->oom = true; + } break; case ON_FEEDBACK: { HashTable *tokens_ht = Z_ARRVAL_P(ctx->tokens); @@ -471,6 +504,7 @@ ctx.tokens = &token_stream; ctx.token_class = token_class; + ctx.oom = false; CG(ast) = NULL; CG(ast_arena) = zend_arena_create(1024 * 32); @@ -524,7 +558,7 @@ ZEND_PARSE_PARAMETERS_END(); if (!tokenize_common(return_value, source, flags, /* token_class */ NULL)) { - RETURN_THROWS(); + return; } } /* }}} */ diff -Nru php8.4-8.4.26/ext/xml/tests/oom_xml_parse_attributes.phpt php8.4-8.4.27/ext/xml/tests/oom_xml_parse_attributes.phpt --- php8.4-8.4.26/ext/xml/tests/oom_xml_parse_attributes.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xml/tests/oom_xml_parse_attributes.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,22 @@ +--TEST-- +xml_parse() doesn't reach hard limit on attributes +--EXTENSIONS-- +xml +--INI-- +memory_limit=8M +--FILE-- +"; + +$parser = xml_parser_create(); +xml_set_element_handler($parser, function () {}, function () {}); +xml_parse($parser, $data, true); +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xml/tests/oom_xml_parse_into_struct.phpt php8.4-8.4.27/ext/xml/tests/oom_xml_parse_into_struct.phpt --- php8.4-8.4.26/ext/xml/tests/oom_xml_parse_into_struct.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xml/tests/oom_xml_parse_into_struct.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +xml_parse_into_struct() doesn't reach hard limit +--EXTENSIONS-- +xml +--INI-- +memory_limit=8M +--FILE-- +" . str_repeat("
", 512 * 1024) . ""; +$parser = xml_parser_create(); +xml_parse_into_struct($parser, $data, $values, $index); +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xml/tests/oom_xml_parse_ns.phpt php8.4-8.4.27/ext/xml/tests/oom_xml_parse_ns.phpt --- php8.4-8.4.26/ext/xml/tests/oom_xml_parse_ns.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xml/tests/oom_xml_parse_ns.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +xml_parse() doesn't reach hard limit on namespaced attributes +--EXTENSIONS-- +xml +--SKIPIF-- + +--INI-- +memory_limit=8M +--FILE-- +"; + +$parser = xml_parser_create_ns(); +xml_set_element_handler($parser, function () {}, function () {}); +xml_parse($parser, $data, true); +echo "not reached\n"; +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xml/tests/xml_set_handler_reentrancy.phpt php8.4-8.4.27/ext/xml/tests/xml_set_handler_reentrancy.phpt --- php8.4-8.4.26/ext/xml/tests/xml_set_handler_reentrancy.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xml/tests/xml_set_handler_reentrancy.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,43 @@ +--TEST-- +GH-23818 (Changing XML handlers while parsing is rejected) +--EXTENSIONS-- +xml +--FILE-- +getMessage(), "\n"; + } + + try { + xml_set_character_data_handler($parser, $replacement); + } catch (Error $error) { + echo 'xml_set_character_data_handler: ', $error->getMessage(), "\n"; + } +}; + +$parser = xml_parser_create(); +xml_set_element_handler($parser, $startHandler, static function () { + echo "end\n"; +}); +xml_set_character_data_handler($parser, static function (XMLParser $parser, string $data) { + echo $data, "\n"; +}); + +var_dump(xml_parse($parser, 'text', true)); +var_dump(xml_set_element_handler($parser, null, null)); +var_dump(xml_set_character_data_handler($parser, null)); +?> +--EXPECT-- +xml_set_element_handler: Cannot change handlers while parsing +xml_set_character_data_handler: Cannot change handlers while parsing +text +end +int(1) +bool(true) +bool(true) diff -Nru php8.4-8.4.26/ext/xml/xml.c php8.4-8.4.27/ext/xml/xml.c --- php8.4-8.4.26/ext/xml/xml.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/xml/xml.c 2026-10-19 14:38:59.000000000 +0000 @@ -323,8 +323,11 @@ { if (parser->ltags) { int inx; - for (inx = 0; ((inx < parser->level) && (inx < XML_MAXLEVEL)); inx++) - efree(parser->ltags[ inx ]); + for (inx = 0; ((inx < parser->level) && (inx < XML_MAXLEVEL)); inx++) { + if (parser->ltags[ inx ]) { + efree(parser->ltags[ inx ]); + } + } efree(parser->ltags); } } @@ -614,6 +617,11 @@ return NULL; } +static zend_always_inline bool xml_handler_aborted(void) +{ + return EG(exception) != NULL || ZEND_HAS_OOM(); +} + /* {{{ xml_startElementHandler() */ void xml_startElementHandler(void *userData, const XML_Char *name, const XML_Char **attributes) { @@ -625,6 +633,10 @@ return; } + if (UNEXPECTED(xml_handler_aborted())) { + return; + } + parser->level++; tag_name = xml_decode_tag(parser, name); @@ -647,6 +659,14 @@ attributes += 2; zend_string_release_ex(att, 0); + + if (ZEND_HAS_OOM()) { + zend_string_release_ex(tag_name, false); + zval_ptr_dtor(&args[0]); + zval_ptr_dtor(&args[1]); + zval_ptr_dtor(&args[2]); + return; + } } zend_call_known_fcc(&parser->startElementHandler, /* retval */ NULL, /* param_count */ 3, args, /* named_params */ NULL); @@ -689,6 +709,13 @@ attributes += 2; zend_string_release_ex(att, 0); + + if (ZEND_HAS_OOM()) { + zend_string_release_ex(tag_name, false); + zval_ptr_dtor(&tag); + zval_ptr_dtor(&atr); + return; + } } if (atcnt) { @@ -727,6 +754,10 @@ if (!parser) { return; } + + if (UNEXPECTED(xml_handler_aborted())) { + return; + } zend_string *tag_name = xml_decode_tag(parser, name); @@ -770,6 +801,7 @@ if ((parser->ltags) && (parser->level <= XML_MAXLEVEL)) { efree(parser->ltags[parser->level-1]); + parser->ltags[parser->level-1] = NULL; } parser->level--; @@ -785,6 +817,10 @@ return; } + if (UNEXPECTED(xml_handler_aborted())) { + return; + } + if (ZEND_FCC_INITIALIZED(parser->characterDataHandler)) { zval args[2]; ZVAL_COPY(&args[0], &parser->index); @@ -1317,6 +1353,12 @@ } set_handlers: + if (parser->isparsing) { + zend_release_fcall_info_cache(&start_fcc); + zend_release_fcall_info_cache(&end_fcc); + zend_throw_error(NULL, "Cannot change handlers while parsing"); + RETURN_THROWS(); + } xml_set_handler(&parser->startElementHandler, &start_fcc); xml_set_handler(&parser->endElementHandler, &end_fcc); XML_SetElementHandler(parser->parser, xml_startElementHandler, xml_endElementHandler); @@ -1370,6 +1412,11 @@ php_xml_set_handler_parse_callable(INTERNAL_FUNCTION_PARAM_PASSTHRU, &parser, &handler_fcc); \ if (EG(exception)) { return; } \ ZEND_ASSERT(parser); \ + if (parser->isparsing) { \ + zend_release_fcall_info_cache(&handler_fcc); \ + zend_throw_error(NULL, "Cannot change handlers while parsing"); \ + RETURN_THROWS(); \ + } \ xml_set_handler(&parser->parser_handler_name, &handler_fcc); \ parse_function(parser->parser, c_function); \ RETURN_TRUE; \ diff -Nru php8.4-8.4.26/ext/xmlreader/php_xmlreader.c php8.4-8.4.27/ext/xmlreader/php_xmlreader.c --- php8.4-8.4.26/ext/xmlreader/php_xmlreader.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/php_xmlreader.c 2026-10-19 14:38:59.000000000 +0000 @@ -91,7 +91,7 @@ switch (hnd->type) { case IS_STRING: if (retchar) { - ZVAL_STRING(rv, (char *) retchar); + ZVAL_FSTRING(rv, (char *) retchar); } else { ZVAL_EMPTY_STRING(rv); } @@ -441,7 +441,7 @@ retchar = (char *)internal_function(intern->ptr, (const unsigned char *)name); } if (retchar) { - RETVAL_STRING(retchar); + RETVAL_FSTRING(retchar); xmlFree(retchar); return; } else { @@ -491,7 +491,7 @@ retchar = (char *)internal_function(intern->ptr); } if (retchar) { - RETVAL_STRING(retchar); + RETVAL_FSTRING(retchar); xmlFree(retchar); return; } else { @@ -601,7 +601,7 @@ retchar = (char *)xmlTextReaderGetAttributeNo(intern->ptr, attr_pos); } if (retchar) { - RETVAL_STRING(retchar); + RETVAL_FSTRING(retchar); xmlFree(retchar); } } @@ -636,7 +636,7 @@ retchar = (char *)xmlTextReaderGetAttributeNs(intern->ptr, (xmlChar *)name, (xmlChar *)ns_uri); } if (retchar) { - RETVAL_STRING(retchar); + RETVAL_FSTRING(retchar); xmlFree(retchar); } } diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_getattribute.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_getattribute.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_getattribute.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_getattribute.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +XMLReader::getAttribute() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=2M +--FILE-- +"); +unset($chunk); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->getAttribute("a"); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_getattributeno.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_getattributeno.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_getattributeno.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_getattributeno.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +XMLReader::getAttributeNo() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=2M +--FILE-- +"); +unset($chunk); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->getAttributeNo(0); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_getattributens.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_getattributens.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_getattributens.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_getattributens.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +XMLReader::getAttributeNs() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=2M +--FILE-- +"); +unset($chunk); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->getAttributeNs("a", "urn:t"); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_lookupnamespace.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_lookupnamespace.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_lookupnamespace.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_lookupnamespace.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +XMLReader::lookupNamespace() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=2M +--FILE-- +"); +unset($chunk); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->read(); +$reader->lookupNamespace("p"); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_readinnerxml.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_readinnerxml.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_readinnerxml.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_readinnerxml.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +XMLReader::readInnerXml() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=2M +--SKIPIF-- + +--FILE-- +xxxxxxxx", 32768); +fwrite($fp, ""); +for ($i = 0; $i < 12; $i++) { + fwrite($fp, $piece); +} +fwrite($fp, ""); +unset($piece); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->readInnerXml(); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_readouterxml.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_readouterxml.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_readouterxml.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_readouterxml.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +XMLReader::readOuterXml() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=4M +--FILE-- +xxxxxxxx", 32768); +fwrite($fp, ""); +for ($i = 0; $i < 24; $i++) { + fwrite($fp, $piece); +} +fwrite($fp, ""); +unset($piece); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->readOuterXml(); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 4194304 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_readstring.phpt php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_readstring.phpt --- php8.4-8.4.26/ext/xmlreader/tests/oom_xmlreader_readstring.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xmlreader/tests/oom_xmlreader_readstring.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +XMLReader::readString() doesn't reach hard limit +--EXTENSIONS-- +xmlreader +--INI-- +memory_limit=2M +--SKIPIF-- + +--FILE-- +xxxxxxxx", 32768); +fwrite($fp, ""); +for ($i = 0; $i < 12; $i++) { + fwrite($fp, $piece); +} +fwrite($fp, ""); +unset($piece); +fclose($fp); + +$reader = XMLReader::open($path); +$reader->read(); +$reader->readString(); +echo "not reached\n"; +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of 2097152 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/xmlwriter/php_xmlwriter.c php8.4-8.4.27/ext/xmlwriter/php_xmlwriter.c --- php8.4-8.4.26/ext/xmlwriter/php_xmlwriter.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/xmlwriter/php_xmlwriter.c 2026-10-19 14:38:59.000000000 +0000 @@ -1009,7 +1009,11 @@ output_bytes = xmlTextWriterFlush(ptr); if (buffer) { const xmlChar *content = xmlBufferContent(buffer); - RETVAL_STRING((const char *) content); + zend_string *ret = zend_string_finit((const char *) content, strlen((const char *) content), /* persistent */ false, /* fallible */ true); + if (UNEXPECTED(!ret)) { + RETURN_OOM(); + } + RETVAL_NEW_STR(ret); if (empty) { xmlBufferEmpty(buffer); } diff -Nru php8.4-8.4.26/ext/xsl/php_xsl.h php8.4-8.4.27/ext/xsl/php_xsl.h --- php8.4-8.4.26/ext/xsl/php_xsl.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/xsl/php_xsl.h 2026-10-19 14:38:59.000000000 +0000 @@ -55,6 +55,7 @@ typedef struct xsl_object { void *ptr; HashTable *parameter; + uint32_t transform_depth; bool hasKeys; php_libxml_ref_obj *sheet_ref_obj; zend_long securityPrefs; diff -Nru php8.4-8.4.26/ext/xsl/tests/gh23730.phpt php8.4-8.4.27/ext/xsl/tests/gh23730.phpt --- php8.4-8.4.26/ext/xsl/tests/gh23730.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xsl/tests/gh23730.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,81 @@ +--TEST-- +GH-23730 (Use-after-free when a stylesheet is imported during a transformation) +--EXTENSIONS-- +dom +xsl +--CREDITS-- +djarfluka +--FILE-- +importStylesheet($GLOBALS['other']); + echo $from, ': no error', PHP_EOL; + } catch (Error $e) { + echo $from, ': ', $e::class, ': ', $e->getMessage(), PHP_EOL; + } +} + +function callback($nodes) { + import_other('callback'); + return $nodes[0]; +} + +$xml = new DOMDocument(); +$xml->registerNodeClass(DOMElement::class, MyElement::class); +$xml->loadXML('a'); + +$xsl = new DOMDocument(); +$xsl->loadXML(<< + + + +XML); + +$other = new DOMDocument(); +$other->loadXML('REPLACED'); + +$proc = new XSLTProcessor(); +$proc->registerPHPFunctions(); +$proc->importStylesheet($xsl); + +$GLOBALS['proc'] = $proc; +$GLOBALS['other'] = $other; + +var_dump($proc->transformToXml($xml)); +var_dump($proc->transformToDoc($xml)->textContent); + +$uri = tempnam(sys_get_temp_dir(), 'gh23730'); +var_dump($proc->transformToUri($xml, $uri) > 0); +@unlink($uri); + +/* Importing outside of a transformation is still allowed. */ +var_dump($proc->importStylesheet($other)); +var_dump($proc->transformToXml($xml)); + +?> +--EXPECT-- +callback: Error: Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress +destructor: Error: Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress +string(24) " +a +" +callback: Error: Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress +destructor: Error: Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress +string(1) "a" +callback: Error: Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress +destructor: Error: Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress +bool(true) +bool(true) +string(31) " +REPLACED +" diff -Nru php8.4-8.4.26/ext/xsl/tests/gh23897.phpt php8.4-8.4.27/ext/xsl/tests/gh23897.phpt --- php8.4-8.4.26/ext/xsl/tests/gh23897.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/xsl/tests/gh23897.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +GH-23897 (Assertion failure in php_dom_xpath_callback_dispatch() after failed registerPHPFunctions()) +--EXTENSIONS-- +xsl +--CREDITS-- +YuanchengJiang +--FILE-- +loadXML(''); + +$xsl = new DOMDocument(); +$xsl->loadXML(<< + + + + +XML); + +$xslt = new XSLTProcessor(); +try { + $xslt->registerPHPFunctions('testPhpFunction'); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +$xslt->importStylesheet($xsl); +try { + var_dump($xslt->transformToXml($dom)); +} catch (Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; +} +?> +--EXPECT-- +TypeError: XSLTProcessor::registerPHPFunctions(): Argument #1 ($functions) must be a callable, function "testPhpFunction" not found or invalid function name +Error: No callbacks were registered diff -Nru php8.4-8.4.26/ext/xsl/tests/throw_in_autoload.phpt php8.4-8.4.27/ext/xsl/tests/throw_in_autoload.phpt --- php8.4-8.4.26/ext/xsl/tests/throw_in_autoload.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/xsl/tests/throw_in_autoload.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -28,14 +28,12 @@ $xsl = $proc->importStylesheet($xsl); try { $newdom = $proc->transformToDoc($inputdom); -} catch (Error $e) { +} catch (Exception $e) { echo $e->getMessage(), "\n"; - echo $e->getPrevious()->getMessage(), "\n"; } ?> ===DONE=== --EXPECT-- string(4) "TeSt" -Invalid callback TeSt::dateLang, class "TeSt" not found Autoload exception ===DONE=== diff -Nru php8.4-8.4.26/ext/xsl/xsltprocessor.c php8.4-8.4.27/ext/xsl/xsltprocessor.c --- php8.4-8.4.26/ext/xsl/xsltprocessor.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/xsl/xsltprocessor.c 2026-10-19 14:38:59.000000000 +0000 @@ -175,6 +175,12 @@ RETURN_THROWS(); } + xsl_object *intern = Z_XSL_P(id); + if (UNEXPECTED(intern->transform_depth > 0)) { + zend_throw_error(NULL, "Cannot call XSLTProcessor::importStylesheet() while a transformation is in progress"); + RETURN_THROWS(); + } + nodep = php_libxml_import_node(docp); if (nodep == NULL) { zend_argument_type_error(1, "must be a valid XML node"); @@ -251,8 +257,6 @@ RETURN_FALSE; } - xsl_object *intern = Z_XSL_P(id); - /* Detach object */ clone_lxml_obj->document->ptr = NULL; /* The namespace mappings need to be kept alive. @@ -333,6 +337,8 @@ return NULL; } + intern->transform_depth++; + if (intern->profiling) { if (php_check_open_basedir(ZSTR_VAL(intern->profiling))) { f = NULL; @@ -438,6 +444,8 @@ efree(intern->doc); intern->doc = NULL; + intern->transform_depth--; + return newdocp; } diff -Nru php8.4-8.4.26/ext/zend_test/observer.c php8.4-8.4.27/ext/zend_test/observer.c --- php8.4-8.4.26/ext/zend_test/observer.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/observer.c 2026-10-19 14:38:59.000000000 +0000 @@ -79,7 +79,8 @@ { assert_observer_opline(execute_data); - if (ZT_G(observer_set_vm_interrupt_on_begin)) { + if (ZT_G(observer_set_vm_interrupt_on_begin) + || ZT_G(observer_set_vm_interrupt_on_begin_without_callback)) { zend_atomic_bool_store_ex(&EG(vm_interrupt), true); } @@ -375,6 +376,7 @@ STD_PHP_INI_BOOLEAN("zend_test.observer.show_opcode", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_show_opcode, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_ENTRY("zend_test.observer.show_opcode_in_user_handler", "", PHP_INI_SYSTEM, OnUpdateString, observer_show_opcode_in_user_handler, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.set_vm_interrupt_on_begin", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_set_vm_interrupt_on_begin, zend_zend_test_globals, zend_test_globals) + STD_PHP_INI_BOOLEAN("zend_test.observer.set_vm_interrupt_on_begin_without_callback", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_set_vm_interrupt_on_begin_without_callback, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.fiber_init", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_fiber_init, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.fiber_switch", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_fiber_switch, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.fiber_destroy", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_fiber_destroy, zend_zend_test_globals, zend_test_globals) diff -Nru php8.4-8.4.26/ext/zend_test/php_test.h php8.4-8.4.27/ext/zend_test/php_test.h --- php8.4-8.4.26/ext/zend_test/php_test.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/php_test.h 2026-10-19 14:38:59.000000000 +0000 @@ -46,6 +46,7 @@ int observer_show_opcode; char *observer_show_opcode_in_user_handler; int observer_set_vm_interrupt_on_begin; + int observer_set_vm_interrupt_on_begin_without_callback; int observer_nesting_depth; int observer_fiber_init; int observer_fiber_switch; diff -Nru php8.4-8.4.26/ext/zend_test/test.c php8.4-8.4.27/ext/zend_test/test.c --- php8.4-8.4.26/ext/zend_test/test.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/test.c 2026-10-19 14:38:59.000000000 +0000 @@ -33,10 +33,13 @@ #include "zend_weakrefs.h" #include "Zend/Optimizer/zend_optimizer.h" #include "Zend/zend_alloc.h" +#include "SAPI.h" +#include "rfc1867.h" #include "test_arginfo.h" #include "zend_call_stack.h" #include "zend_exceptions.h" #include "zend_mm_custom_handlers.h" +#include // `php.h` sets `NDEBUG` when not `PHP_DEBUG` which will make `assert()` from // assert.h a no-op. In order to have `assert()` working on NDEBUG builds, we @@ -173,6 +176,44 @@ emalloc(leakbytes); } +static ZEND_FUNCTION(zend_test_emalloc) +{ + zend_long size; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(size) + ZEND_PARSE_PARAMETERS_END(); + + void *ptr = emalloc((size_t)size); + + ZEND_ASSERT(ptr); + memset(ptr, 0, (size_t)size); + + efree(ptr); +} + +static ZEND_FUNCTION(zend_test_callback) +{ + zend_fcall_info fci = empty_fcall_info; + zend_fcall_info_cache fci_cache = empty_fcall_info_cache; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_FUNC(fci, fci_cache) + ZEND_PARSE_PARAMETERS_END(); + + void *p = malloc(1024); + + zval result; + fci.retval = &result; + fci.param_count = 0; + fci.params = NULL; + zend_call_function(&fci, &fci_cache); + zval_ptr_dtor(&result); + + /* Reachable via unwind exit. */ + free(p); +} + /* Leak a refcounted variable */ static ZEND_FUNCTION(zend_leak_variable) { @@ -672,6 +713,22 @@ php_printf("%s", invalid); } +static ZEND_FUNCTION(zend_test_raise_and_throw) +{ + zend_long signo; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(signo) + ZEND_PARSE_PARAMETERS_END(); + + if (raise((int) signo) != 0) { + zend_throw_error(NULL, "raise() failed"); + RETURN_THROWS(); + } + + zend_throw_exception(NULL, "Exception after raise()", 0); +} + static bool has_opline(zend_execute_data *execute_data) { return execute_data @@ -850,6 +907,123 @@ php_log_err_with_severity(ZSTR_VAL(str), LOG_DEBUG); } +static php_stream *zend_test_post_stream = NULL; + +/* Give the POST handler a fresh $_POST or $_FILES to fill in. A request parses + * its body before creating the auto globals, so the handler expects an array + * that nothing else holds a reference to yet. */ +static void zend_test_reset_track_vars(int track_vars, const char *name, size_t name_len) +{ + /* Create the auto global first, so that it is not created, and reset, on + * first access after this. */ + zend_is_auto_global_str(name, name_len); + + zval *zv = &PG(http_globals)[track_vars]; + + zval_ptr_dtor_nogc(zv); + array_init(zv); +} + +/* Point $_POST or $_FILES at the array the POST handler filled in. */ +static void zend_test_publish_track_vars(int track_vars, const char *name, size_t name_len) +{ + zval *zv = &PG(http_globals)[track_vars]; + + zend_hash_str_update(&EG(symbol_table), name, name_len, zv); + Z_ADDREF_P(zv); +} + +static size_t zend_test_read_post(char *buffer, size_t count_bytes) +{ + ssize_t read_bytes = php_stream_read(zend_test_post_stream, buffer, count_bytes); + + return read_bytes > 0 ? (size_t) read_bytes : 0; +} + +/* Run the POST handler registered for the content type over the contents of a + * stream, as if that stream were the body of the current request. */ +static ZEND_FUNCTION(zend_test_handle_post_data) +{ + zval *stream_zv; + char *content_type; + size_t content_type_len; + zend_long content_length; + php_stream *stream; + + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_RESOURCE(stream_zv); + Z_PARAM_STRING(content_type, content_type_len); + Z_PARAM_LONG(content_length); + ZEND_PARSE_PARAMETERS_END(); + + php_stream_from_zval(stream, stream_zv); + + zend_test_reset_track_vars(TRACK_VARS_POST, ZEND_STRL("_POST")); + zend_test_reset_track_vars(TRACK_VARS_FILES, ZEND_STRL("_FILES")); + + /* Tear down what a previous call set up, as the request shutdown would. */ + if (SG(rfc1867_uploaded_files)) { + destroy_uploaded_files_hash(); + } + + php_stream *old_stream = zend_test_post_stream; + size_t (*old_read_post)(char *buffer, size_t count_bytes) = sapi_module.read_post; + sapi_request_info old_request_info = SG(request_info); + int64_t old_read_post_bytes = SG(read_post_bytes); + unsigned char old_post_read = SG(post_read); + + zend_test_post_stream = stream; + sapi_module.read_post = zend_test_read_post; + /* php_default_post_reader() insists on a request method. */ + SG(request_info).request_method = "POST"; + SG(request_info).content_type = content_type; + SG(request_info).content_length = content_length; + SG(request_info).content_type_dup = NULL; + SG(request_info).post_entry = NULL; + SG(request_info).request_body = NULL; + SG(read_post_bytes) = 0; + SG(post_read) = 0; + + bool bailed_out = false; + + zend_try { + /* Pick the post handler for the content type, read the body, then run + * the handler over it. Anything else is swallowed by the default post + * reader, as it would be during a request. */ + sapi_read_post_data(); + sapi_handle_post(&PG(http_globals)[TRACK_VARS_POST]); + } zend_catch { + bailed_out = true; + } zend_end_try(); + + zend_test_publish_track_vars(TRACK_VARS_POST, ZEND_STRL("_POST")); + zend_test_publish_track_vars(TRACK_VARS_FILES, ZEND_STRL("_FILES")); + + if (SG(request_info).request_body) { + php_stream_close(SG(request_info).request_body); + } + if (SG(request_info).content_type_dup) { + efree(SG(request_info).content_type_dup); + } + + zend_test_post_stream = old_stream; + sapi_module.read_post = old_read_post; + SG(request_info) = old_request_info; + SG(read_post_bytes) = old_read_post_bytes; + SG(post_read) = old_post_read; + + if (bailed_out) { + zend_bailout(); + } +} + +static ZEND_FUNCTION(zend_new_singleton_array) +{ + ZEND_PARSE_PARAMETERS_NONE(); + + array_init_singleton(return_value); +} + static zend_object *zend_test_class_new(zend_class_entry *class_type) { zend_object *obj = zend_objects_new(class_type); diff -Nru php8.4-8.4.26/ext/zend_test/test.stub.php php8.4-8.4.27/ext/zend_test/test.stub.php --- php8.4-8.4.26/ext/zend_test/test.stub.php 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/test.stub.php 2026-10-19 14:38:59.000000000 +0000 @@ -246,6 +246,10 @@ function zend_leak_bytes(int $bytes = 3): void {} + function zend_test_emalloc(int $size): void {} + + function zend_test_callback(callable $callback): void {} + function zend_string_or_object(object|string $param): object|string {} function zend_string_or_object_or_null(object|string|null $param): object|string|null {} @@ -298,6 +302,8 @@ function zend_test_crash(?string $message = null): void {} + function zend_test_raise_and_throw(int $signal): void {} + function zend_test_fill_packed_array(array &$array): void {} /** @return resource */ @@ -326,6 +332,11 @@ /** @compile-time-eval */ function zend_test_gh19792(): void {} + + /* @param resource $stream */ + function zend_test_handle_post_data(mixed $stream, string $content_type, int $content_length): void {} + + function zend_new_singleton_array(): array {} } namespace ZendTestNS { diff -Nru php8.4-8.4.26/ext/zend_test/test_arginfo.h php8.4-8.4.27/ext/zend_test/test_arginfo.h --- php8.4-8.4.26/ext/zend_test/test_arginfo.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/test_arginfo.h 2026-10-19 14:38:59.000000000 +0000 @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: bf65e1dd1eeeeec46687a76a7ea6554cd1971dfc */ + * Stub hash: f723630a2dc2078ae81e406e75a728dcf8939779 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_array_return, 0, 0, IS_ARRAY, 0) ZEND_END_ARG_INFO() @@ -42,6 +42,14 @@ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, bytes, IS_LONG, 0, "3") ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_emalloc, 0, 1, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, size, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_callback, 0, 1, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_zend_string_or_object, 0, 1, MAY_BE_OBJECT|MAY_BE_STRING) ZEND_ARG_TYPE_MASK(0, param, MAY_BE_OBJECT|MAY_BE_STRING, NULL) ZEND_END_ARG_INFO() @@ -133,6 +141,10 @@ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, message, IS_STRING, 1, "null") ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_raise_and_throw, 0, 1, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, signal, IS_LONG, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_fill_packed_array, 0, 1, IS_VOID, 0) ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0) ZEND_END_ARG_INFO() @@ -173,6 +185,14 @@ #define arginfo_zend_test_gh19792 arginfo_zend_test_void_return +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_handle_post_data, 0, 3, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, stream, IS_MIXED, 0) + ZEND_ARG_TYPE_INFO(0, content_type, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, content_length, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_zend_new_singleton_array arginfo_zend_test_array_return + #define arginfo_ZendTestNS2_namespaced_func arginfo_zend_test_is_pcre_bundled #define arginfo_ZendTestNS2_namespaced_deprecated_func arginfo_zend_test_void_return @@ -268,6 +288,8 @@ static ZEND_FUNCTION(zend_terminate_string); static ZEND_FUNCTION(zend_leak_variable); static ZEND_FUNCTION(zend_leak_bytes); +static ZEND_FUNCTION(zend_test_emalloc); +static ZEND_FUNCTION(zend_test_callback); static ZEND_FUNCTION(zend_string_or_object); static ZEND_FUNCTION(zend_string_or_object_or_null); static ZEND_FUNCTION(zend_string_or_stdclass); @@ -294,6 +316,7 @@ static ZEND_FUNCTION(zend_test_is_string_marked_as_valid_utf8); static ZEND_FUNCTION(zend_get_map_ptr_last); static ZEND_FUNCTION(zend_test_crash); +static ZEND_FUNCTION(zend_test_raise_and_throw); static ZEND_FUNCTION(zend_test_fill_packed_array); static ZEND_FUNCTION(zend_test_create_throwing_resource); static ZEND_FUNCTION(get_open_basedir); @@ -309,6 +332,8 @@ static ZEND_FUNCTION(zend_test_log_err_debug); static ZEND_FUNCTION(zend_test_gh18756); static ZEND_FUNCTION(zend_test_gh19792); +static ZEND_FUNCTION(zend_test_handle_post_data); +static ZEND_FUNCTION(zend_new_singleton_array); static ZEND_FUNCTION(ZendTestNS2_namespaced_func); static ZEND_FUNCTION(ZendTestNS2_namespaced_deprecated_func); static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_func); @@ -375,6 +400,8 @@ ZEND_FE(zend_terminate_string, arginfo_zend_terminate_string) ZEND_FE(zend_leak_variable, arginfo_zend_leak_variable) ZEND_FE(zend_leak_bytes, arginfo_zend_leak_bytes) + ZEND_FE(zend_test_emalloc, arginfo_zend_test_emalloc) + ZEND_FE(zend_test_callback, arginfo_zend_test_callback) ZEND_FE(zend_string_or_object, arginfo_zend_string_or_object) ZEND_FE(zend_string_or_object_or_null, arginfo_zend_string_or_object_or_null) ZEND_FE(zend_string_or_stdclass, arginfo_zend_string_or_stdclass) @@ -401,6 +428,7 @@ ZEND_FE(zend_test_is_string_marked_as_valid_utf8, arginfo_zend_test_is_string_marked_as_valid_utf8) ZEND_FE(zend_get_map_ptr_last, arginfo_zend_get_map_ptr_last) ZEND_FE(zend_test_crash, arginfo_zend_test_crash) + ZEND_FE(zend_test_raise_and_throw, arginfo_zend_test_raise_and_throw) ZEND_FE(zend_test_fill_packed_array, arginfo_zend_test_fill_packed_array) ZEND_FE(zend_test_create_throwing_resource, arginfo_zend_test_create_throwing_resource) ZEND_FE(get_open_basedir, arginfo_get_open_basedir) @@ -424,6 +452,8 @@ ZEND_RAW_FENTRY("zend_test_gh19792", zif_zend_test_gh19792, arginfo_zend_test_gh19792, 0) #endif #endif + ZEND_FE(zend_test_handle_post_data, arginfo_zend_test_handle_post_data) + ZEND_FE(zend_new_singleton_array, arginfo_zend_new_singleton_array) #if (PHP_VERSION_ID >= 80400) ZEND_RAW_FENTRY(ZEND_NS_NAME("ZendTestNS2", "namespaced_func"), zif_ZendTestNS2_namespaced_func, arginfo_ZendTestNS2_namespaced_func, 0, NULL, NULL) #else diff -Nru php8.4-8.4.26/ext/zend_test/tests/observer_bug81430_2.phpt php8.4-8.4.27/ext/zend_test/tests/observer_bug81430_2.phpt --- php8.4-8.4.26/ext/zend_test/tests/observer_bug81430_2.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/tests/observer_bug81430_2.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -3,21 +3,16 @@ --EXTENSIONS-- zend_test --INI-- -memory_limit=20M zend_test.observer.enabled=1 zend_test.observer.show_output=1 zend_test.observer.observe_all=1 ---SKIPIF-- - --FILE-- - - - - + + + + + -Fatal error: Allowed memory size of %d bytes exhausted %s in %s on line %d - - +Fatal error: __debuginfo() must return an array in %s on line %d + diff -Nru php8.4-8.4.26/ext/zend_test/tests/observer_bug81435.phpt php8.4-8.4.27/ext/zend_test/tests/observer_bug81435.phpt --- php8.4-8.4.26/ext/zend_test/tests/observer_bug81435.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/tests/observer_bug81435.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -3,15 +3,10 @@ --EXTENSIONS-- zend_test --INI-- -memory_limit=20M zend_test.observer.enabled=1 zend_test.observer.show_output=1 zend_test.observer.observe_function_names=a,d opcache.optimization_level=0 ---SKIPIF-- - --FILE-- - - + + -Fatal error: Allowed memory size of 20971520 bytes exhausted %s in %s on line %d +Fatal error: __debuginfo() must return an array in %s on line %d diff -Nru php8.4-8.4.26/ext/zend_test/tests/observer_error_01.phpt php8.4-8.4.27/ext/zend_test/tests/observer_error_01.phpt --- php8.4-8.4.26/ext/zend_test/tests/observer_error_01.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/tests/observer_error_01.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -7,16 +7,11 @@ zend_test.observer.show_output=1 zend_test.observer.observe_all=1 zend_test.observer.show_return_value=1 -memory_limit=2M ---SKIPIF-- - --FILE-- - - + + + + + -Fatal error: Allowed memory size of 2097152 bytes exhausted%s(tried to allocate %d bytes) in %s on line %d - +Fatal error: __debuginfo() must return an array in %s on line %d + diff -Nru php8.4-8.4.26/ext/zend_test/tests/observer_fiber_functions_03.phpt php8.4-8.4.27/ext/zend_test/tests/observer_fiber_functions_03.phpt --- php8.4-8.4.26/ext/zend_test/tests/observer_fiber_functions_03.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/tests/observer_fiber_functions_03.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -9,11 +9,6 @@ zend_test.observer.fiber_init=1 zend_test.observer.fiber_switch=1 zend_test.observer.fiber_destroy=1 -memory_limit=100M ---SKIPIF-- - --FILE-- start(); @@ -76,11 +71,13 @@ - - + + + + -Fatal error: Allowed memory size of 104857600 bytes exhausted %s on line %d - +Fatal error: __debuginfo() must return an array in %s on line %d + diff -Nru php8.4-8.4.26/ext/zend_test/tests/zend_test_handle_post_data.phpt php8.4-8.4.27/ext/zend_test/tests/zend_test_handle_post_data.phpt --- php8.4-8.4.26/ext/zend_test/tests/zend_test_handle_post_data.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zend_test/tests/zend_test_handle_post_data.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,85 @@ +--TEST-- +zend_test_handle_post_data() parses POST data from a stream +--EXTENSIONS-- +zend_test +--FILE-- + +--EXPECTF-- +array(1) { + ["foo"]=> + string(3) "bar" +} +array(1) { + ["file"]=> + array(6) { + ["name"]=> + string(5) "f.txt" + ["full_path"]=> + string(5) "f.txt" + ["type"]=> + string(10) "text/plain" + ["tmp_name"]=> + string(%d) "%s" + ["error"]=> + int(0) + ["size"]=> + int(13) + } +} +bool(true) +string(13) "file contents" +array(2) { + ["a"]=> + string(1) "1" + ["b"]=> + array(2) { + [0]=> + string(1) "2" + [1]=> + string(1) "3" + } +} +array(0) { +} +array(0) { +} diff -Nru php8.4-8.4.26/ext/zip/php_zip.c php8.4-8.4.27/ext/zip/php_zip.c --- php8.4-8.4.26/ext/zip/php_zip.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zip/php_zip.c 2026-10-19 14:38:59.000000000 +0000 @@ -1582,8 +1582,16 @@ if (ze_obj->archive) { /* we already have an opened zip, free it */ + if (ze_obj->archive->close) { + efree(resolved_path); + zend_throw_error(NULL, "Already being closed"); + RETURN_THROWS(); + } intern = ze_obj->archive->za; - if (zip_close(intern) != 0) { + ze_obj->archive->close = true; + err = zip_close(intern); + ze_obj->archive->close = false; + if (err != 0) { php_error_docref(NULL, E_WARNING, "Empty string as source"); efree(resolved_path); RETURN_FALSE; @@ -1668,7 +1676,14 @@ ze_obj = Z_ZIP_P(self); + if (ze_obj->archive->close) { + zend_throw_error(NULL, "Already being closed"); + RETURN_THROWS(); + } + + ze_obj->archive->close = true; err = zip_close(intern); + ze_obj->archive->close = false; if (err) { php_error_docref(NULL, E_WARNING, "%s", zip_strerror(intern)); /* Save error for property reader */ @@ -2963,7 +2978,7 @@ } } - uint32_t nelems, i; + uint32_t nelems; if (files_str) { if (!php_zip_extract_file(intern, pathto, ZSTR_VAL(files_str), ZSTR_LEN(files_str), -1)) { @@ -2974,20 +2989,19 @@ if (nelems == 0 ) { RETURN_FALSE; } - for (i = 0; i < nelems; i++) { - zval *zval_file; - if ((zval_file = zend_hash_index_find_deref(files_ht, i)) != NULL) { - switch (Z_TYPE_P(zval_file)) { - case IS_LONG: - break; - case IS_STRING: - if (!php_zip_extract_file(intern, pathto, Z_STRVAL_P(zval_file), Z_STRLEN_P(zval_file), -1)) { - RETURN_FALSE; - } - break; - } + zval *zval_file; + ZEND_HASH_FOREACH_VAL(files_ht, zval_file) { + ZVAL_DEREF(zval_file); + switch (Z_TYPE_P(zval_file)) { + case IS_LONG: + break; + case IS_STRING: + if (!php_zip_extract_file(intern, pathto, Z_STRVAL_P(zval_file), Z_STRLEN_P(zval_file), -1)) { + RETURN_FALSE; + } + break; } - } + } ZEND_HASH_FOREACH_END(); } else { /* Extract all files */ zip_int64_t i, filecount = zip_get_num_entries(intern, 0); diff -Nru php8.4-8.4.26/ext/zip/php_zip.h php8.4-8.4.27/ext/zip/php_zip.h --- php8.4-8.4.26/ext/zip/php_zip.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zip/php_zip.h 2026-10-19 14:38:59.000000000 +0000 @@ -73,6 +73,7 @@ /* libzip reads buffers until the archive is closed, can outlive the object. */ char **buffers; int buffers_cnt; + bool close; #ifdef HAVE_PROGRESS_CALLBACK zval progress_callback; #endif diff -Nru php8.4-8.4.26/ext/zip/tests/gh18431.phpt php8.4-8.4.27/ext/zip/tests/gh18431.phpt --- php8.4-8.4.26/ext/zip/tests/gh18431.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zip/tests/gh18431.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -2,6 +2,12 @@ GH-18431 (Registering ZIP progress callback twice doesn't work) --EXTENSIONS-- zip +--SKIPIF-- + --FILE-- +--FILE-- +open($filename, ZipArchive::CREATE | ZipArchive::OVERWRITE); + for ($i = 0; $i < 64; $i++) { + $zip->addFromString("f$i.txt", str_repeat('x', 2000)); + } +} + +$filename = __DIR__ . '/gh23747.zip'; + +$zip = new ZipArchive(); +populate($zip, $filename); +$zip->registerProgressCallback(0.0, function ($rate) use ($zip) { + static $done = false; + if (!$done) { + $done = true; + try { + $zip->close(); + } catch (Error $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + } +}); +var_dump($zip->close()); + +$zip = new ZipArchive(); +populate($zip, $filename); +$zip->registerCancelCallback(function () use ($zip) { + static $done = false; + if (!$done) { + $done = true; + try { + $zip->close(); + } catch (Error $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + } + return 0; +}); +var_dump($zip->close()); + +$zip = new ZipArchive(); +populate($zip, $filename); +$zip->registerProgressCallback(0.0, function ($rate) use ($zip) { + static $done = false; + if (!$done) { + $done = true; + try { + $zip->close(); + } catch (Error $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + } +}); +var_dump($zip->open($filename)); +var_dump($zip->count()); + +$zip = new ZipArchive(); +populate($zip, $filename); +$zip->registerProgressCallback(0.0, function ($rate) use ($zip, $filename) { + static $done = false; + if (!$done) { + $done = true; + try { + $zip->open($filename); + } catch (Error $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } + } +}); +var_dump($zip->close()); +?> +--CLEAN-- + +--EXPECT-- +Error: Already being closed +bool(true) +Error: Already being closed +bool(true) +Error: Already being closed +bool(true) +int(64) +Error: Already being closed +bool(true) diff -Nru php8.4-8.4.26/ext/zip/tests/oo_extract_array_keys.phpt php8.4-8.4.27/ext/zip/tests/oo_extract_array_keys.phpt --- php8.4-8.4.26/ext/zip/tests/oo_extract_array_keys.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zip/tests/oo_extract_array_keys.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,38 @@ +--TEST-- +ZipArchive::extractTo() with a non-list files array (non-sequential keys) +--EXTENSIONS-- +zip +--FILE-- +open($archive, ZipArchive::CREATE | ZipArchive::OVERWRITE); +$zip->addFromString("file0.txt", "zero"); +$zip->addFromString("file1.txt", "one"); +$zip->close(); + +$target = __DIR__ . "/oo_extract_array_keys"; +mkdir($target); + +// array_filter() (and array_unique/array_diff) preserve keys, so this is [1 => "file1.txt"], +// a perfectly valid list of entry names that is not a packed 0-based array. +$files = array_filter(["file0.txt", "file1.txt"], fn($f) => $f === "file1.txt"); + +$zip = new ZipArchive(); +$zip->open($archive); +var_dump($zip->extractTo($target, $files)); +$zip->close(); + +var_dump(is_file("$target/file1.txt")); +?> +--EXPECT-- +bool(true) +bool(true) +--CLEAN-- + diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_deflate_add.phpt php8.4-8.4.27/ext/zlib/tests/oom_deflate_add.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_deflate_add.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_deflate_add.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,34 @@ +--TEST-- +deflate_add() output buffer pre-allocation doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=512M +--SKIPIF-- + +--FILE-- + $hard - memory_get_usage(true)); + +deflate_add($ctx, $subject, ZLIB_FINISH); +echo "not reached\n"; +?> +--EXPECTF-- +bool(true) + +Fatal error: Allowed memory size of 536870912 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_gzcompress.phpt php8.4-8.4.27/ext/zlib/tests/oom_gzcompress.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_gzcompress.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_gzcompress.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +gzcompress() output buffer pre-allocation doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=512M +--SKIPIF-- + +--FILE-- + $hard - memory_get_usage(true)); + +// gzdeflate(), gzencode() and zlib_encode() go through the same helper. +gzcompress($subject); +echo "not reached\n"; +?> +--EXPECTF-- +bool(true) + +Fatal error: Allowed memory size of 536870912 bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_gzdecode.phpt php8.4-8.4.27/ext/zlib/tests/oom_gzdecode.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_gzdecode.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_gzdecode.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +gzdecode() doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("\0", 65536); +$gz = ""; +for ($i = 0; $i < 512; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +unset($chunk); + +var_dump(gzdecode($gz)); +?> +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_gzfile.phpt php8.4-8.4.27/ext/zlib/tests/oom_gzfile.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_gzfile.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_gzfile.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +gzfile() doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("a\n", 32768); +$gz = ""; +for ($i = 0; $i < 192; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +file_put_contents($file, $gz); +unset($gz, $chunk, $ctx); + +ini_set("memory_limit", "8M"); + +var_dump(gzfile($file)); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_gzgets.phpt php8.4-8.4.27/ext/zlib/tests/oom_gzgets.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_gzgets.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_gzgets.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +gzgets() doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("\0", 65536); +$gz = ""; +for ($i = 0; $i < 192; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +file_put_contents($file, $gz); +unset($gz, $chunk, $ctx); + +ini_set("memory_limit", "4M"); + +$fp = gzopen($file, "rb"); +var_dump(gzgets($fp)); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_gzpassthru.phpt php8.4-8.4.27/ext/zlib/tests/oom_gzpassthru.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_gzpassthru.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_gzpassthru.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +gzpassthru() doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("\0", 65536); +$gz = ""; +for ($i = 0; $i < 192; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +file_put_contents($file, $gz); +unset($gz, $chunk, $ctx); + +ini_set("memory_limit", "4M"); + +ob_start(); +$fp = gzopen($file, "rb"); +gzpassthru($fp); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_inflate_add.phpt php8.4-8.4.27/ext/zlib/tests/oom_inflate_add.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_inflate_add.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_inflate_add.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +inflate_add() doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=8M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("\0", 65536); +$gz = ""; +for ($i = 0; $i < 512; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +unset($chunk); + +$r = inflate_init(ZLIB_ENCODING_GZIP); +var_dump(inflate_add($r, $gz, ZLIB_FINISH)); +?> +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_readgzfile.phpt php8.4-8.4.27/ext/zlib/tests/oom_readgzfile.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_readgzfile.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_readgzfile.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +readgzfile() doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("\0", 65536); +$gz = ""; +for ($i = 0; $i < 192; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +file_put_contents($file, $gz); +unset($gz, $chunk, $ctx); + +ini_set("memory_limit", "4M"); + +ob_start(); +readgzfile($file); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/tests/oom_zlib_inflate_filter.phpt php8.4-8.4.27/ext/zlib/tests/oom_zlib_inflate_filter.phpt --- php8.4-8.4.26/ext/zlib/tests/oom_zlib_inflate_filter.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/tests/oom_zlib_inflate_filter.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +zlib.inflate stream filter doesn't reach hard limit +--EXTENSIONS-- +zlib +--INI-- +memory_limit=64M +--SKIPIF-- + +--FILE-- + 9]); +$chunk = str_repeat("\0", 65536); +$gz = ""; +for ($i = 0; $i < 192; $i++) { + $gz .= deflate_add($ctx, $chunk, ZLIB_NO_FLUSH); +} +$gz .= deflate_add($ctx, "", ZLIB_FINISH); +file_put_contents($file, $gz); +unset($gz, $chunk, $ctx); + +ini_set("memory_limit", "4M"); + +$fp = fopen($file, "rb"); +stream_filter_append($fp, "zlib.inflate", STREAM_FILTER_READ, ["window" => 0x2f]); +var_dump(fgets($fp)); +?> +--CLEAN-- + +--EXPECTF-- +Fatal error: Allowed memory size of %d bytes exhausted %S(tried to allocate %d bytes) in %s on line %d diff -Nru php8.4-8.4.26/ext/zlib/zlib.c php8.4-8.4.27/ext/zlib/zlib.c --- php8.4-8.4.26/ext/zlib/zlib.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/zlib.c 2026-10-19 14:38:59.000000000 +0000 @@ -150,6 +150,9 @@ zval *enc; if (!ZLIBG(compression_coding)) { + if (!EG(active)) { + return 0; + } if ((Z_TYPE(PG(http_globals)[TRACK_VARS_SERVER]) == IS_ARRAY || zend_is_auto_global(ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_SERVER))) && (enc = zend_hash_str_find(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), "HTTP_ACCEPT_ENCODING", sizeof("HTTP_ACCEPT_ENCODING") - 1))) { convert_to_string(enc); @@ -391,7 +394,11 @@ Z.zfree = php_zlib_free; if (Z_OK == (status = deflateInit2(&Z, level, Z_DEFLATED, encoding, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY))) { - out = zend_string_alloc(PHP_ZLIB_BUFFER_SIZE_GUESS(in_len), 0); + out = zend_string_falloc(PHP_ZLIB_BUFFER_SIZE_GUESS(in_len), 0, /* fallible */ true); + if (UNEXPECTED(!out)) { + deflateEnd(&Z); + return NULL; + } Z.next_in = (Bytef *) in_buf; Z.next_out = (Bytef *) ZSTR_VAL(out); @@ -428,7 +435,7 @@ buffer.size = (max && (max < Z->avail_in)) ? max : Z->avail_in; do { - if ((max && (max <= buffer.used)) || !(buffer.aptr = erealloc_recoverable(buffer.data, buffer.size))) { + if ((max && (max <= buffer.used)) || !(buffer.aptr = safe_ferealloc(buffer.data, 1, buffer.size, 0, /* fallible */ true))) { status = Z_MEM_ERROR; } else { buffer.data = buffer.aptr; @@ -635,6 +642,10 @@ memset(buf, 0, sizeof(buf)); while (php_stream_gets(stream, buf, sizeof(buf) - 1) != NULL) { + if (ZEND_HAS_OOM()) { + php_stream_close(stream); + RETURN_OOM(); + } add_index_string(return_value, i++, buf); } php_stream_close(stream); @@ -931,6 +942,22 @@ } /* }}} */ +/* Releases *out and returns false on failure. */ +static bool php_zlib_inflate_grow(zend_string **out, size_t buffer_used, size_t chunk_size, z_stream *Z) +{ + zend_string *grown = zend_string_frealloc(*out, ZSTR_LEN(*out) + chunk_size, 0, /* fallible */ true); + + if (UNEXPECTED(grown == NULL)) { + zend_string_release_ex(*out, 0); + return false; + } + + *out = grown; + Z->avail_out = chunk_size; + Z->next_out = (Bytef *) ZSTR_VAL(grown) + buffer_used; + return true; +} + /* {{{ Incrementally inflate encoded data in the specified context */ PHP_FUNCTION(inflate_add) { @@ -989,9 +1016,9 @@ case Z_OK: if (ctx->Z.avail_out == 0) { /* more output buffer space needed; realloc and try again */ - out = zend_string_realloc(out, ZSTR_LEN(out) + CHUNK_SIZE, 0); - ctx->Z.avail_out = CHUNK_SIZE; - ctx->Z.next_out = (Bytef *) ZSTR_VAL(out) + buffer_used; + if (UNEXPECTED(!php_zlib_inflate_grow(&out, buffer_used, CHUNK_SIZE, &ctx->Z))) { + RETURN_OOM(); + } break; } else { goto complete; @@ -1001,9 +1028,9 @@ case Z_BUF_ERROR: if (flush_type == Z_FINISH && ctx->Z.avail_out == 0) { /* more output buffer space needed; realloc and try again */ - out = zend_string_realloc(out, ZSTR_LEN(out) + CHUNK_SIZE, 0); - ctx->Z.avail_out = CHUNK_SIZE; - ctx->Z.next_out = (Bytef *) ZSTR_VAL(out) + buffer_used; + if (UNEXPECTED(!php_zlib_inflate_grow(&out, buffer_used, CHUNK_SIZE, &ctx->Z))) { + RETURN_OOM(); + } break; } else { /* No more input data; we're finished */ @@ -1215,7 +1242,10 @@ out_size = PHP_ZLIB_BUFFER_SIZE_GUESS(in_len); out_size = (out_size < 64) ? 64 : out_size; - out = zend_string_alloc(out_size, 0); + out = zend_string_falloc(out_size, 0, /* fallible */ true); + if (UNEXPECTED(!out)) { + RETURN_OOM(); + } ctx->Z.next_in = (Bytef *) in_buf; ctx->Z.next_out = (Bytef *) ZSTR_VAL(out); diff -Nru php8.4-8.4.26/ext/zlib/zlib_filter.c php8.4-8.4.27/ext/zlib/zlib_filter.c --- php8.4-8.4.26/ext/zlib/zlib_filter.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/ext/zlib/zlib_filter.c 2026-10-19 14:38:59.000000000 +0000 @@ -75,6 +75,10 @@ bucket = php_stream_bucket_make_writeable(buckets_in->head); while (bin < (unsigned int) bucket->buflen && !data->finished) { + /* Output is unbounded relative to the input. */ + if (ZEND_HAS_OOM()) { + break; + } desired = bucket->buflen - bin; if (desired > data->inbuf_len) { @@ -121,7 +125,7 @@ if (!data->finished && flags & PSFS_FLAG_FLUSH_CLOSE) { /* Spit it out! */ status = Z_OK; - while (status == Z_OK) { + while (status == Z_OK && !ZEND_HAS_OOM()) { status = inflate(&(data->strm), Z_FINISH); if (data->strm.avail_out < data->outbuf_len) { size_t bucketlen = data->outbuf_len - data->strm.avail_out; diff -Nru php8.4-8.4.26/main/SAPI.c php8.4-8.4.27/main/SAPI.c --- php8.4-8.4.26/main/SAPI.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/SAPI.c 2026-10-19 14:38:59.000000000 +0000 @@ -164,6 +164,10 @@ SG(request_info).post_entry->post_handler(SG(request_info).content_type_dup, arg); efree(SG(request_info).content_type_dup); SG(request_info).content_type_dup = NULL; + + if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); + } } } diff -Nru php8.4-8.4.26/main/fopen_wrappers.c php8.4-8.4.27/main/fopen_wrappers.c --- php8.4-8.4.26/main/fopen_wrappers.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/fopen_wrappers.c 2026-10-19 14:38:59.000000000 +0000 @@ -151,6 +151,14 @@ size_t path_len; int nesting_level = 0; +#ifdef PHP_WIN32 + /* Preserve the working-directory permission check for bare NUL. */ + if ((strcasecmp(path, "NUL") == 0 || strcasecmp(path, "NUL:") == 0) + && php_check_specific_open_basedir(basedir, ".") == 0) { + return 0; + } +#endif + /* Special case basedir==".": Use script-directory */ if (strcmp(basedir, ".") || !VCWD_GETCWD(local_open_basedir, MAXPATHLEN)) { /* Else use the unmodified path */ diff -Nru php8.4-8.4.26/main/main.c php8.4-8.4.27/main/main.c --- php8.4-8.4.26/main/main.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/main.c 2026-10-19 14:38:59.000000000 +0000 @@ -335,6 +335,30 @@ } /* }}} */ +static PHP_INI_MH(OnChangeMemoryHardLimitPercent) +{ + zend_long value; + if (new_value) { + value = zend_ini_parse_quantity_warn(new_value, entry->name); + } else { + value = -1; /* default: 200% if memory limit < 1G, fixed 1G buffer otherwise */ + } + + if (value < 100 && value != -1) { + zend_error(E_WARNING, "memory_hard_limit_percent must be >= 100, or -1"); + return FAILURE; + } + + if (zend_set_memory_hard_limit_percent(value) == FAILURE) { + if (stage != ZEND_INI_STAGE_DEACTIVATE) { + zend_error(E_WARNING, "Failed to set memory_hard_limit_percent to " ZEND_LONG_FMT, value); + return FAILURE; + } + } + + return SUCCESS; +} + /* {{{ PHP_INI_MH */ static PHP_INI_MH(OnSetLogFilter) { @@ -801,6 +825,7 @@ STD_PHP_INI_ENTRY("mail.log", NULL, PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateMailLog, mail_log, php_core_globals, core_globals) PHP_INI_ENTRY("browscap", NULL, PHP_INI_SYSTEM, OnChangeBrowscap) PHP_INI_ENTRY("memory_limit", "128M", PHP_INI_ALL, OnChangeMemoryLimit) + PHP_INI_ENTRY("memory_hard_limit_percent", NULL, PHP_INI_ALL, OnChangeMemoryHardLimitPercent) PHP_INI_ENTRY("precision", "14", PHP_INI_ALL, OnSetPrecision) PHP_INI_ENTRY("sendmail_from", NULL, PHP_INI_ALL, NULL) PHP_INI_ENTRY("sendmail_path", DEFAULT_SENDMAIL_PATH, PHP_INI_SYSTEM, NULL) @@ -1005,6 +1030,10 @@ zend_string *message; int is_function = 0; + if (ZEND_HAS_OOM()) { + return; + } + /* get error text into buffer and escape for html if necessary */ zend_string *buffer = vstrpprintf(0, format, args); @@ -1333,7 +1362,10 @@ PG(last_error_lineno) = error_lineno; } - if (zend_alloc_in_memory_limit_error_reporting()) { + /* Discarding the output buffers frees every handler on the stack, which is + * not safe while one of them is running */ + if (zend_alloc_in_memory_limit_error_reporting() + && !(php_output_get_status() & PHP_OUTPUT_LOCKED)) { php_output_discard_all(); } @@ -1441,7 +1473,7 @@ case E_PARSE: case E_COMPILE_ERROR: case E_USER_ERROR: - EG(exit_status) = 255; + EG(exit_status) = zend_mm_max_allocs_hit() ? ZEND_MM_MAX_ALLOCS_EXIT_STATUS : 255; if (module_initialized) { if (!PG(display_errors) && !SG(headers_sent) && @@ -1834,6 +1866,7 @@ PG(in_user_include) = 0; zend_activate(); + php_basic_early_rinit(); sapi_activate(); #ifdef ZEND_SIGNALS @@ -1879,6 +1912,11 @@ SG(sapi_started) = 1; + char *max = getenv("ZEND_MM_MAX_ALLOCS"); + if (max) { + zend_mm_set_max_allocs(ZEND_ATOL(max)); + } + return retval; } /* }}} */ @@ -1889,6 +1927,7 @@ bool report_memleaks; EG(flags) |= EG_FLAGS_IN_SHUTDOWN; + EG(delayed_oom).state = ZEND_OOM_STATE_NONE; report_memleaks = PG(report_memleaks); @@ -1945,6 +1984,8 @@ for (i=0; iptr, klen); val = estrndup(ksep, vlen); + if (ZEND_HAS_OOM()) { + efree(val); + return 0; + } if (vlen) { vlen = php_url_decode(val, vlen); } @@ -383,6 +394,10 @@ if (sapi_module.input_filter(PARSE_POST, var->ptr, &val, vlen, &new_vlen)) { php_register_variable_safe(var->ptr, val, new_vlen, arr); } + if (ZEND_HAS_OOM()) { + efree(val); + return 0; + } efree(val); var->ptr = vsep + (vsep != var->end); @@ -404,6 +419,12 @@ max_vars); return FAILURE; } + if (ZEND_HAS_OOM()) { + return FAILURE; + } + } + if (ZEND_HAS_OOM()) { + return FAILURE; } if (!eof && ZSTR_VAL(vars->str.s) != vars->ptr) { @@ -433,6 +454,11 @@ if (len > 0) { smart_str_appendl(&post_data.str, buf, len); + if (ZEND_HAS_OOM()) { + smart_str_free(&post_data.str); + return; + } + if (SUCCESS != add_post_vars(arr, &post_data, 0)) { smart_str_free(&post_data.str); return; @@ -473,7 +499,7 @@ case PARSE_POST: case PARSE_GET: case PARSE_COOKIE: - array_init(&array); + array_init_singleton(&array); switch (arg) { case PARSE_POST: zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_POST]); diff -Nru php8.4-8.4.26/main/php_version.h php8.4-8.4.27/main/php_version.h --- php8.4-8.4.26/main/php_version.h 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/php_version.h 2026-10-19 14:38:59.000000000 +0000 @@ -2,7 +2,7 @@ /* edit configure.ac to change version number */ #define PHP_MAJOR_VERSION 8 #define PHP_MINOR_VERSION 4 -#define PHP_RELEASE_VERSION 26 +#define PHP_RELEASE_VERSION 27 #define PHP_EXTRA_VERSION "" -#define PHP_VERSION "8.4.26" -#define PHP_VERSION_ID 80426 +#define PHP_VERSION "8.4.27" +#define PHP_VERSION_ID 80427 diff -Nru php8.4-8.4.26/main/rfc1867.c php8.4-8.4.27/main/rfc1867.c --- php8.4-8.4.26/main/rfc1867.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/rfc1867.c 2026-10-19 14:38:59.000000000 +0000 @@ -52,7 +52,7 @@ PHPAPI zend_result (*php_rfc1867_callback)(unsigned int event, void *event_data, void **extra) = NULL; -static void safe_php_register_variable(char *var, char *strval, size_t val_len, zval *track_vars_array, bool override_protection); +static bool safe_php_register_variable(char *var, char *strval, size_t val_len, zval *track_vars_array, bool override_protection); /* The longest property name we use in an uploaded file array */ #define MAX_SIZE_OF_INDEX sizeof("[full_path]") @@ -118,10 +118,11 @@ } /* }}} */ -static void add_protected_variable(char *varname) /* {{{ */ +static bool add_protected_variable(char *varname) /* {{{ */ { normalize_protected_variable(varname); zend_hash_str_add_empty_element(&PG(rfc1867_protected_variables), varname, strlen(varname)); + return !ZEND_HAS_OOM(); } /* }}} */ @@ -132,31 +133,33 @@ } /* }}} */ -static void safe_php_register_variable(char *var, char *strval, size_t val_len, zval *track_vars_array, bool override_protection) /* {{{ */ +static bool safe_php_register_variable(char *var, char *strval, size_t val_len, zval *track_vars_array, bool override_protection) /* {{{ */ { if (override_protection || !is_protected_variable(var)) { php_register_variable_safe(var, strval, val_len, track_vars_array); } + return !ZEND_HAS_OOM(); } /* }}} */ -static void safe_php_register_variable_ex(char *var, zval *val, zval *track_vars_array, bool override_protection) /* {{{ */ +static bool safe_php_register_variable_ex(char *var, zval *val, zval *track_vars_array, bool override_protection) /* {{{ */ { if (override_protection || !is_protected_variable(var)) { php_register_variable_ex(var, val, track_vars_array); } + return !ZEND_HAS_OOM(); } /* }}} */ -static void register_http_post_files_variable(char *strvar, char *val, zval *http_post_files, bool override_protection) /* {{{ */ +static bool register_http_post_files_variable(char *strvar, char *val, zval *http_post_files, bool override_protection) /* {{{ */ { - safe_php_register_variable(strvar, val, strlen(val), http_post_files, override_protection); + return safe_php_register_variable(strvar, val, strlen(val), http_post_files, override_protection); } /* }}} */ -static void register_http_post_files_variable_ex(char *var, zval *val, zval *http_post_files, bool override_protection) /* {{{ */ +static bool register_http_post_files_variable_ex(char *var, zval *val, zval *http_post_files, bool override_protection) /* {{{ */ { - safe_php_register_variable_ex(var, val, http_post_files, override_protection); + return safe_php_register_variable_ex(var, val, http_post_files, override_protection); } /* }}} */ @@ -221,6 +224,11 @@ self->buf_begin = self->buffer; + zend_long post_max_size = REQUEST_PARSE_BODY_OPTION_GET(post_max_size, SG(post_max_size)); + if (post_max_size > 0 && SG(read_post_bytes) > post_max_size) { + return 0; + } + /* calculate the free space in the buffer */ bytes_to_read = self->bufsize - self->bytes_in_buffer; @@ -368,6 +376,14 @@ return 0; } +static bool php_mime_should_save_hdr(const char *name) +{ + return !strcasecmp(name, "Content-Disposition") + || !strcasecmp(name, "Content-Type"); +} + +static char *php_mime_get_hdr_value(zend_llist header, char *key); + /* parse headers */ static int multipart_buffer_headers(multipart_buffer *self, zend_llist *header) { @@ -408,15 +424,25 @@ } *value = '\0'; - do { value++; } while (isspace((unsigned char)*value)); - key = estrdup(line); - smart_string_appends(&buf_value, value); + /* Keep only headers we use, and ignore duplicates */ + if (!php_mime_should_save_hdr(line) + || php_mime_get_hdr_value(*header, line)) { + key = NULL; + } else { + key = estrdup(line); + do { value++; } while (isspace((unsigned char)*value)); + smart_string_appends(&buf_value, value); + } } else if (buf_value.c) { /* If no ':' on the line, add to previous line */ smart_string_appends(&buf_value, line); } else { continue; } + + if (ZEND_HAS_OOM()) { + goto oom; + } } if (buf_value.c && key) { @@ -428,6 +454,13 @@ } return 1; + +oom: + if (key) { + efree(key); + } + smart_string_free(&buf_value); + return 0; } static char *php_mime_get_hdr_value(zend_llist header, char *key) @@ -485,11 +518,11 @@ return res; } -static char *substring_conf(char *start, int len, char quote) +static char *substring_conf(char *start, size_t len, char quote) { char *result = emalloc(len + 1); char *resp = result; - int i; + size_t i; for (i = 0; i < len && start[i] != quote; ++i) { if (start[i] == '\\' && (start[i + 1] == '\\' || (quote && start[i + 1] == quote))) { @@ -517,14 +550,14 @@ char quote = *str; str++; - return substring_conf(str, (int)strlen(str), quote); + return substring_conf(str, strlen(str), quote); } else { char *strend = str; while (*strend && !isspace((unsigned char)*strend)) { ++strend; } - return substring_conf(str, strend - str, 0); + return substring_conf(str, (size_t)(strend - str), 0); } } @@ -629,7 +662,11 @@ size_t total_bytes=0, read_bytes=0; while((read_bytes = multipart_buffer_read(self, buf, sizeof(buf), NULL))) { - out = erealloc(out, total_bytes + read_bytes + 1); + char *new_out = safe_ferealloc(out, 1, total_bytes, read_bytes + 1, /* fallible */ true); + if (!new_out) { + break; + } + out = new_out; memcpy(out + total_bytes, buf, read_bytes); total_bytes += read_bytes; } @@ -773,6 +810,9 @@ if (php_rfc1867_callback(MULTIPART_EVENT_START, &event_start, &event_extra_data) == FAILURE) { goto fileupload_done; } + if (ZEND_HAS_OOM()) { + goto fileupload_done; + } } while (!multipart_buffer_eof(mbuff)) @@ -784,6 +824,11 @@ zend_llist_clean(&header); + if (ZEND_HAS_OOM()) { + /* A previous body part has reached the soft memory limit: Stop here */ + goto fileupload_done; + } + if (!multipart_buffer_headers(mbuff, &header)) { goto fileupload_done; } @@ -805,6 +850,11 @@ { char *key = NULL, *word = pair; + if (ZEND_HAS_OOM()) { + efree(word); + break; + } + while (isspace((unsigned char)*cd)) { ++cd; } @@ -812,6 +862,12 @@ if (strchr(pair, '=')) { key = getword(mbuff->input_encoding, &pair, '='); + if (ZEND_HAS_OOM()) { + efree(word); + efree(key); + break; + } + if (!strcasecmp(key, "name")) { if (param) { efree(param); @@ -839,6 +895,12 @@ } } } + + if (ZEND_HAS_OOM()) { + efree(word); + efree(key); + break; + } } if (key) { efree(key); @@ -846,12 +908,30 @@ efree(word); } + if (ZEND_HAS_OOM()) { + if (filename) { + efree(filename); + } + if (param) { + efree(param); + } + goto fileupload_done; + } + /* Normal form variable, safe to read all data into memory */ if (!filename && param) { size_t value_len; char *value = multipart_buffer_read_body(mbuff, &value_len); size_t new_val_len; /* Dummy variable */ + if (ZEND_HAS_OOM()) { + if (value) { + efree(value); + } + efree(param); + goto fileupload_done; + } + if (!value) { value = estrdup(""); value_len = 0; @@ -868,6 +948,12 @@ } if (++count <= max_input_vars && sapi_module.input_filter(PARSE_POST, param, &value, value_len, &new_val_len)) { + if (ZEND_HAS_OOM()) { + efree(param); + efree(value); + goto fileupload_done; + } + if (php_rfc1867_callback != NULL) { multipart_event_formdata event_formdata; size_t newlength = new_val_len; @@ -882,9 +968,18 @@ efree(value); continue; } + if (ZEND_HAS_OOM()) { + efree(param); + efree(value); + goto fileupload_done; + } new_val_len = newlength; } - safe_php_register_variable(param, value, new_val_len, array_ptr, 0); + if (!safe_php_register_variable(param, value, new_val_len, array_ptr, 0)) { + efree(param); + efree(value); + goto fileupload_done; + } } else { if (count == max_input_vars + 1) { EMIT_WARNING_OR_ERROR("Input variables exceeded " ZEND_LONG_FMT ". To increase the limit change max_input_vars in php.ini.", max_input_vars); @@ -899,6 +994,11 @@ event_formdata.length = value_len; event_formdata.newlength = NULL; php_rfc1867_callback(MULTIPART_EVENT_FORMDATA, &event_formdata, &event_extra_data); + if (ZEND_HAS_OOM()) { + efree(param); + efree(value); + goto fileupload_done; + } } } @@ -976,6 +1076,11 @@ efree(filename); continue; } + if (ZEND_HAS_OOM()) { + efree(param); + efree(filename); + goto fileupload_done; + } } if (skip_upload) { @@ -1026,6 +1131,10 @@ cancel_upload = PHP_UPLOAD_ERROR_X; continue; } + if (ZEND_HAS_OOM()) { + cancel_upload = PHP_UPLOAD_ERROR_X; + continue; + } } if (upload_max_filesize > 0 && (zend_long)(total_bytes+blen) > upload_max_filesize) { @@ -1092,6 +1201,9 @@ if (php_rfc1867_callback(MULTIPART_EVENT_FILE_END, &event_file_end, &event_extra_data) == FAILURE) { cancel_upload = PHP_UPLOAD_ERROR_X; } + if (ZEND_HAS_OOM()) { + cancel_upload = PHP_UPLOAD_ERROR_X; + } } if (cancel_upload) { @@ -1106,6 +1218,12 @@ zend_hash_add_ptr(SG(rfc1867_uploaded_files), temp_filename, temp_filename); } + if (ZEND_HAS_OOM()) { + efree(filename); + efree(param); + goto fileupload_done; + } + /* is_arr_upload is true when name of file upload field * ends in [.*] * start_arr is set to point to 1st [ */ @@ -1117,18 +1235,36 @@ efree(array_index); } array_index = estrndup(start_arr + 1, array_len - 2); + + if (ZEND_HAS_OOM()) { + efree(filename); + efree(param); + goto fileupload_done; + } } /* Add $foo_name */ if (llen < strlen(param) + MAX_SIZE_OF_INDEX + 1) { - llen = (int)strlen(param); - lbuf = (char *) safe_erealloc(lbuf, llen, 1, MAX_SIZE_OF_INDEX + 1); + unsigned int new_llen = (int)strlen(param); + char *new_lbuf = (char *) safe_ferealloc(lbuf, new_llen, 1, MAX_SIZE_OF_INDEX + 1, /* fallible */ true); + if (!new_lbuf) { + efree(filename); + efree(param); + goto fileupload_done; + } + llen = new_llen; + lbuf = new_lbuf; llen += MAX_SIZE_OF_INDEX + 1; } if (is_arr_upload) { if (abuf) efree(abuf); abuf = estrndup(param, strlen(param)-array_len); + if (ZEND_HAS_OOM()) { + efree(filename); + efree(param); + goto fileupload_done; + } snprintf(lbuf, llen, "%s_name[%s]", abuf, array_index); } else { snprintf(lbuf, llen, "%s_name", param); @@ -1150,7 +1286,9 @@ } else { snprintf(lbuf, llen, "%s[name]", param); } - register_http_post_files_variable(lbuf, s, &PG(http_globals)[TRACK_VARS_FILES], 0); + if (!register_http_post_files_variable(lbuf, s, &PG(http_globals)[TRACK_VARS_FILES], 0)) { + goto oom_with_filename; + } s = NULL; /* Add full path of supplied file for folder uploads via @@ -1162,7 +1300,9 @@ } else { snprintf(lbuf, llen, "%s[full_path]", param); } - register_http_post_files_variable(lbuf, filename, &PG(http_globals)[TRACK_VARS_FILES], 0); + if (!register_http_post_files_variable(lbuf, filename, &PG(http_globals)[TRACK_VARS_FILES], 0)) { + goto oom_with_filename; + } efree(filename); /* Possible Content-Type: */ @@ -1182,7 +1322,9 @@ } else { snprintf(lbuf, llen, "%s[type]", param); } - register_http_post_files_variable(lbuf, cd, &PG(http_globals)[TRACK_VARS_FILES], 0); + if (!register_http_post_files_variable(lbuf, cd, &PG(http_globals)[TRACK_VARS_FILES], 0)) { + goto oom_with_param; + } /* Restore Content-Type Header */ if (s != NULL) { @@ -1196,7 +1338,9 @@ zval zfilename; /* Initialize variables */ - add_protected_variable(param); + if (!add_protected_variable(param)) { + goto oom_with_param; + } /* Add $foo[tmp_name] */ if (is_arr_upload) { @@ -1204,13 +1348,17 @@ } else { snprintf(lbuf, llen, "%s[tmp_name]", param); } - add_protected_variable(lbuf); + if (!add_protected_variable(lbuf)) { + goto oom_with_param; + } if (temp_filename) { ZVAL_STR_COPY(&zfilename, temp_filename); } else { ZVAL_EMPTY_STRING(&zfilename); } - register_http_post_files_variable_ex(lbuf, &zfilename, &PG(http_globals)[TRACK_VARS_FILES], 1); + if (!register_http_post_files_variable_ex(lbuf, &zfilename, &PG(http_globals)[TRACK_VARS_FILES], 1)) { + goto oom_with_param; + } } { @@ -1248,7 +1396,9 @@ } else { snprintf(lbuf, llen, "%s[error]", param); } - register_http_post_files_variable_ex(lbuf, &error_type, &PG(http_globals)[TRACK_VARS_FILES], 0); + if (!register_http_post_files_variable_ex(lbuf, &error_type, &PG(http_globals)[TRACK_VARS_FILES], 0)) { + goto oom_with_param; + } /* Add $foo[size] */ if (is_arr_upload) { @@ -1259,13 +1409,25 @@ if (size_overflow) { ZVAL_STRING(&file_size, file_size_buf); } - register_http_post_files_variable_ex(lbuf, &file_size, &PG(http_globals)[TRACK_VARS_FILES], size_overflow); + if (!register_http_post_files_variable_ex(lbuf, &file_size, &PG(http_globals)[TRACK_VARS_FILES], size_overflow)) { + goto oom_with_param; + } } efree(param); + continue; + +oom_with_filename: + efree(filename); +oom_with_param: + efree(param); + goto fileupload_done; } } fileupload_done: + if (post_max_size > 0 && SG(read_post_bytes) > post_max_size) { + sapi_module.sapi_error(E_WARNING, "Actual POST length does not match Content-Length, and exceeds " ZEND_LONG_FMT " bytes", post_max_size); + } if (php_rfc1867_callback != NULL) { multipart_event_end event_end; diff -Nru php8.4-8.4.26/main/snprintf.c php8.4-8.4.27/main/snprintf.c --- php8.4-8.4.26/main/snprintf.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/snprintf.c 2026-10-19 14:38:59.000000000 +0000 @@ -830,7 +830,7 @@ } s = ap_php_conv_p2(ui_num, 4, *fmt, &num_buf[NUM_BUF_SIZE], &s_len); FIX_PRECISION(adjust_precision, precision, s, s_len); - if (alternate_form && i_num != 0) { + if (alternate_form && ui_num != 0) { *--s = *fmt; /* 'x' or 'X' */ *--s = '0'; s_len += 2; diff -Nru php8.4-8.4.26/main/streams/memory.c php8.4-8.4.27/main/streams/memory.c --- php8.4-8.4.26/main/streams/memory.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/streams/memory.c 2026-10-19 14:38:59.000000000 +0000 @@ -55,7 +55,11 @@ ms->fpos = data_len; } if (ms->fpos + count > data_len) { - ms->data = zend_string_realloc(ms->data, ms->fpos + count, 0); + zend_string *grown = zend_string_frealloc(ms->data, ms->fpos + count, 0, /* fallible */ true); + if (UNEXPECTED(!grown)) { + return (ssize_t) -1; + } + ms->data = grown; if (ms->fpos > data_len) { /* zero the bytes added due to seek past end position */ memset(ZSTR_VAL(ms->data) + data_len, 0, ms->fpos - data_len); @@ -239,13 +243,21 @@ } newsize = *(size_t*)ptrparam; if (newsize <= ZSTR_LEN(ms->data)) { - ms->data = zend_string_truncate(ms->data, newsize, 0); + zend_string *new_data = zend_string_ftruncate(ms->data, newsize, 0, /* fallible */ true); + if (UNEXPECTED(!new_data)) { + return PHP_STREAM_OPTION_RETURN_ERR; + } + ms->data = new_data; if (newsize < ms->fpos) { ms->fpos = newsize; } } else { size_t old_size = ZSTR_LEN(ms->data); - ms->data = zend_string_realloc(ms->data, newsize, 0); + zend_string *new_data = zend_string_frealloc(ms->data, newsize, 0, /* fallible */ true); + if (UNEXPECTED(!new_data)) { + return PHP_STREAM_OPTION_RETURN_ERR; + } + ms->data = new_data; memset(ZSTR_VAL(ms->data) + old_size, 0, newsize - old_size); } ZSTR_VAL(ms->data)[ZSTR_LEN(ms->data)] = '\0'; diff -Nru php8.4-8.4.26/main/streams/streams.c php8.4-8.4.27/main/streams/streams.c --- php8.4-8.4.26/main/streams/streams.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/main/streams/streams.c 2026-10-19 14:38:59.000000000 +0000 @@ -79,17 +79,14 @@ fprintf(stderr, "forget_persistent: %s:%p\n", stream->ops->label, stream); #endif + /* Request resources have been destroyed; clear their stale pointers. */ stream->res = NULL; - - if (stream->ctx) { - zend_list_delete(stream->ctx); - stream->ctx = NULL; - } + stream->ctx = NULL; return 0; } -PHP_RSHUTDOWN_FUNCTION(streams) +ZEND_MODULE_POST_ZEND_DEACTIVATE_D(streams) { zval *el; @@ -574,7 +571,10 @@ php_stream_bucket_brigade *brig_inp = &brig_in, *brig_outp = &brig_out, *brig_swap; /* allocate a buffer for reading chunks */ - chunk_buf = emalloc(stream->chunk_size); + chunk_buf = femalloc(stream->chunk_size, /* fallible */ true); + if (UNEXPECTED(!chunk_buf)) { + return FAILURE; + } while (!stream->eof && (stream->writepos - stream->readpos < (zend_off_t)to_read_now)) { ssize_t justread = 0; @@ -634,9 +634,20 @@ } /* grow buffer to hold this bucket */ if (stream->readbuflen - stream->writepos < bucket->buflen) { - stream->readbuflen += bucket->buflen; - stream->readbuf = perealloc(stream->readbuf, stream->readbuflen, - stream->is_persistent); + /* A filter's output is unbounded relative to its input. */ + size_t newlen = stream->readbuflen + bucket->buflen; + unsigned char *newbuf = fperealloc(stream->readbuf, newlen, + stream->is_persistent, /* fallible */ true); + if (UNEXPECTED(!newbuf)) { + while (brig_inp->head) { + bucket = brig_inp->head; + php_stream_bucket_unlink(bucket); + php_stream_bucket_delref(bucket); + } + break; + } + stream->readbuf = newbuf; + stream->readbuflen = newlen; } if (bucket->buflen) { memcpy(stream->readbuf + stream->writepos, bucket->buf, bucket->buflen); @@ -705,9 +716,14 @@ /* grow the buffer if required * TODO: this can fail for persistent streams */ if (stream->readbuflen - stream->writepos < stream->chunk_size) { - stream->readbuflen += stream->chunk_size; - stream->readbuf = perealloc(stream->readbuf, stream->readbuflen, - stream->is_persistent); + size_t newlen = stream->readbuflen + stream->chunk_size; + unsigned char *newbuf = fperealloc(stream->readbuf, newlen, + stream->is_persistent, /* fallible */ true); + if (UNEXPECTED(!newbuf)) { + return FAILURE; + } + stream->readbuf = newbuf; + stream->readbuflen = newlen; } justread = stream->ops->read(stream, (char*)stream->readbuf + stream->writepos, @@ -820,7 +836,10 @@ * to the copy_to_mem() operation, but only performs a single direct read. */ PHPAPI zend_string *php_stream_read_to_str(php_stream *stream, size_t len) { - zend_string *str = zend_string_alloc(len, 0); + zend_string *str = zend_string_falloc(len, 0, /* fallible */ true); + if (UNEXPECTED(!str)) { + return NULL; + } ssize_t read = php_stream_read(stream, ZSTR_VAL(str), len); if (read < 0) { zend_string_efree(str); @@ -995,6 +1014,9 @@ } if (grow_mode) { + if (ZEND_HAS_OOM()) { + break; + } /* allow room for a NUL. If this realloc is really a realloc * (ie: second time around), we get an extra byte. In most * cases, with the default chunk size of 8K, we will only @@ -1170,7 +1192,10 @@ } } - ret_buf = zend_string_alloc(tent_ret_len, 0); + ret_buf = zend_string_falloc(tent_ret_len, 0, /* fallible */ true); + if (UNEXPECTED(!ret_buf)) { + return NULL; + } /* php_stream_read will not call ops->read here because the necessary * data is guaranteed to be buffered */ ZSTR_LEN(ret_buf) = php_stream_read(stream, ZSTR_VAL(ret_buf), tent_ret_len); @@ -1540,6 +1565,9 @@ if (p) { do { + if (ZEND_HAS_OOM()) { + break; + } /* output functions return int, so pass in int max */ if (0 < (b = PHPWRITE(p + bcount, MIN(mapped - bcount, INT_MAX)))) { bcount += b; @@ -1553,6 +1581,9 @@ } while ((b = php_stream_read(stream, buf, sizeof(buf))) > 0) { + if (ZEND_HAS_OOM()) { + break; + } PHPWRITE(buf, b); bcount += b; } @@ -1584,7 +1615,10 @@ } if (maxlen > 0 && maxlen < 4 * CHUNK_SIZE) { - result = zend_string_alloc(maxlen, persistent); + result = zend_string_falloc(maxlen, persistent, /* fallible */ true); + if (UNEXPECTED(!result)) { + return NULL; + } ptr = ZSTR_VAL(result); while ((len < maxlen) && !php_stream_eof(src)) { ret = php_stream_read(src, ptr, maxlen - len); @@ -1625,7 +1659,10 @@ buflen = step; } - result = zend_string_alloc(buflen, persistent); + result = zend_string_falloc(buflen, persistent, /* fallible */ true); + if (UNEXPECTED(!result)) { + return NULL; + } ptr = ZSTR_VAL(result); // TODO: Propagate error? @@ -1640,7 +1677,12 @@ } else { buflen += step; } - result = zend_string_extend(result, buflen, persistent); + zend_string *grown = zend_string_fextend(result, buflen, persistent, /* fallible */ true); + if (UNEXPECTED(!grown)) { + zend_string_free(result); + return NULL; + } + result = grown; ptr = ZSTR_VAL(result) + len; } else { ptr += ret; diff -Nru php8.4-8.4.26/run-tests.php php8.4-8.4.27/run-tests.php --- php8.4-8.4.26/run-tests.php 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/run-tests.php 2026-10-19 14:38:59.000000000 +0000 @@ -602,7 +602,7 @@ $show_progress = false; break; case '--version': - echo '$Id: dfb07a465bd59fa6ae2c4ecade7612ae76d6d4af $' . "\n"; + echo '$Id: f684caf932ce8e4bd0c9b9db20c88464eacee17c $' . "\n"; exit(1); default: @@ -1239,12 +1239,16 @@ } } - $stat = proc_get_status($proc); + do { + $stat = proc_get_status($proc); + if ($stat['running']) { + usleep(1000); + } + } while ($stat['running']); if ($stat['signaled']) { - $data .= "\nTermsig=" . $stat['stopsig'] . "\n"; - } - if ($stat["exitcode"] > 128 && $stat["exitcode"] < 160) { + $data .= "\nTermsig=" . $stat['termsig'] . "\n"; + } else if ($stat["exitcode"] > 128 && $stat["exitcode"] < 160) { $data .= "\nTermsig=" . ($stat["exitcode"] - 128) . "\n"; } else if (defined('PHP_WINDOWS_VERSION_MAJOR') && (($stat["exitcode"] >> 28) & 0b1111) === 0b1100) { // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/87fba13e-bf06-450e-83b1-9241dc81e781 diff -Nru php8.4-8.4.26/sapi/cli/php_cli.c php8.4-8.4.27/sapi/cli/php_cli.c --- php8.4-8.4.26/sapi/cli/php_cli.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/sapi/cli/php_cli.c 2026-10-19 14:38:59.000000000 +0000 @@ -356,6 +356,15 @@ } /* }}} */ +static int sapi_cli_activate(void) /* {{{ */ +{ +#if defined(PHP_WIN32) && defined(ZTS) + ZEND_TSRMLS_CACHE_UPDATE(); +#endif + return SUCCESS; +} +/* }}} */ + static int sapi_cli_deactivate(void) /* {{{ */ { fflush(stdout); @@ -420,7 +429,7 @@ php_cli_startup, /* startup */ php_module_shutdown_wrapper, /* shutdown */ - NULL, /* activate */ + sapi_cli_activate, /* activate */ sapi_cli_deactivate, /* deactivate */ sapi_cli_ub_write, /* unbuffered write */ diff -Nru php8.4-8.4.26/sapi/cli/php_cli_server.c php8.4-8.4.27/sapi/cli/php_cli_server.c --- php8.4-8.4.26/sapi/cli/php_cli_server.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/sapi/cli/php_cli_server.c 2026-10-19 14:38:59.000000000 +0000 @@ -1067,7 +1067,8 @@ static int php_cli_server_content_sender_send(php_cli_server_content_sender *sender, php_socket_t fd, size_t *nbytes_sent_total) /* {{{ */ { php_cli_server_chunk *chunk, *next; - size_t _nbytes_sent_total = 0; + + *nbytes_sent_total = 0; for (chunk = sender->buffer.first; chunk; chunk = next) { #ifdef PHP_WIN32 @@ -1085,7 +1086,6 @@ nbytes_sent = send(fd, chunk->data.heap.p, chunk->data.heap.len, 0); #endif if (nbytes_sent < 0) { - *nbytes_sent_total = _nbytes_sent_total; return php_socket_errno(); #ifdef PHP_WIN32 } else if (nbytes_sent == chunk->data.heap.len) { @@ -1101,8 +1101,10 @@ } else { chunk->data.heap.p += nbytes_sent; chunk->data.heap.len -= nbytes_sent; + *nbytes_sent_total += nbytes_sent; + return 0; } - _nbytes_sent_total += nbytes_sent; + *nbytes_sent_total += nbytes_sent; break; case PHP_CLI_SERVER_CHUNK_IMMORTAL: @@ -1112,7 +1114,6 @@ nbytes_sent = send(fd, chunk->data.immortal.p, chunk->data.immortal.len, 0); #endif if (nbytes_sent < 0) { - *nbytes_sent_total = _nbytes_sent_total; return php_socket_errno(); #ifdef PHP_WIN32 } else if (nbytes_sent == chunk->data.immortal.len) { @@ -1128,12 +1129,13 @@ } else { chunk->data.immortal.p += nbytes_sent; chunk->data.immortal.len -= nbytes_sent; + *nbytes_sent_total += nbytes_sent; + return 0; } - _nbytes_sent_total += nbytes_sent; + *nbytes_sent_total += nbytes_sent; break; } } - *nbytes_sent_total = _nbytes_sent_total; return 0; } /* }}} */ @@ -1970,9 +1972,13 @@ // Create a new php_network_populate_name_from_sockaddr_ex() API with a persistent flag? zend_string *tmp_addr = NULL; php_network_populate_name_from_sockaddr(addr, addr_len, &tmp_addr, NULL, 0); - client->addr_str = zend_string_dup(tmp_addr, /* persistent */ true); + if (EXPECTED(tmp_addr != NULL)) { + client->addr_str = zend_string_dup(tmp_addr, /* persistent */ true); + zend_string_release_ex(tmp_addr, /* persistent */ false); + } else { + client->addr_str = zend_string_init(ZEND_STRL("-"), /* persistent */ true); + } GC_MAKE_PERSISTENT_LOCAL(client->addr_str); - zend_string_release_ex(tmp_addr, /* persistent */ false); php_http_parser_init(&client->parser, PHP_HTTP_REQUEST); client->request_read = false; @@ -2185,6 +2191,11 @@ client->content_sender_initialized = true; if (client->request.request_method != PHP_HTTP_HEAD) { client->file_fd = fd; + } else { + /* Content-Length comes from the stat and no body is sent, so the fd is + not needed; it is still opened so HEAD gets the same 404 as GET on + an unreadable file. */ + close(fd); } { @@ -2712,7 +2723,7 @@ php_cli_server_client *client = NULL; php_socket_t client_sock; socklen_t socklen = server->socklen; - struct sockaddr *sa = pemalloc(server->socklen, 1); + struct sockaddr *sa = pecalloc(1, server->socklen, 1); client_sock = accept(server->server_sock, sa, &socklen); if (!ZEND_VALID_SOCKET(client_sock)) { pefree(sa, 1); diff -Nru php8.4-8.4.26/sapi/cli/tests/oom_request_parsing_next_request.phpt php8.4-8.4.27/sapi/cli/tests/oom_request_parsing_next_request.phpt --- php8.4-8.4.26/sapi/cli/tests/oom_request_parsing_next_request.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/sapi/cli/tests/oom_request_parsing_next_request.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +OOM during request parsing does not leak into the next request +--FILE-- + +--EXPECTF-- +bool(true) +Foo + +Warning: Bar in %s on line %d diff -Nru php8.4-8.4.26/sapi/cli/tests/oom_shutdown_function_next_request.phpt php8.4-8.4.27/sapi/cli/tests/oom_shutdown_function_next_request.phpt --- php8.4-8.4.26/sapi/cli/tests/oom_shutdown_function_next_request.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/sapi/cli/tests/oom_shutdown_function_next_request.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +OOM raised after a shutdown function does not leak into the next request +--FILE-- + +--EXPECT-- +bool(true) +Foo diff -Nru php8.4-8.4.26/sapi/cli/tests/php_cli_server_ipv6_error_message.phpt php8.4-8.4.27/sapi/cli/tests/php_cli_server_ipv6_error_message.phpt --- php8.4-8.4.26/sapi/cli/tests/php_cli_server_ipv6_error_message.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/sapi/cli/tests/php_cli_server_ipv6_error_message.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -14,8 +14,12 @@ 2 => array("pipe", "w") ); +$php = getenv('TEST_PHP_EXECUTABLE_ESCAPED'); +$args = getenv('TEST_PHP_EXTRA_ARGS'); +$cmd = "$php $args" . ' -S "[2001:db8::]:8080"'; + $process = proc_open( - PHP_BINARY . ' -S "[2001:db8::]:8080"', + $cmd, $descriptorspec, $pipes ); diff -Nru php8.4-8.4.26/sapi/cli/tests/php_cli_server_reset_before_accept.phpt php8.4-8.4.27/sapi/cli/tests/php_cli_server_reset_before_accept.phpt --- php8.4-8.4.26/sapi/cli/tests/php_cli_server_reset_before_accept.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/sapi/cli/tests/php_cli_server_reset_before_accept.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +Connection reset before it is accepted does not take the server down +--EXTENSIONS-- +sockets +--SKIPIF-- + +--FILE-- + 1, 'l_linger' => 0]); +stream_socket_shutdown($fp, STREAM_SHUT_RD); +fclose($fp); + +$fp = php_cli_server_connect(); +fwrite($fp, "GET / HTTP/1.1\r\nConnection: close\r\n\r\n"); +echo fgets($fp); +fclose($fp); +?> +--EXPECT-- +HTTP/1.1 200 OK diff -Nru php8.4-8.4.26/sapi/fpm/tests/bug77023-pm-dynamic-blocking-sigquit.phpt php8.4-8.4.27/sapi/fpm/tests/bug77023-pm-dynamic-blocking-sigquit.phpt --- php8.4-8.4.26/sapi/fpm/tests/bug77023-pm-dynamic-blocking-sigquit.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/sapi/fpm/tests/bug77023-pm-dynamic-blocking-sigquit.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -2,6 +2,7 @@ FPM: Blocked SIGQUIT prevents idle process to be killed --EXTENSIONS-- pcntl +--FLAKY-- --SKIPIF-- +--FILE-- + '100K']); +var_dump(strlen($post['field'])); +EOT; + +$tester = new FPM\Tester($cfg, $code); +$tester->start(); +$tester->expectLogStartNotices(); +echo $tester + ->request(method: 'PUT', stdin: [ + 'parts' => [[ + 'name' => 'field', + 'value' => str_repeat('x', 50 * 1024), + ]], + ]) + ->getBody(); +$tester->terminate(); +$tester->expectLogTerminatingNotices(); +$tester->close(); + +?> +--EXPECT-- +int(51200) +--CLEAN-- + diff -Nru php8.4-8.4.26/sapi/fuzzer/fuzzer-sapi.c php8.4-8.4.27/sapi/fuzzer/fuzzer-sapi.c --- php8.4-8.4.26/sapi/fuzzer/fuzzer-sapi.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/sapi/fuzzer/fuzzer-sapi.c 2026-10-19 14:38:59.000000000 +0000 @@ -195,6 +195,8 @@ EG(exception) = NULL; } + zend_mm_oom_info_dtor(&EG(delayed_oom)); + /* Some fuzzers (like unserialize) may create circular structures. Make sure we free them. * Two calls are performed to handle objects with destructors. */ zend_gc_collect_cycles(); @@ -273,6 +275,12 @@ if (execute) { zend_execute(op_array, NULL); } + if (ZEND_HAS_OOM()) { + zend_handle_delayed_oom(); + } + if (EG(exception)) { + zend_exception_error(EG(exception), E_WARNING); + } zend_destroy_static_vars(op_array); destroy_op_array(op_array); efree(op_array); diff -Nru php8.4-8.4.26/sapi/phpdbg/phpdbg.c php8.4-8.4.27/sapi/phpdbg/phpdbg.c --- php8.4-8.4.26/sapi/phpdbg/phpdbg.c 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/sapi/phpdbg/phpdbg.c 2026-10-19 14:38:59.000000000 +0000 @@ -1446,7 +1446,7 @@ if (php_request_startup() == FAILURE) { PUTS("Could not startup"); - return 1; + goto phpdbg_out; } #ifndef _WIN32 diff -Nru php8.4-8.4.26/tests/basic/GHSA-2cv3-554h-jpmh_multipart.phpt php8.4-8.4.27/tests/basic/GHSA-2cv3-554h-jpmh_multipart.phpt --- php8.4-8.4.26/tests/basic/GHSA-2cv3-554h-jpmh_multipart.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-2cv3-554h-jpmh_multipart.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +GHSA-2cv3-554h-jpmh post_max_size bypass - multipart +--EXTENSIONS-- +zend_test +--INI-- +post_max_size=100K +--FILE-- + +--EXPECTF-- +int(7) + +Warning: Actual POST length does not match Content-Length, and exceeds 102400 bytes in %s on line %d +bool(true) diff -Nru php8.4-8.4.26/tests/basic/GHSA-2cv3-554h-jpmh_urlencoded.phpt php8.4-8.4.27/tests/basic/GHSA-2cv3-554h-jpmh_urlencoded.phpt --- php8.4-8.4.26/tests/basic/GHSA-2cv3-554h-jpmh_urlencoded.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-2cv3-554h-jpmh_urlencoded.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +GHSA-2cv3-554h-jpmh post_max_size bypass - application/x-www-form-urlencoded +--EXTENSIONS-- +zend_test +--INI-- +post_max_size=100K +--FILE-- + +--EXPECTF-- +int(5) + +Warning: zend_test_handle_post_data(): Actual POST length does not match Content-Length, and exceeds 102400 bytes in %s on line %d +bool(true) diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_001.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_001.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_001.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_001.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +GHSA-f883-x959-3vr9 001 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Disposition: form-data; name="d1" + +test +--b-- +--FILE-- + +--EXPECT-- +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_002.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_002.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_002.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_002.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +GHSA-f883-x959-3vr9 002 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Ignored: value +Content-Disposition: form-data; name="d1" + +test +--b-- +--FILE-- + +--EXPECT-- +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_003.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_003.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_003.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_003.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,21 @@ +--TEST-- +GHSA-f883-x959-3vr9 003 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Disposition: form-data; name="d1" +Ignored: value + +test +--b-- +--FILE-- + +--EXPECT-- +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_004.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_004.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_004.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_004.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +GHSA-f883-x959-3vr9 004 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Disposition: form-data; + name="d1" +Ignored: value + value + +test +--b-- +--FILE-- + +--EXPECT-- +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_005.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_005.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_005.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_005.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +GHSA-f883-x959-3vr9 005 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Ignored: value + value +Content-Disposition: form-data; + name="d1" + +test +--b-- +--FILE-- + +--EXPECT-- +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_006.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_006.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_006.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_006.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,43 @@ +--TEST-- +GHSA-f883-x959-3vr9 006 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Disposition: form-data; name="f1"; filename="f1" +Content-Type: text/plain + +test +--b +Content-Disposition: form-data; name="d1" + +test +--b-- +--FILE-- + +--EXPECTF-- +array(1) { + ["d1"]=> + string(4) "test" +} +array(1) { + ["f1"]=> + array(6) { + ["name"]=> + string(2) "f1" + ["full_path"]=> + string(2) "f1" + ["type"]=> + string(10) "text/plain" + ["tmp_name"]=> + string(%d) "%s" + ["error"]=> + int(0) + ["size"]=> + int(4) + } +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_007.inc php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_007.inc --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_007.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_007.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,3 @@ + diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_007.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_007.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_007.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_007.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,63 @@ +--TEST-- +GHSA-f883-x959-3vr9 007 +--SKIPIF-- + +--FILE-- + '1', + 'CONTENT_TYPE' => "multipart/form-data; boundary=b", + 'CONTENT_LENGTH' => strlen($body), + 'REQUEST_METHOD' => 'POST', + 'SCRIPT_FILENAME' => __DIR__ . '/GHSA-f883-x959-3vr9_007.inc', +]); + +$spec = [ + 0 => ['pipe', 'r'], + 1 => STDOUT, + 2 => STDOUT, +]; + +$pipes = []; + +print "Starting...\n"; + +$handle = proc_open($cmd, $spec, $pipes, getcwd(), $env); + +fwrite($pipes[0], $body); + +$status = proc_close($handle); + +print "\n"; + +?> +--EXPECTF-- +Starting... +X-Powered-By: %s +Content-type: text/html; charset=UTF-8 + +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_008.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_008.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_008.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_008.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +GHSA-f883-x959-3vr9 008 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Disposition: form-data; + name="f1"; filename="f1" +Content-Type: text/plain + +test +--b +Content-Disposition: form-data; name="d1" + +test +--b-- +--FILE-- + +--EXPECTF-- +array(1) { + ["d1"]=> + string(4) "test" +} +array(1) { + ["f1"]=> + array(6) { + ["name"]=> + string(2) "f1" + ["full_path"]=> + string(2) "f1" + ["type"]=> + string(10) "text/plain" + ["tmp_name"]=> + string(%d) "%s" + ["error"]=> + int(0) + ["size"]=> + int(4) + } +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_009.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_009.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_009.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_009.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +GHSA-f883-x959-3vr9 009 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Type: text/plain +Content-Disposition: form-data; + name="f1"; filename="f1" + +test +--b +Content-Disposition: form-data; name="d1" + +test +--b-- +--FILE-- + +--EXPECTF-- +array(1) { + ["d1"]=> + string(4) "test" +} +array(1) { + ["f1"]=> + array(6) { + ["name"]=> + string(2) "f1" + ["full_path"]=> + string(2) "f1" + ["type"]=> + string(10) "text/plain" + ["tmp_name"]=> + string(%d) "%s" + ["error"]=> + int(0) + ["size"]=> + int(4) + } +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_010.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_010.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_010.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_010.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,45 @@ +--TEST-- +GHSA-f883-x959-3vr9 010 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +Content-Disposition: form-data; name="f1"; filename="f1" +Content-Disposition: form-data; name="f2"; filename="f2" +Content-Type: text/plain + +test +--b +Content-Disposition: form-data; name="d1" +Content-Disposition: form-data; name="d2" + +test +--b-- +--FILE-- + +--EXPECTF-- +array(1) { + ["d1"]=> + string(4) "test" +} +array(1) { + ["f1"]=> + array(6) { + ["name"]=> + string(2) "f1" + ["full_path"]=> + string(2) "f1" + ["type"]=> + string(10) "text/plain" + ["tmp_name"]=> + string(%d) "%s" + ["error"]=> + int(0) + ["size"]=> + int(4) + } +} diff -Nru php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_011.phpt php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_011.phpt --- php8.4-8.4.26/tests/basic/GHSA-f883-x959-3vr9_011.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/GHSA-f883-x959-3vr9_011.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +GHSA-f883-x959-3vr9 011 +--POST_RAW-- +Content-Type: multipart/form-data; boundary=b +--b +content-disposition: form-data; name="d1" + +test +--b-- +--FILE-- + +--EXPECT-- +array(1) { + ["d1"]=> + string(4) "test" +} diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867.inc php8.4-8.4.27/tests/basic/oom_rfc1867.inc --- php8.4-8.4.26/tests/basic/oom_rfc1867.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,88 @@ + 0) { + $chunk = min($bytes, 1024 * 1024); + fwrite($fh, str_repeat($char, $chunk)); + $bytes -= $chunk; + } +} + +/* Calls $writeBody() to write the body parts, appends the closing boundary, + * posts the result and prints what php-cgi reported. + * + * $extraIni is passed as additional -d options, for the paths that only run + * with a given extension configured (mbstring translation, upload progress). */ +function oom_rfc1867_request(callable $writeBody, string $memoryLimit = '8M', array $extraIni = [], ?string $target = null): void +{ + $bodyFile = tempnam(sys_get_temp_dir(), 'oom_rfc1867'); + $fh = fopen($bodyFile, 'wb'); + $writeBody($fh); + fwrite($fh, '--' . OOM_RFC1867_BOUNDARY . "--\r\n"); + fclose($fh); + + $cmd = [ + getenv('TEST_PHP_CGI_EXECUTABLE'), + '-C', + '-n', + '-d', 'memory_limit=' . $memoryLimit, + '-d', 'post_max_size=1G', + '-d', 'upload_max_filesize=1G', + '-d', 'max_input_vars=10000000', + '-d', 'max_file_uploads=1000000', + '-d', 'max_multipart_body_parts=10000000', + '-d', 'max_input_time=-1', + '-d', 'html_errors=0', + ]; + + foreach ($extraIni as $ini) { + $cmd[] = '-d'; + $cmd[] = $ini; + } + + $env = array_merge($_ENV, [ + 'REDIRECT_STATUS' => '1', + 'CONTENT_TYPE' => 'multipart/form-data; boundary=' . OOM_RFC1867_BOUNDARY, + 'CONTENT_LENGTH' => filesize($bodyFile), + 'REQUEST_METHOD' => 'POST', + 'SCRIPT_FILENAME' => $target ?? __DIR__ . '/oom_rfc1867_target.inc', + ]); + + $spec = [ + 0 => ['file', $bodyFile, 'r'], + 1 => ['pipe', 'w'], + 2 => ['pipe', 'w'], + ]; + + $pipes = []; + $handle = proc_open($cmd, $spec, $pipes, getcwd(), $env); + $out = stream_get_contents($pipes[1]); + $err = stream_get_contents($pipes[2]); + fclose($pipes[1]); + fclose($pipes[2]); + proc_close($handle); + unlink($bodyFile); + + /* Drop the CGI headers, keep the body. */ + $out = preg_replace("/^.*?\r\n\r\n/s", '', $out); + echo trim(str_replace("\r\n", "\n", $out)), "\n"; + if ($err !== '') { + echo 'stderr: ', trim($err), "\n"; + } +} diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_array_upload_name.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_array_upload_name.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_array_upload_name.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_array_upload_name.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,45 @@ +--TEST-- +rfc1867: a huge array upload field name doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 16777216 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_early_report.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_early_report.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_early_report.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_early_report.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,34 @@ +--TEST-- +rfc1867: the soft limit is reported immediately after input parsing +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_field_name.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_field_name.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_field_name.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_field_name.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +rfc1867: a huge form field name doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 10485760 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_files.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_files.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_files.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_files.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +rfc1867: a huge number of file parts doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_files_registration.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_files_registration.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_files_registration.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_files_registration.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,58 @@ +--TEST-- +rfc1867: reaching the soft limit at each step of the $_FILES registration +--SKIPIF-- + +--FILE-- +[k]" - the field name carries the weight. */ +foreach ($padsKb as $padKb) { + oom_rfc1867_request(function ($fh) use ($padKb) { + oom_rfc1867_pad($fh, $padKb * 1024); + fwrite($fh, '--' . OOM_RFC1867_BOUNDARY . "\r\n" + . 'Content-Disposition: form-data; name="'); + oom_rfc1867_fill($fh, 700 * 1024); + fwrite($fh, "[k]\"; filename=\"f.txt\"\r\nContent-Type: text/plain\r\n\r\nx\r\n"); + }); +} + +/* name="u[<700K>]" - the weight is in the array index instead. */ +oom_rfc1867_request(function ($fh) { + oom_rfc1867_pad($fh, 1344 * 1024); + fwrite($fh, '--' . OOM_RFC1867_BOUNDARY . "\r\n" + . 'Content-Disposition: form-data; name="u['); + oom_rfc1867_fill($fh, 700 * 1024); + fwrite($fh, "]\"; filename=\"f.txt\"\r\nContent-Type: text/plain\r\n\r\nx\r\n"); +}); + +/* The [full_path] entry is in oom_rfc1867_files_registration_full_path.phpt: + * it needs a padding that only Zend MM's accounting can produce. */ +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_files_registration_full_path.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_files_registration_full_path.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_files_registration_full_path.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_files_registration_full_path.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +rfc1867: reaching the soft limit on the $_FILES [full_path] entry +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_form_value.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_form_value.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_form_value.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_form_value.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +rfc1867: a huge form variable value doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_header_continuation.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_header_continuation.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_header_continuation.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_header_continuation.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +rfc1867: a huge header value built from continuation lines doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_header_count.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_header_count.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_header_count.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_header_count.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +rfc1867: a part with a huge number of headers doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECT-- +post=1 files=0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_long_header_line.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_long_header_line.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_long_header_line.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_long_header_line.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,45 @@ +--TEST-- +rfc1867: a huge Content-Disposition line doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_mb_encoding.phpt php8.4-8.4.27/tests/basic/oom_rfc1867_mb_encoding.phpt --- php8.4-8.4.26/tests/basic/oom_rfc1867_mb_encoding.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_mb_encoding.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,114 @@ +--TEST-- +rfc1867: mbstring input conversion of a body part doesn't reach the hard limit +--SKIPIF-- + +--FILE-- + "א": one byte in, seven bytes out. */ + oom_rfc1867_fill($fh, $kb * 1024, "\xE0"); + fwrite($fh, "\r\n"); + }, '8M', [ + 'mbstring.encoding_translation=1', + 'internal_encoding=HTML-ENTITIES', + 'mbstring.http_input=ISO-8859-8', + 'error_reporting=' . (E_ALL & ~E_DEPRECATED), + ]); +} + +/* UTF-32: a flat 4x on every input byte. The window where the conversion is + * what reaches the limit - rather than the body read before it - depends on how + * the allocator accounts memory, and Zend MM's chunks and the tracked + * allocator's exact sizes only overlap in a single point. */ +$utf32Kb = getenv('USE_ZEND_ALLOC') === '0' + ? [1152, 1280] + : [896, 1280]; + +foreach ($utf32Kb as $kb) { + oom_rfc1867_request(function ($fh) use ($kb) { + fwrite($fh, '--' . OOM_RFC1867_BOUNDARY . "\r\n" + . "Content-Disposition: form-data; name=\"f\"\r\n\r\n"); + oom_rfc1867_fill($fh, $kb * 1024, "\x80"); + fwrite($fh, "\r\n"); + }, '8M', [ + 'mbstring.encoding_translation=1', + 'internal_encoding=UTF-32', + 'mbstring.http_input=CP1252', + 'error_reporting=' . (E_ALL & ~E_DEPRECATED), + ]); +} +?> +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_mb_skipif.inc php8.4-8.4.27/tests/basic/oom_rfc1867_mb_skipif.inc --- php8.4-8.4.26/tests/basic/oom_rfc1867_mb_skipif.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_mb_skipif.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,5 @@ + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/basic/oom_rfc1867_session_skipif.inc php8.4-8.4.27/tests/basic/oom_rfc1867_session_skipif.inc --- php8.4-8.4.26/tests/basic/oom_rfc1867_session_skipif.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/basic/oom_rfc1867_session_skipif.inc 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,5 @@ + +--FILE-- + +--EXPECTF-- +Fatal error: Allowed memory size of 4194304 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 4194304 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 8388608 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 +Fatal error: Allowed memory size of 4194304 bytes exhausted %S(tried to allocate %d bytes) in Unknown on line 0 diff -Nru php8.4-8.4.26/tests/output/gh15179.phpt php8.4-8.4.27/tests/output/gh15179.phpt --- php8.4-8.4.26/tests/output/gh15179.phpt 2026-09-22 15:00:02.000000000 +0000 +++ php8.4-8.4.27/tests/output/gh15179.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -15,4 +15,4 @@ output_add_rewrite_var($var, $var); ?> --EXPECTF-- -Fatal error: Allowed memory size of %d bytes exhausted %s +%rHard memory limit|Fatal error: Allowed memory size%r of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d%r(\n\nTermsig=9)?%r diff -Nru php8.4-8.4.26/tests/output/oom_in_internal_output_handler.phpt php8.4-8.4.27/tests/output/oom_in_internal_output_handler.phpt --- php8.4-8.4.26/tests/output/oom_in_internal_output_handler.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/output/oom_in_internal_output_handler.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +OOM inside an internal output handler must not free the running handler +--EXTENSIONS-- +mbstring +--INI-- +memory_limit=64M +output_encoding=HTML-ENTITIES +mbstring.encoding_translation=1 +--FILE-- + +--EXPECT-- diff -Nru php8.4-8.4.26/tests/security/open_basedir_nul_win32.phpt php8.4-8.4.27/tests/security/open_basedir_nul_win32.phpt --- php8.4-8.4.26/tests/security/open_basedir_nul_win32.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.27/tests/security/open_basedir_nul_win32.phpt 2026-10-19 14:38:59.000000000 +0000 @@ -0,0 +1,57 @@ +--TEST-- +GH-24148: Bare NUL remains usable with open_basedir on Windows +--SKIPIF-- + +--INI-- +open_basedir= +--FILE-- + __DIR__, + 'Devices explicitly allowed' => __FILE__ . ';NUL;NUL:', + 'Only file allowed' => __FILE__, +] as $label => $basedir) { + echo "$label:\n"; + var_dump(ini_set('open_basedir', $basedir) !== false); + foreach (['NUL', 'nul:'] as $name) { + $stream = @fopen($name, 'c'); + var_dump(is_resource($stream)); + if (is_resource($stream)) { + fclose($stream); + } + } + $process = @proc_open('cmd /c exit 0', [ + ['pipe', 'r'], ['file', 'NUL', 'w'], ['file', 'nul:', 'w'], + ], $pipes); + if (is_resource($process)) { + fclose($pipes[0]); + var_dump(proc_close($process) === 0); + } else { + var_dump(false); + } + var_dump(file_get_contents(__FILE__) !== false); +} +?> +--EXPECT-- +Directory allowed: +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +Devices explicitly allowed: +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +Only file allowed: +bool(true) +bool(false) +bool(false) +bool(false) +bool(true)