@@ -1809,8 +1809,9 @@ ZEND_API int ZEND_FASTCALL concat_function(zval *result, zval *op1, zval *op2) /
1809
1809
1810
1810
ZEND_API int ZEND_FASTCALL string_compare_function_ex (zval * op1 , zval * op2 , zend_bool case_insensitive ) /* {{{ */
1811
1811
{
1812
- zend_string * str1 = zval_get_string (op1 );
1813
- zend_string * str2 = zval_get_string (op2 );
1812
+ zend_string * tmp_str1 , * tmp_str2 ;
1813
+ zend_string * str1 = zval_get_tmp_string (op1 , & tmp_str1 );
1814
+ zend_string * str2 = zval_get_tmp_string (op2 , & tmp_str2 );
1814
1815
int ret ;
1815
1816
1816
1817
if (case_insensitive ) {
@@ -1819,8 +1820,8 @@ ZEND_API int ZEND_FASTCALL string_compare_function_ex(zval *op1, zval *op2, zend
1819
1820
ret = zend_binary_strcmp (ZSTR_VAL (str1 ), ZSTR_LEN (str1 ), ZSTR_VAL (str2 ), ZSTR_LEN (str2 ));
1820
1821
}
1821
1822
1822
- zend_string_release ( str1 );
1823
- zend_string_release ( str2 );
1823
+ zend_tmp_string_release ( tmp_str1 );
1824
+ zend_tmp_string_release ( tmp_str2 );
1824
1825
return ret ;
1825
1826
}
1826
1827
/* }}} */
@@ -1835,12 +1836,13 @@ ZEND_API int ZEND_FASTCALL string_compare_function(zval *op1, zval *op2) /* {{{
1835
1836
return zend_binary_strcmp (Z_STRVAL_P (op1 ), Z_STRLEN_P (op1 ), Z_STRVAL_P (op2 ), Z_STRLEN_P (op2 ));
1836
1837
}
1837
1838
} else {
1838
- zend_string * str1 = zval_get_string (op1 );
1839
- zend_string * str2 = zval_get_string (op2 );
1839
+ zend_string * tmp_str1 , * tmp_str2 ;
1840
+ zend_string * str1 = zval_get_tmp_string (op1 , & tmp_str1 );
1841
+ zend_string * str2 = zval_get_tmp_string (op2 , & tmp_str2 );
1840
1842
int ret = zend_binary_strcmp (ZSTR_VAL (str1 ), ZSTR_LEN (str1 ), ZSTR_VAL (str2 ), ZSTR_LEN (str2 ));
1841
1843
1842
- zend_string_release ( str1 );
1843
- zend_string_release ( str2 );
1844
+ zend_tmp_string_release ( tmp_str1 );
1845
+ zend_tmp_string_release ( tmp_str2 );
1844
1846
return ret ;
1845
1847
}
1846
1848
}
@@ -1856,12 +1858,13 @@ ZEND_API int ZEND_FASTCALL string_case_compare_function(zval *op1, zval *op2) /*
1856
1858
return zend_binary_strcasecmp_l (Z_STRVAL_P (op1 ), Z_STRLEN_P (op1 ), Z_STRVAL_P (op2 ), Z_STRLEN_P (op2 ));
1857
1859
}
1858
1860
} else {
1859
- zend_string * str1 = zval_get_string (op1 );
1860
- zend_string * str2 = zval_get_string (op2 );
1861
+ zend_string * tmp_str1 , * tmp_str2 ;
1862
+ zend_string * str1 = zval_get_tmp_string (op1 , & tmp_str1 );
1863
+ zend_string * str2 = zval_get_tmp_string (op2 , & tmp_str2 );
1861
1864
int ret = zend_binary_strcasecmp_l (ZSTR_VAL (str1 ), ZSTR_LEN (str1 ), ZSTR_VAL (str2 ), ZSTR_LEN (str1 ));
1862
1865
1863
- zend_string_release ( str1 );
1864
- zend_string_release ( str2 );
1866
+ zend_tmp_string_release ( tmp_str1 );
1867
+ zend_tmp_string_release ( tmp_str2 );
1865
1868
return ret ;
1866
1869
}
1867
1870
}
@@ -1870,12 +1873,13 @@ ZEND_API int ZEND_FASTCALL string_case_compare_function(zval *op1, zval *op2) /*
1870
1873
#if HAVE_STRCOLL
1871
1874
ZEND_API int ZEND_FASTCALL string_locale_compare_function (zval * op1 , zval * op2 ) /* {{{ */
1872
1875
{
1873
- zend_string * str1 = zval_get_string (op1 );
1874
- zend_string * str2 = zval_get_string (op2 );
1876
+ zend_string * tmp_str1 , * tmp_str2 ;
1877
+ zend_string * str1 = zval_get_tmp_string (op1 , & tmp_str1 );
1878
+ zend_string * str2 = zval_get_tmp_string (op2 , & tmp_str2 );
1875
1879
int ret = strcoll (ZSTR_VAL (str1 ), ZSTR_VAL (str2 ));
1876
1880
1877
- zend_string_release ( str1 );
1878
- zend_string_release ( str2 );
1881
+ zend_tmp_string_release ( tmp_str1 );
1882
+ zend_tmp_string_release ( tmp_str2 );
1879
1883
return ret ;
1880
1884
}
1881
1885
/* }}} */
0 commit comments