@@ -140,9 +140,21 @@ zend_class_entry* phongo_exception_from_mongoc_domain(uint32_t /* mongoc_error_d
140140 return spl_ce_RuntimeException ;
141141 }
142142}
143- PHONGO_API zval * phongo_throw_exception (php_phongo_error_domain_t domain , const char * message TSRMLS_DC )
143+ PHONGO_API zval * phongo_throw_exception (php_phongo_error_domain_t domain TSRMLS_DC , const char * format , ... )
144144{
145- return zend_throw_exception (phongo_exception_from_phongo_domain (domain ), message , 0 TSRMLS_CC );
145+ zval * return_value ;
146+ va_list args ;
147+ char * message ;
148+ int message_len ;
149+
150+ va_start (args , format );
151+ message_len = vspprintf (& message , 0 , format , args );
152+ return_value = zend_throw_exception (phongo_exception_from_phongo_domain (domain ), message , 0 TSRMLS_CC );
153+ efree (message );
154+ va_end (args );
155+
156+
157+ return return_value ;
146158}
147159PHONGO_API zval * phongo_throw_exception_from_bson_error_t (bson_error_t * error TSRMLS_DC )
148160{
@@ -155,7 +167,7 @@ static void php_phongo_log(mongoc_log_level_t log_level, const char *log_domain,
155167 switch (log_level ) {
156168 case MONGOC_LOG_LEVEL_ERROR :
157169 case MONGOC_LOG_LEVEL_CRITICAL :
158- phongo_throw_exception (PHONGO_ERROR_MONGOC_FAILED , message TSRMLS_CC );
170+ phongo_throw_exception (PHONGO_ERROR_MONGOC_FAILED TSRMLS_CC , "%s" , message );
159171 return ;
160172
161173 case MONGOC_LOG_LEVEL_WARNING :
@@ -529,7 +541,7 @@ bool phongo_execute_write(mongoc_client_t *client, char *namespace, mongoc_bulk_
529541 int hint ;
530542
531543 if (!phongo_split_namespace (namespace , & dbname , & collname )) {
532- phongo_throw_exception (PHONGO_ERROR_INVALID_ARGUMENT , "Invalid namespace provided" TSRMLS_CC );
544+ phongo_throw_exception (PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC , "%s" , " Invalid namespace provided" );
533545 return false;
534546 }
535547
@@ -547,7 +559,7 @@ bool phongo_execute_write(mongoc_client_t *client, char *namespace, mongoc_bulk_
547559 hint = mongoc_bulk_operation_execute (batch , & reply , & error );
548560
549561 if (!hint ) {
550- zval * e = phongo_throw_exception (PHONGO_ERROR_WRITE_FAILED , error .message TSRMLS_CC );
562+ zval * e = phongo_throw_exception (PHONGO_ERROR_WRITE_FAILED TSRMLS_CC , "%s" , error .message );
551563
552564 if (return_value_used ) {
553565 if (Z_OBJCE_P (e ) == php_phongo_writeexception_ce ) {
@@ -579,7 +591,7 @@ int phongo_execute_query(mongoc_client_t *client, char *namespace, php_phongo_qu
579591 mongoc_collection_t * collection ;
580592
581593 if (!phongo_split_namespace (namespace , & dbname , & collname )) {
582- phongo_throw_exception (PHONGO_ERROR_INVALID_ARGUMENT , "Invalid namespace provided" TSRMLS_CC );
594+ phongo_throw_exception (PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC , "%s" , " Invalid namespace provided" );
583595 return false;
584596 }
585597 collection = mongoc_client_get_collection (client , dbname , collname );
0 commit comments