static PHP_METHOD(pqstm, bind) {
long param_no;
zval *param_ref;
+ zend_error_handling zeh;
+ STATUS rv;
+
+ zend_replace_error_handling(EH_THROW, exce(EX_INVALID_ARGUMENT), &zeh TSRMLS_CC);
+ rv = zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz", ¶m_no, ¶m_ref);
+ zend_restore_error_handling(&zeh TSRMLS_CC);
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz", ¶m_no, ¶m_ref)) {
+ if (SUCCESS == rv) {
php_pqstm_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
if (!obj->intern) {
} else if (obj->intern->conn->intern->unbuffered && !PQsetSingleRowMode(obj->intern->conn->intern->conn)) {
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to enable unbuffered mode (%s)", PHP_PQerrorMessage(obj->intern->conn->intern->conn));
} else {
- php_pq_callback_dtor(&obj->intern->conn->intern->onevent);
- if (resolver.fci.size > 0) {
- obj->intern->conn->intern->onevent = resolver;
- php_pq_callback_addref(&obj->intern->conn->intern->onevent);
- }
+ php_pq_callback_recurse(&obj->intern->conn->intern->onevent, &resolver TSRMLS_CC);
obj->intern->conn->intern->poller = PQconsumeInput;
}
} else if (!PQsendDescribePrepared(obj->intern->conn->intern->conn, obj->intern->name)) {
throw_exce(EX_IO TSRMLS_CC, "Failed to describe statement: %s", PHP_PQerrorMessage(obj->intern->conn->intern->conn));
} else {
- php_pq_callback_dtor(&obj->intern->conn->intern->onevent);
- if (resolver.fci.size > 0) {
- obj->intern->conn->intern->onevent = resolver;
- php_pq_callback_addref(&obj->intern->conn->intern->onevent);
- }
+ php_pq_callback_recurse(&obj->intern->conn->intern->onevent, &resolver TSRMLS_CC);
obj->intern->conn->intern->poller = PQconsumeInput;
php_pqconn_notify_listeners(obj->intern->conn TSRMLS_CC);
}