Skip to content

Commit 6c1a72c

Browse files
Fix build on php 7.0 (#563)
Co-authored-by: Remi Collet <[email protected]>
1 parent 1d73741 commit 6c1a72c

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

kafka_error_exception.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ void create_kafka_error(zval *return_value, const rd_kafka_error_t *error) /* {{
3939
{
4040
object_init_ex(return_value, ce_kafka_error);
4141

42-
zend_string *message = zend_strpprintf(0, "%s (RD_KAFKA_RESP_ERR_%s)", rd_kafka_error_string(error), rd_kafka_error_name(error));
43-
zend_update_property_str(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("message"), message);
44-
zend_string_release(message);
42+
char message[1024];
43+
snprintf(message, sizeof(message), "%s (RD_KAFKA_RESP_ERR_%s)", rd_kafka_error_string(error), rd_kafka_error_name(error));
44+
zend_update_property_string(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("message"), message);
4545

4646
zend_update_property_long(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("code"), rd_kafka_error_code(error));
4747
zend_update_property_string(ce_kafka_error, Z_RDKAFKA_PROP_OBJ(return_value), ZEND_STRL("error_string"), rd_kafka_error_string(error));

php_rdkafka_priv.h

+15-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,21 @@ static zend_always_inline void *zend_object_alloc(size_t obj_size, zend_class_en
7979
memset(obj, 0, obj_size - sizeof(zval));
8080
return obj;
8181
}
82-
#endif
82+
83+
static zend_always_inline zend_string *zval_get_tmp_string(zval *op, zend_string **tmp) {
84+
if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
85+
*tmp = NULL;
86+
return Z_STR_P(op);
87+
} else {
88+
return *tmp = _zval_get_string_func(op);
89+
}
90+
}
91+
static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
92+
if (UNEXPECTED(tmp)) {
93+
zend_string_release(tmp);
94+
}
95+
}
96+
#endif // PHP_MINOR_VERSION < 3
8397

8498
#endif // PHP 7
8599

rdkafka.c

+1-3
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,7 @@ PHP_METHOD(RdKafka, oauthbearerSetToken)
491491
zend_string *tmp_extension_val_str;
492492
zend_string *extension_val_str = zval_get_tmp_string(extension_zval, &tmp_extension_val_str);
493493
extensions[pos++] = estrdup(ZSTR_VAL(extension_val_str));
494-
if (tmp_extension_val_str) {
495-
zend_string_release(tmp_extension_val_str);
496-
}
494+
zend_tmp_string_release(tmp_extension_val_str);
497495
} ZEND_HASH_FOREACH_END();
498496
}
499497

tests/oauthbearer_integration.phpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function generateJws($scope = 'required-scope', $expiresInSeconds = 60)
2020
$principal,
2121
$expirySeconds,
2222
$nowSeconds - 10,
23-
$scope,
23+
$scope
2424
);
2525
$headerJwsSegment = 'eyJhbGciOiJub25lIn0';
2626
$claimsJwsSegment = base64_encode($claimsJson);

0 commit comments

Comments
 (0)