]> granicus.if.org Git - php/commitdiff
-Serialization doesn't work with unicode data
authorMarcus Boerger <helly@php.net>
Thu, 21 Dec 2006 22:54:20 +0000 (22:54 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 21 Dec 2006 22:54:20 +0000 (22:54 +0000)
Zend/zend_interfaces.c

index f93b2aa3cd2031af66106d5a7875c3d8e899f5e5..d15ce3fdb4cf3f32abde13892c3d053c1e6a899a 100755 (executable)
@@ -419,7 +419,6 @@ int zend_user_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len
 
        zend_call_method_with_0_params(&object, ce, &ce->serialize_func, "serialize", &retval);
 
-
        if (!retval || EG(exception)) {
                result = FAILURE;
        } else {
@@ -428,16 +427,14 @@ int zend_user_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len
                        /* we could also make this '*buf_len = 0' but this allows to skip variables */
                        zval_ptr_dtor(&retval);
                        return FAILURE;
+               case IS_UNICODE:
+                       convert_to_string(retval);
+                       /* no break */
                case IS_STRING:
                        *buffer = (unsigned char*)estrndup(Z_STRVAL_P(retval), Z_STRLEN_P(retval));
                        *buf_len = Z_STRLEN_P(retval);
                        result = SUCCESS;
                        break;
-               case IS_UNICODE:
-                       *buffer = (unsigned char*)eustrndup(Z_USTRVAL_P(retval), Z_USTRLEN_P(retval));
-                       *buf_len = Z_USTRLEN_P(retval);
-                       result = SUCCESS;
-                       break;
                default: /* failure */
                        result = FAILURE;
                        break;