@@ -140,9 +140,21 @@ zend_class_entry* phongo_exception_from_mongoc_domain(uint32_t /* mongoc_error_d
140
140
return spl_ce_RuntimeException ;
141
141
}
142
142
}
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 , ... )
144
144
{
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 ;
146
158
}
147
159
PHONGO_API zval * phongo_throw_exception_from_bson_error_t (bson_error_t * error TSRMLS_DC )
148
160
{
@@ -155,7 +167,7 @@ static void php_phongo_log(mongoc_log_level_t log_level, const char *log_domain,
155
167
switch (log_level ) {
156
168
case MONGOC_LOG_LEVEL_ERROR :
157
169
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 );
159
171
return ;
160
172
161
173
case MONGOC_LOG_LEVEL_WARNING :
@@ -529,7 +541,7 @@ bool phongo_execute_write(mongoc_client_t *client, char *namespace, mongoc_bulk_
529
541
int hint ;
530
542
531
543
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" );
533
545
return false;
534
546
}
535
547
@@ -547,7 +559,7 @@ bool phongo_execute_write(mongoc_client_t *client, char *namespace, mongoc_bulk_
547
559
hint = mongoc_bulk_operation_execute (batch , & reply , & error );
548
560
549
561
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 );
551
563
552
564
if (return_value_used ) {
553
565
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
579
591
mongoc_collection_t * collection ;
580
592
581
593
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" );
583
595
return false;
584
596
}
585
597
collection = mongoc_client_get_collection (client , dbname , collname );
0 commit comments