zval op1_copy, op2_copy;
int use_copy1, use_copy2;
- zend_make_printable_zval(op1, &op1_copy, &use_copy1);
- zend_make_printable_zval(op2, &op2_copy, &use_copy2);
+ if (UG(unicode)) {
+ zend_make_unicode_zval(op1, &op1_copy, &use_copy1);
+ zend_make_unicode_zval(op2, &op2_copy, &use_copy2);
+ } else {
+ zend_make_printable_zval(op1, &op1_copy, &use_copy1);
+ zend_make_printable_zval(op2, &op2_copy, &use_copy2);
+ }
if (use_copy1) {
op1 = &op1_copy;
op2 = &op2_copy;
}
- Z_LVAL_P(result) = zend_binary_zval_strcmp(op1, op2);
+ if (UG(unicode)) {
+ Z_LVAL_P(result) = zend_u_binary_zval_strcmp(op1, op2);
+ } else {
+ Z_LVAL_P(result) = zend_binary_zval_strcmp(op1, op2);
+ }
Z_TYPE_P(result) = IS_LONG;
if (use_copy1) {
zval op1_copy, op2_copy;
int use_copy1, use_copy2;
- zend_make_unicode_zval(op1, &op1_copy, &use_copy1);
- zend_make_unicode_zval(op2, &op2_copy, &use_copy2);
+ if (UG(unicode)) {
+ zend_make_unicode_zval(op1, &op1_copy, &use_copy1);
+ zend_make_unicode_zval(op2, &op2_copy, &use_copy2);
+ } else {
+ zend_make_printable_zval(op1, &op1_copy, &use_copy1);
+ zend_make_printable_zval(op2, &op2_copy, &use_copy2);
+ }
if (use_copy1) {
op1 = &op1_copy;
op2 = &op2_copy;
}
- Z_LVAL_P(result) = ucol_strcoll(UG(default_collator)->coll, Z_USTRVAL_P(op1), Z_USTRLEN_P(op1), Z_USTRVAL_P(op2), Z_USTRLEN_P(op2));
+ if (UG(unicode)) {
+ Z_LVAL_P(result) = ucol_strcoll(UG(default_collator)->coll, Z_USTRVAL_P(op1), Z_USTRLEN_P(op1), Z_USTRVAL_P(op2), Z_USTRLEN_P(op2));
+ } else {
+ Z_LVAL_P(result) = strcoll(Z_STRVAL_P(op1), Z_STRVAL_P(op2));
+ }
Z_TYPE_P(result) = IS_LONG;
if (use_copy1) {