From fac6817c1ec72170c228776c0af079d6a1c791bf Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sun, 18 Dec 2016 11:05:30 +0100 Subject: [PATCH] Fix #74 --- kafka_consumer.c | 2 +- rdkafka.c | 6 +++--- tests/bug74.phpt | 14 ++++++++++++++ topic.c | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 tests/bug74.phpt diff --git a/kafka_consumer.c b/kafka_consumer.c index 2d7a9b98..15ffa805 100644 --- a/kafka_consumer.c +++ b/kafka_consumer.c @@ -411,7 +411,7 @@ static void consumer_commit(int async, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */ rd_kafka_topic_partition_list_t *offsets = NULL; rd_kafka_resp_err_t err; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z", &zarg) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z!", &zarg) == FAILURE) { return; } diff --git a/rdkafka.c b/rdkafka.c index 1f606932..3597a92c 100644 --- a/rdkafka.c +++ b/rdkafka.c @@ -251,7 +251,7 @@ PHP_METHOD(RdKafka__Consumer, __construct) zend_replace_error_handling(EH_THROW, spl_ce_InvalidArgumentException, &error_handling TSRMLS_CC); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O", &zconf, ce_kafka_conf) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O!", &zconf, ce_kafka_conf) == FAILURE) { zend_restore_error_handling(&error_handling TSRMLS_CC); return; } @@ -423,7 +423,7 @@ PHP_METHOD(RdKafka__Kafka, newTopic) rd_kafka_topic_conf_t *conf = NULL; kafka_conf_object *conf_intern; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|O", &topic, &topic_len, &zconf, ce_kafka_topic_conf) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|O!", &topic, &topic_len, &zconf, ce_kafka_topic_conf) == FAILURE) { return; } @@ -591,7 +591,7 @@ PHP_METHOD(RdKafka__Producer, __construct) zend_replace_error_handling(EH_THROW, spl_ce_InvalidArgumentException, &error_handling TSRMLS_CC); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O", &zconf, ce_kafka_conf) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O!", &zconf, ce_kafka_conf) == FAILURE) { zend_restore_error_handling(&error_handling TSRMLS_CC); return; } diff --git a/tests/bug74.phpt b/tests/bug74.phpt new file mode 100644 index 00000000..6e1ed3ad --- /dev/null +++ b/tests/bug74.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug 74 +--FILE-- +newTopic("batman", null); + +$producer = new RdKafka\Producer(null); + +if (class_exists('RdKafka\TopicPartition')) { + $tp = new RdKafka\TopicPartition("batman", 0, null); +} +--EXPECT-- diff --git a/topic.c b/topic.c index 64b2e038..11c0de82 100644 --- a/topic.c +++ b/topic.c @@ -375,7 +375,7 @@ PHP_METHOD(RdKafka__ProducerTopic, produce) rd_kafka_resp_err_t err; kafka_topic_object *intern; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls|s", &partition, &msgflags, &payload, &payload_len, &key, &key_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls|s!", &partition, &msgflags, &payload, &payload_len, &key, &key_len) == FAILURE) { return; }