mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
fix #12793 - serialize will now spit a notice if the return value of __sleep is
bogus.
This commit is contained in:
parent
737ea7691a
commit
3550d75d0f
@ -24,7 +24,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <zend.h>
|
||||
|
||||
#define smart_str_0(x) ((x)->c[(x)->len] = '\0')
|
||||
#define smart_str_0(x) do { if ((x)->c) { (x)->c[(x)->len] = '\0'; } } while (0);
|
||||
|
||||
#ifndef SMART_STR_PREALLOC
|
||||
#define SMART_STR_PREALLOC 128
|
||||
|
@ -536,9 +536,15 @@ static void php_var_serialize_intern(smart_str *buf, zval **struc, HashTable *va
|
||||
|
||||
if (res == SUCCESS) {
|
||||
if (retval_ptr) {
|
||||
if (HASH_OF(retval_ptr))
|
||||
if (HASH_OF(retval_ptr)) {
|
||||
php_var_serialize_class(buf, struc, retval_ptr,
|
||||
var_hash TSRMLS_CC);
|
||||
} else {
|
||||
php_error(E_NOTICE, "__sleep should return an array only "
|
||||
"containing the names of instance-variables to "
|
||||
"serialize.");
|
||||
}
|
||||
|
||||
zval_ptr_dtor(&retval_ptr);
|
||||
}
|
||||
return;
|
||||
@ -623,7 +629,12 @@ PHP_FUNCTION(serialize)
|
||||
PHP_VAR_SERIALIZE_INIT(var_hash);
|
||||
php_var_serialize(&buf, struc, &var_hash TSRMLS_CC);
|
||||
PHP_VAR_SERIALIZE_DESTROY(var_hash);
|
||||
RETVAL_STRINGL(buf.c, buf.len, 0);
|
||||
|
||||
if (buf.c) {
|
||||
RETURN_STRINGL(buf.c, buf.len, 0);
|
||||
} else {
|
||||
RETURN_NULL();
|
||||
}
|
||||
}
|
||||
|
||||
/* }}} */
|
||||
|
Loading…
Reference in New Issue
Block a user