summaryrefslogtreecommitdiffstats
path: root/upstream.patch
diff options
context:
space:
mode:
Diffstat (limited to 'upstream.patch')
-rw-r--r--upstream.patch85
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);