From: Thies C. Arntzen Date: Tue, 19 Mar 2002 11:25:21 +0000 (+0000) Subject: fix #12793 - serialize will now spit a notice if the return value of __sleep is X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~1237 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3550d75d0fd81871bb2fe68ce65e17fc84ba7b52;p=php fix #12793 - serialize will now spit a notice if the return value of __sleep is bogus. --- diff --git a/ext/standard/php_smart_str.h b/ext/standard/php_smart_str.h index a1912141f4..3bf94469ce 100644 --- a/ext/standard/php_smart_str.h +++ b/ext/standard/php_smart_str.h @@ -24,7 +24,7 @@ #include #include -#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 diff --git a/ext/standard/var.c b/ext/standard/var.c index 7eb7410243..82dc118167 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -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(); + } } /* }}} */