@@ -429,12 +429,25 @@ PHP_METHOD(SolrDisMaxQuery, setPhraseSlop)
429429 int add_result = -1 ;
430430 solr_char_t * pvalue = NULL ;
431431 COMPAT_ARG_SIZE_T pvalue_len = 0 ;
432+ zval * tmp ;
432433
433- if (zend_parse_parameters (ZEND_NUM_ARGS (), "s " , & pvalue , & pvalue_len ) == FAILURE )
434+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "z " , & tmp ) == FAILURE )
434435 {
435436 php_error_docref (NULL , E_WARNING , "Invalid parameters" );
436437 RETURN_NULL ();
437438 }
439+
440+ if (Z_TYPE_P (tmp ) == IS_LONG ) {
441+ convert_to_string (tmp );
442+ }
443+
444+ if (Z_TYPE_P (tmp ) != IS_STRING ) {
445+ solr_throw_exception (solr_ce_SolrIllegalArgumentException , "Argument 1 must be an int" , SOLR_ERROR_4000 , SOLR_FILE_LINE_FUNC );
446+ }
447+
448+ pvalue = Z_STRVAL_P (tmp );
449+ pvalue_len = Z_STRLEN_P (tmp );
450+
438451 add_result = solr_add_or_set_normal_param (getThis (), pname , pname_len , pvalue , pvalue_len , 0 );
439452
440453 if (add_result == FAILURE )
@@ -455,12 +468,25 @@ PHP_METHOD(SolrDisMaxQuery, setQueryPhraseSlop)
455468 int add_result = -1 ;
456469 solr_char_t * pvalue = NULL ;
457470 COMPAT_ARG_SIZE_T pvalue_len = 0 ;
471+ zval * tmp ;
458472
459- if (zend_parse_parameters (ZEND_NUM_ARGS (), "s " , & pvalue , & pvalue_len ) == FAILURE )
473+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "z " , & tmp ) == FAILURE )
460474 {
461475 php_error_docref (NULL , E_WARNING , "Invalid parameters" );
462476 RETURN_NULL ();
463477 }
478+
479+ if (Z_TYPE_P (tmp ) == IS_LONG ) {
480+ convert_to_string (tmp );
481+ }
482+
483+ if (Z_TYPE_P (tmp ) != IS_STRING ) {
484+ solr_throw_exception (solr_ce_SolrIllegalArgumentException , "Argument 1 must be an int" , SOLR_ERROR_4000 , SOLR_FILE_LINE_FUNC );
485+ }
486+
487+ pvalue = Z_STRVAL_P (tmp );
488+ pvalue_len = Z_STRLEN_P (tmp );
489+
464490 add_result = solr_add_or_set_normal_param (getThis (), pname , pname_len , pvalue , pvalue_len , 0 );
465491
466492 if (add_result == FAILURE )
@@ -774,12 +800,25 @@ PHP_METHOD(SolrDisMaxQuery, setBigramPhraseSlop)
774800 int add_result = -1 ;
775801 solr_char_t * pvalue = NULL ;
776802 COMPAT_ARG_SIZE_T pvalue_len = 0 ;
803+ zval * tmp ;
777804
778- if (zend_parse_parameters (ZEND_NUM_ARGS (), "s " , & pvalue , & pvalue_len ) == FAILURE )
805+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "z " , & tmp ) == FAILURE )
779806 {
780807 php_error_docref (NULL , E_WARNING , "Invalid parameters" );
781808 RETURN_NULL ();
782809 }
810+
811+ if (Z_TYPE_P (tmp ) == IS_LONG ) {
812+ convert_to_string (tmp );
813+ }
814+
815+ if (Z_TYPE_P (tmp ) != IS_STRING ) {
816+ solr_throw_exception (solr_ce_SolrIllegalArgumentException , "Argument 1 must be an int" , SOLR_ERROR_4000 , SOLR_FILE_LINE_FUNC );
817+ }
818+
819+ pvalue = Z_STRVAL_P (tmp );
820+ pvalue_len = Z_STRLEN_P (tmp );
821+
783822 add_result = solr_add_or_set_normal_param (getThis (), pname , pname_len , pvalue , pvalue_len , 0 );
784823
785824 if (add_result == FAILURE )
@@ -883,12 +922,25 @@ PHP_METHOD(SolrDisMaxQuery, setTrigramPhraseSlop)
883922 int add_result = -1 ;
884923 solr_char_t * pvalue = NULL ;
885924 COMPAT_ARG_SIZE_T pvalue_len = 0 ;
925+ zval * tmp ;
886926
887- if (zend_parse_parameters (ZEND_NUM_ARGS (), "s " , & pvalue , & pvalue_len ) == FAILURE )
927+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "z " , & tmp ) == FAILURE )
888928 {
889929 php_error_docref (NULL , E_WARNING , "Invalid parameters" );
890930 RETURN_NULL ();
891931 }
932+
933+ if (Z_TYPE_P (tmp ) == IS_LONG ) {
934+ convert_to_string (tmp );
935+ }
936+
937+ if (Z_TYPE_P (tmp ) != IS_STRING ) {
938+ solr_throw_exception (solr_ce_SolrIllegalArgumentException , "Argument 1 must be an int" , SOLR_ERROR_4000 , SOLR_FILE_LINE_FUNC );
939+ }
940+
941+ pvalue = Z_STRVAL_P (tmp );
942+ pvalue_len = Z_STRLEN_P (tmp );
943+
892944 add_result = solr_add_or_set_normal_param (getThis (), pname , pname_len , pvalue , pvalue_len , 0 );
893945
894946 if (add_result == FAILURE )
0 commit comments