svn commit: r482000 - in head/textproc/pecl-yaml: . files
Danilo G. Baio
dbaio at FreeBSD.org
Sat Oct 13 17:50:38 UTC 2018
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 at 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);
More information about the svn-ports-head
mailing list