fix #12793 - serialize will now spit a notice if the return value of __sleep is

bogus.
This commit is contained in:
Thies C. Arntzen 2002-03-19 11:25:21 +00:00
parent 737ea7691a
commit 3550d75d0f
2 changed files with 14 additions and 3 deletions

View File

@ -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

View File

@ -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();
}
}
/* }}} */