cvs: ZendEngine2 / zend_vm_def.h
"Arnaud Le Blanc" <[email protected]> Fri, 24 Apr 2009 15:47:20 -0000
| Newsgroups | gmane.comp.php.cvs.zend |
|---|---|
| Message-ID | <cvslbarnaud1240588040@cvsserver> |
lbarnaud Fri Apr 24 15:47:20 2009 UTC
Modified files:
/ZendEngine2 zend_vm_def.h
Log:
Fix handling of unicode string offsets (tests/strings/bug22592.phpt)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_def.h?r1=1.263&r2=1.264&diff_format=u
Index: ZendEngine2/zend_vm_def.h
diff -u ZendEngine2/zend_vm_def.h:1.263 ZendEngine2/zend_vm_def.h:1.264
--- ZendEngine2/zend_vm_def.h:1.263 Wed Apr 8 13:19:53 2009
+++ ZendEngine2/zend_vm_def.h Fri Apr 24 15:47:20 2009
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_vm_def.h,v 1.263 2009/04/08 13:19:53 dmitry Exp $ */
+/* $Id: zend_vm_def.h,v 1.264 2009/04/24 15:47:20 lbarnaud Exp $ */
/* If you change this file, please regenerate the zend_vm_execute.h and
* zend_vm_opcodes.h files by running:
@@ -1574,7 +1574,11 @@
EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
- ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ if (Z_TYPE_P(EX_T(op_data->op2.u.var).str_offset.str) == IS_STRING) {
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ } else {
+ ZVAL_UNICODEL(EX_T(opline->result.u.var).var.ptr, Z_USTRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
}
} else if (!RETURN_VALUE_UNUSED(&opline->result)) {
AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
@@ -1609,7 +1613,11 @@
EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
- ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ if (Z_TYPE_P(EX_T(opline->op1.u.var).str_offset.str) == IS_STRING) {
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ } else {
+ ZVAL_UNICODEL(EX_T(opline->result.u.var).var.ptr, Z_USTRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
}
} else if (!RETURN_VALUE_UNUSED(&opline->result)) {
AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php