diff options
Diffstat (limited to 'upstream.patch')
-rw-r--r-- | upstream.patch | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/upstream.patch b/upstream.patch new file mode 100644 index 0000000..fda3ecf --- /dev/null +++ b/upstream.patch @@ -0,0 +1,85 @@ +From 6c1a72c93812bf53515ff9293e3ab4849c09b282 Mon Sep 17 00:00:00 2001 +From: Arnaud Le Blanc <arnaud.lb@gmail.com> +Date: Fri, 25 Oct 2024 13:59:21 +0200 +Subject: [PATCH] Fix build on php 7.0 (#563) + +Co-authored-by: Remi Collet <remi@remirepo.net> +--- + kafka_error_exception.c | 6 +++--- + php_rdkafka_priv.h | 16 +++++++++++++++- + rdkafka.c | 4 +--- + tests/oauthbearer_integration.phpt | 2 +- + 4 files changed, 20 insertions(+), 8 deletions(-) + +diff --git a/kafka_error_exception.c b/kafka_error_exception.c +index 8c19ca0c..f28730fd 100644 +--- a/kafka_error_exception.c ++++ b/kafka_error_exception.c +@@ -39,9 +39,9 @@ void create_kafka_error(zval *return_value, const rd_kafka_error_t *error) /* {{ + { + object_init_ex(return_value, ce_kafka_error); + +- zend_string *message = zend_strpprintf(0, "%s (RD_KAFKA_RESP_ERR_%s)", rd_kafka_error_string(error), rd_kafka_error_name(error)); +- zend_update_property_str(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("message"), message); +- zend_string_release(message); ++ char message[1024]; ++ snprintf(message, sizeof(message), "%s (RD_KAFKA_RESP_ERR_%s)", rd_kafka_error_string(error), rd_kafka_error_name(error)); ++ zend_update_property_string(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("message"), message); + + zend_update_property_long(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("code"), rd_kafka_error_code(error)); + zend_update_property_string(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("error_string"), rd_kafka_error_string(error)); +diff --git a/php_rdkafka_priv.h b/php_rdkafka_priv.h +index 695a2739..ee6b440e 100644 +--- a/php_rdkafka_priv.h ++++ b/php_rdkafka_priv.h +@@ -79,7 +79,21 @@ static zend_always_inline void *zend_object_alloc(size_t obj_size, zend_class_en + memset(obj, 0, obj_size - sizeof(zval)); + return obj; + } +-#endif ++ ++static zend_always_inline zend_string *zval_get_tmp_string(zval *op, zend_string **tmp) { ++ if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) { ++ *tmp = NULL; ++ return Z_STR_P(op); ++ } else { ++ return *tmp = _zval_get_string_func(op); ++ } ++} ++static zend_always_inline void zend_tmp_string_release(zend_string *tmp) { ++ if (UNEXPECTED(tmp)) { ++ zend_string_release(tmp); ++ } ++} ++#endif // PHP_MINOR_VERSION < 3 + + #endif // PHP 7 + +diff --git a/rdkafka.c b/rdkafka.c +index 4029409a..727fc8c6 100644 +--- a/rdkafka.c ++++ b/rdkafka.c +@@ -491,9 +491,7 @@ PHP_METHOD(RdKafka, oauthbearerSetToken) + zend_string *tmp_extension_val_str; + zend_string *extension_val_str = zval_get_tmp_string(extension_zval, &tmp_extension_val_str); + extensions[pos++] = estrdup(ZSTR_VAL(extension_val_str)); +- if (tmp_extension_val_str) { +- zend_string_release(tmp_extension_val_str); +- } ++ zend_tmp_string_release(tmp_extension_val_str); + } ZEND_HASH_FOREACH_END(); + } + +diff --git a/tests/oauthbearer_integration.phpt b/tests/oauthbearer_integration.phpt +index b95de0f6..1b9399cb 100644 +--- a/tests/oauthbearer_integration.phpt ++++ b/tests/oauthbearer_integration.phpt +@@ -20,7 +20,7 @@ function generateJws($scope = 'required-scope', $expiresInSeconds = 60) + $principal, + $expirySeconds, + $nowSeconds - 10, +- $scope, ++ $scope + ); + $headerJwsSegment = 'eyJhbGciOiJub25lIn0'; + $claimsJwsSegment = base64_encode($claimsJson); |