Date: Sat, 13 Oct 2018 17:50:37 +0000 (UTC) From: "Danilo G. Baio" <dbaio@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r482000 - in head/textproc/pecl-yaml: . files Message-ID: <201810131750.w9DHobNJ010950@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dbaio Date: Sat Oct 13 17:50:36 2018 New Revision: 482000 URL: https://svnweb.freebsd.org/changeset/ports/482000 Log: textproc/pecl-yaml: Fix build with PHP 7.3 Obtained from: upstream Added: head/textproc/pecl-yaml/files/ head/textproc/pecl-yaml/files/patch-emit.c (contents, props changed) Modified: head/textproc/pecl-yaml/Makefile Modified: head/textproc/pecl-yaml/Makefile ============================================================================== --- head/textproc/pecl-yaml/Makefile Sat Oct 13 17:48:38 2018 (r481999) +++ head/textproc/pecl-yaml/Makefile Sat Oct 13 17:50:36 2018 (r482000) @@ -14,6 +14,6 @@ LICENSE_FILE= ${WRKSRC}/LICENSE LIB_DEPENDS= libyaml.so:textproc/libyaml USES= php:pecl -IGNORE_WITH_PHP= 56 73 +IGNORE_WITH_PHP= 56 .include <bsd.port.mk> Added: head/textproc/pecl-yaml/files/patch-emit.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/textproc/pecl-yaml/files/patch-emit.c Sat Oct 13 17:50:36 2018 (r482000) @@ -0,0 +1,123 @@ +https://github.com/php/pecl-file_formats-yaml/commit/a217a24a674adafd03a03382e0950cbb743ba9a8 +From a217a24a674adafd03a03382e0950cbb743ba9a8 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Wed, 4 Jul 2018 12:14:48 +0200 +Subject: [PATCH] Fix for PHP 7.3 + +--- emit.c.orig 2017-07-29 21:56:18 UTC ++++ emit.c +@@ -173,7 +173,11 @@ static void y_scan_recursion(const y_emit_state_t *sta + return; + } + ++#if PHP_VERSION_ID >= 70300 ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE) && GC_IS_RECURSIVE(ht)) { ++#else + if (ZEND_HASH_APPLY_PROTECTION(ht) && ht->u.v.nApplyCount > 0) { ++#endif + zval tmp; + ZVAL_LONG(&tmp, (zend_ulong) ht); + +@@ -182,17 +186,29 @@ static void y_scan_recursion(const y_emit_state_t *sta + return; + } + ++#if PHP_VERSION_ID >= 70300 ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE)) { ++ GC_PROTECT_RECURSION(ht); ++ } ++#else + if (ZEND_HASH_APPLY_PROTECTION(ht)) { + ht->u.v.nApplyCount++; + } ++#endif + + ZEND_HASH_FOREACH_VAL(ht, elm) { + y_scan_recursion(state, elm TSRMLS_CC); + } ZEND_HASH_FOREACH_END(); + ++#if PHP_VERSION_ID >= 70300 ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE)) { ++ GC_UNPROTECT_RECURSION(ht); ++ } ++#else + if (ZEND_HASH_APPLY_PROTECTION(ht)) { + ht->u.v.nApplyCount--; + } ++#endif + + return; + } +@@ -462,7 +478,6 @@ static int y_write_array( + zval key_zval; + zend_ulong kidx; + zend_string *kstr; +- HashTable *tmp_ht; + zend_long recursive_idx = -1; + char *anchor = { 0 }; + size_t anchor_size; +@@ -495,7 +510,11 @@ static int y_write_array( + anchor = (char*) emalloc(anchor_size + 1); + snprintf(anchor, anchor_size + 1, "refid%ld", recursive_idx + 1); + +- if (ZEND_HASH_APPLY_PROTECTION(ht) && ht->u.v.nApplyCount > 1) { ++#if PHP_VERSION_ID >= 70300 ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE) && GC_IS_RECURSIVE(ht)) { ++#else ++ if (ZEND_HASH_APPLY_PROTECTION(ht) && ht->u.v.nApplyCount > 0) { ++#endif + /* node has been visited before */ + status = yaml_alias_event_initialize( + &event, (yaml_char_t *) anchor); +@@ -536,6 +555,18 @@ static int y_write_array( + return FAILURE; + } + ++#if PHP_VERSION_ID >= 70300 ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE)) { ++ /* increment access count for hash */ ++ GC_PROTECT_RECURSION(ht); ++ } ++#else ++ if (ZEND_HASH_APPLY_PROTECTION(ht)) { ++ /* increment access count for hash */ ++ ht->u.v.nApplyCount++; ++ } ++#endif ++ + /* emit array elements */ + ZEND_HASH_FOREACH_KEY_VAL(ht, kidx, kstr, elm) { + ZVAL_DEREF(elm); +@@ -555,23 +586,23 @@ static int y_write_array( + } + } + +- tmp_ht = HASH_OF(elm); +- if (tmp_ht && ZEND_HASH_APPLY_PROTECTION(tmp_ht)) { +- /* increment access count for hash */ +- tmp_ht->u.v.nApplyCount++; +- } +- + status = y_write_zval(state, elm, NULL TSRMLS_CC); + +- if (tmp_ht && ZEND_HASH_APPLY_PROTECTION(tmp_ht)) { +- tmp_ht->u.v.nApplyCount--; +- } + + if (SUCCESS != status) { + return FAILURE; + } + } ZEND_HASH_FOREACH_END(); + ++#if PHP_VERSION_ID >= 70300 ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE)) { ++ GC_UNPROTECT_RECURSION(ht); ++ } ++#else ++ if (ZEND_HASH_APPLY_PROTECTION(ht)) { ++ ht->u.v.nApplyCount--; ++ } ++#endif + + if (Y_ARRAY_SEQUENCE == array_type) { + status = yaml_sequence_end_event_initialize(&event);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201810131750.w9DHobNJ010950>