[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c
tony2001Thu Feb 1 14:07:03 2007 UTC Modified files: /php-src/ext/standard incomplete_class.c Log: free class_name when necessary http://cvs.php.net/viewvc.cgi/php-src/ext/standard/incomplete_class.c?r1=1.34r2=1.35diff_format=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.34 php-src/ext/standard/incomplete_class.c:1.35 --- php-src/ext/standard/incomplete_class.c:1.34Mon Jan 1 09:29:32 2007 +++ php-src/ext/standard/incomplete_class.c Thu Feb 1 14:07:03 2007 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.34 2007/01/01 09:29:32 sebastian Exp $ */ +/* $Id: incomplete_class.c,v 1.35 2007/02/01 14:07:03 tony2001 Exp $ */ #include php.h #include basic_functions.h @@ -39,15 +39,21 @@ static void incomplete_class_message(zval *object, int error_type TSRMLS_DC) { zstr class_name; + zend_bool class_name_alloced = 1; class_name = php_lookup_class_name(object, NULL); /* FIXME: Unicode support??? */ if (!class_name.s) { + class_name_alloced = 0; class_name.s = unknown; } php_error_docref(NULL TSRMLS_CC, error_type, INCOMPLETE_CLASS_MSG, class_name); + + if (class_name_alloced) { + efree(class_name.v); + } } /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c php_incomplete_class.h var.c var_unserializer.c var_unserializer.re /ext/standard/tests/serialize 001.phpt 005.phpt 006.phpt bug14293.phpt bug2
dmitry Mon Mar 27 13:37:47 2006 UTC Modified files: /php-src/ext/standard incomplete_class.c php_incomplete_class.h var.c var_unserializer.c var_unserializer.re /php-src/ext/standard/tests/serialize 001.phpt 005.phpt 006.phpt bug14293.phpt bug21957.phpt bug26762.phpt bug27469.phpt bug28325.phpt bug31402.phpt Log: Unicode support http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/incomplete_class.c?r1=1.32r2=1.33diff_format=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.32 php-src/ext/standard/incomplete_class.c:1.33 --- php-src/ext/standard/incomplete_class.c:1.32Sun Feb 26 11:57:14 2006 +++ php-src/ext/standard/incomplete_class.c Mon Mar 27 13:37:46 2006 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.32 2006/02/26 11:57:14 dmitry Exp $ */ +/* $Id: incomplete_class.c,v 1.33 2006/03/27 13:37:46 dmitry Exp $ */ #include php.h #include basic_functions.h @@ -98,7 +98,7 @@ value.handlers = php_incomplete_object_handlers; ALLOC_HASHTABLE(object-properties); - zend_hash_init(object-properties, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_u_hash_init(object-properties, 0, NULL, ZVAL_PTR_DTOR, 0, UG(unicode)); return value; } @@ -133,10 +133,14 @@ object_properties = Z_OBJPROP_P(object); if (zend_hash_find(object_properties, MAGIC_MEMBER, sizeof(MAGIC_MEMBER), (void **) val) == SUCCESS) { - retval.s = estrndup(Z_STRVAL_PP(val), Z_STRLEN_PP(val)); + if (UG(unicode)) { + retval.u = eustrndup(Z_USTRVAL_PP(val), Z_USTRLEN_PP(val)); + } else { + retval.s = estrndup(Z_STRVAL_PP(val), Z_STRLEN_PP(val)); + } if (nlen) - *nlen = Z_STRLEN_PP(val); + *nlen = Z_UNILEN_PP(val); } return retval; @@ -145,16 +149,13 @@ /* {{{ php_store_class_name */ -PHPAPI void php_store_class_name(zval *object, const char *name, zend_uint len) +PHPAPI void php_store_class_name(zval *object, zstr name, zend_uint len) { zval *val; TSRMLS_FETCH(); MAKE_STD_ZVAL(val); - - Z_TYPE_P(val) = IS_STRING; - Z_STRVAL_P(val) = estrndup(name, len); - Z_STRLEN_P(val) = len; + ZVAL_TEXTL(val, name, len, 1); zend_hash_update(Z_OBJPROP_P(object), MAGIC_MEMBER, sizeof(MAGIC_MEMBER), val, sizeof(val), NULL); } http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/php_incomplete_class.h?r1=1.20r2=1.21diff_format=u Index: php-src/ext/standard/php_incomplete_class.h diff -u php-src/ext/standard/php_incomplete_class.h:1.20 php-src/ext/standard/php_incomplete_class.h:1.21 --- php-src/ext/standard/php_incomplete_class.h:1.20Tue Feb 21 20:12:42 2006 +++ php-src/ext/standard/php_incomplete_class.h Mon Mar 27 13:37:46 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_incomplete_class.h,v 1.20 2006/02/21 20:12:42 dmitry Exp $ */ +/* $Id: php_incomplete_class.h,v 1.21 2006/03/27 13:37:46 dmitry Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -56,7 +56,7 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D); PHPAPI zstr php_lookup_class_name(zval *object, zend_uint *nlen); -PHPAPI void php_store_class_name(zval *object, const char *name, zend_uint len); +PHPAPI void php_store_class_name(zval *object, zstr name, zend_uint len); #ifdef __cplusplus }; http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/var.c?r1=1.225r2=1.226diff_format=u Index: php-src/ext/standard/var.c diff -u php-src/ext/standard/var.c:1.225 php-src/ext/standard/var.c:1.226 --- php-src/ext/standard/var.c:1.225Wed Mar 15 09:50:47 2006 +++ php-src/ext/standard/var.c Mon Mar 27 13:37:46 2006 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: var.c,v 1.225 2006/03/15 09:50:47 derick Exp $ */ +/* $Id: var.c,v 1.226 2006/03/27 13:37:46 dmitry Exp $ */ @@ -681,10 +681,10 @@ for(i=0; ilen; /* U16_NEXT post-increments */) { U16_NEXT(ustr, i, len, c); - if (c 128) { + if (c 128 c != '\\') { smart_str_appendc(buf, c 0xff); } else { - smart_str_appendl(buf, \\u, 2); + smart_str_appendc(buf, '\\'); smart_str_appendc(buf, hex[(c 12) 0xf]); smart_str_appendc(buf, hex[(c 8) 0xf]); smart_str_appendc(buf, hex[(c 4) 0xf]); @@ -1070,7 +1070,10 @@ PHP_VAR_SERIALIZE_DESTROY(var_hash); if (buf.c) {
Re: [PHP-CVS] cvs: php-src /ext/standard incomplete_class.c php_incomplete_class.h
Hello Jani, consistency is good. So if ever we run into a related problem we'd only need to care for that single typedef. Thanks Jani. marcus Wednesday, July 6, 2005, 2:58:25 PM, you wrote: What difference does it make as long as it works? GCC 4 it is. =) Anyways, the other functions related to where this stuff is used all use zend_uint. Is it bad to be consistent? :) --Jani On Wed, 6 Jul 2005, Marcus Boerger wrote: Hello Jani, which compiler is this? According to my knowledge size_t is the type that can hold any allocatable size. Or can it be the problem is somewhere else? marcus Wednesday, July 6, 2005, 1:48:47 AM, you wrote: sniper Tue Jul 5 19:48:47 2005 EDT Modified files: /php-src/ext/standard incomplete_class.c php_incomplete_class.h Log: - Fixed crash in serialize() + classes. (64bit only) http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.26r2=1.27ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.26 php-src/ext/standard/incomplete_class.c:1.27 --- php-src/ext/standard/incomplete_class.c:1.26Sat Oct 30 15:14:05 2004 +++ php-src/ext/standard/incomplete_class.c Tue Jul 5 19:48:44 2005 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.26 2004/10/30 19:14:05 helly Exp $ */ +/* $Id: incomplete_class.c,v 1.27 2005/07/05 23:48:44 sniper Exp $ */ #include php.h #include basic_functions.h @@ -122,7 +122,7 @@ /* {{{ php_lookup_class_name */ -char *php_lookup_class_name(zval *object, size_t *nlen) +char *php_lookup_class_name(zval *object, zend_uint *nlen) { zval **val; char *retval = NULL; @@ -144,7 +144,7 @@ /* {{{ php_store_class_name */ -void php_store_class_name(zval *object, const char *name, size_t len) +void php_store_class_name(zval *object, const char *name, zend_uint len) { zval *val; TSRMLS_FETCH(); http://cvs.php.net/diff.php/php-src/ext/standard/php_incomplete_class.h?r1=1.15r2=1.16ty=u Index: php-src/ext/standard/php_incomplete_class.h diff -u php-src/ext/standard/php_incomplete_class.h:1.15 php-src/ext/standard/php_incomplete_class.h:1.16 --- php-src/ext/standard/php_incomplete_class.h:1.15Wed Jun 29 05:28:44 2005 +++ php-src/ext/standard/php_incomplete_class.h Tue Jul 5 19:48:44 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_incomplete_class.h,v 1.15 2005/06/29 09:28:44 johannes Exp $ */ +/* $Id: php_incomplete_class.h,v 1.16 2005/07/05 23:48:44 sniper Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -42,7 +42,7 @@ #define PHP_CLASS_ATTRIBUTES char *class_name; - size_t name_len; + zend_uint name_len; zend_bool free_class_name = 0; zend_bool incomplete_class = 0 @@ -55,8 +55,8 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D); -char *php_lookup_class_name(zval *object, size_t *nlen); -void php_store_class_name(zval *object, const char *name, size_t len); +char *php_lookup_class_name(zval *object, zend_uint *nlen); +void php_store_class_name(zval *object, const char *name, zend_uint len); #ifdef __cplusplus }; -- Best regards, Marcusmailto:[EMAIL PROTECTED] -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] cvs: php-src /ext/standard incomplete_class.c php_incomplete_class.h
Hello Jani, which compiler is this? According to my knowledge size_t is the type that can hold any allocatable size. Or can it be the problem is somewhere else? marcus Wednesday, July 6, 2005, 1:48:47 AM, you wrote: sniper Tue Jul 5 19:48:47 2005 EDT Modified files: /php-src/ext/standard incomplete_class.c php_incomplete_class.h Log: - Fixed crash in serialize() + classes. (64bit only) http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.26r2=1.27ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.26 php-src/ext/standard/incomplete_class.c:1.27 --- php-src/ext/standard/incomplete_class.c:1.26Sat Oct 30 15:14:05 2004 +++ php-src/ext/standard/incomplete_class.c Tue Jul 5 19:48:44 2005 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.26 2004/10/30 19:14:05 helly Exp $ */ +/* $Id: incomplete_class.c,v 1.27 2005/07/05 23:48:44 sniper Exp $ */ #include php.h #include basic_functions.h @@ -122,7 +122,7 @@ /* {{{ php_lookup_class_name */ -char *php_lookup_class_name(zval *object, size_t *nlen) +char *php_lookup_class_name(zval *object, zend_uint *nlen) { zval **val; char *retval = NULL; @@ -144,7 +144,7 @@ /* {{{ php_store_class_name */ -void php_store_class_name(zval *object, const char *name, size_t len) +void php_store_class_name(zval *object, const char *name, zend_uint len) { zval *val; TSRMLS_FETCH(); http://cvs.php.net/diff.php/php-src/ext/standard/php_incomplete_class.h?r1=1.15r2=1.16ty=u Index: php-src/ext/standard/php_incomplete_class.h diff -u php-src/ext/standard/php_incomplete_class.h:1.15 php-src/ext/standard/php_incomplete_class.h:1.16 --- php-src/ext/standard/php_incomplete_class.h:1.15Wed Jun 29 05:28:44 2005 +++ php-src/ext/standard/php_incomplete_class.h Tue Jul 5 19:48:44 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_incomplete_class.h,v 1.15 2005/06/29 09:28:44 johannes Exp $ */ +/* $Id: php_incomplete_class.h,v 1.16 2005/07/05 23:48:44 sniper Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -42,7 +42,7 @@ #define PHP_CLASS_ATTRIBUTES char *class_name; - size_t name_len; + zend_uint name_len; zend_bool free_class_name = 0; zend_bool incomplete_class = 0 @@ -55,8 +55,8 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D); -char *php_lookup_class_name(zval *object, size_t *nlen); -void php_store_class_name(zval *object, const char *name, size_t len); +char *php_lookup_class_name(zval *object, zend_uint *nlen); +void php_store_class_name(zval *object, const char *name, zend_uint len); #ifdef __cplusplus }; -- Best regards, Marcusmailto:[EMAIL PROTECTED] -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] cvs: php-src /ext/standard incomplete_class.c php_incomplete_class.h
What difference does it make as long as it works? GCC 4 it is. =) Anyways, the other functions related to where this stuff is used all use zend_uint. Is it bad to be consistent? :) --Jani On Wed, 6 Jul 2005, Marcus Boerger wrote: Hello Jani, which compiler is this? According to my knowledge size_t is the type that can hold any allocatable size. Or can it be the problem is somewhere else? marcus Wednesday, July 6, 2005, 1:48:47 AM, you wrote: sniper Tue Jul 5 19:48:47 2005 EDT Modified files: /php-src/ext/standard incomplete_class.c php_incomplete_class.h Log: - Fixed crash in serialize() + classes. (64bit only) http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.26r2=1.27ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.26 php-src/ext/standard/incomplete_class.c:1.27 --- php-src/ext/standard/incomplete_class.c:1.26Sat Oct 30 15:14:05 2004 +++ php-src/ext/standard/incomplete_class.c Tue Jul 5 19:48:44 2005 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.26 2004/10/30 19:14:05 helly Exp $ */ +/* $Id: incomplete_class.c,v 1.27 2005/07/05 23:48:44 sniper Exp $ */ #include php.h #include basic_functions.h @@ -122,7 +122,7 @@ /* {{{ php_lookup_class_name */ -char *php_lookup_class_name(zval *object, size_t *nlen) +char *php_lookup_class_name(zval *object, zend_uint *nlen) { zval **val; char *retval = NULL; @@ -144,7 +144,7 @@ /* {{{ php_store_class_name */ -void php_store_class_name(zval *object, const char *name, size_t len) +void php_store_class_name(zval *object, const char *name, zend_uint len) { zval *val; TSRMLS_FETCH(); http://cvs.php.net/diff.php/php-src/ext/standard/php_incomplete_class.h?r1=1.15r2=1.16ty=u Index: php-src/ext/standard/php_incomplete_class.h diff -u php-src/ext/standard/php_incomplete_class.h:1.15 php-src/ext/standard/php_incomplete_class.h:1.16 --- php-src/ext/standard/php_incomplete_class.h:1.15Wed Jun 29 05:28:44 2005 +++ php-src/ext/standard/php_incomplete_class.h Tue Jul 5 19:48:44 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_incomplete_class.h,v 1.15 2005/06/29 09:28:44 johannes Exp $ */ +/* $Id: php_incomplete_class.h,v 1.16 2005/07/05 23:48:44 sniper Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -42,7 +42,7 @@ #define PHP_CLASS_ATTRIBUTES char *class_name; - size_t name_len; + zend_uint name_len; zend_bool free_class_name = 0; zend_bool incomplete_class = 0 @@ -55,8 +55,8 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D); -char *php_lookup_class_name(zval *object, size_t *nlen); -void php_store_class_name(zval *object, const char *name, size_t len); +char *php_lookup_class_name(zval *object, zend_uint *nlen); +void php_store_class_name(zval *object, const char *name, zend_uint len); #ifdef __cplusplus }; -- Donate @ http://pecl.php.net/wishlist.php/sniper -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c php_incomplete_class.h
sniper Tue Jul 5 19:48:47 2005 EDT Modified files: /php-src/ext/standard incomplete_class.c php_incomplete_class.h Log: - Fixed crash in serialize() + classes. (64bit only) http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.26r2=1.27ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.26 php-src/ext/standard/incomplete_class.c:1.27 --- php-src/ext/standard/incomplete_class.c:1.26Sat Oct 30 15:14:05 2004 +++ php-src/ext/standard/incomplete_class.c Tue Jul 5 19:48:44 2005 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.26 2004/10/30 19:14:05 helly Exp $ */ +/* $Id: incomplete_class.c,v 1.27 2005/07/05 23:48:44 sniper Exp $ */ #include php.h #include basic_functions.h @@ -122,7 +122,7 @@ /* {{{ php_lookup_class_name */ -char *php_lookup_class_name(zval *object, size_t *nlen) +char *php_lookup_class_name(zval *object, zend_uint *nlen) { zval **val; char *retval = NULL; @@ -144,7 +144,7 @@ /* {{{ php_store_class_name */ -void php_store_class_name(zval *object, const char *name, size_t len) +void php_store_class_name(zval *object, const char *name, zend_uint len) { zval *val; TSRMLS_FETCH(); http://cvs.php.net/diff.php/php-src/ext/standard/php_incomplete_class.h?r1=1.15r2=1.16ty=u Index: php-src/ext/standard/php_incomplete_class.h diff -u php-src/ext/standard/php_incomplete_class.h:1.15 php-src/ext/standard/php_incomplete_class.h:1.16 --- php-src/ext/standard/php_incomplete_class.h:1.15Wed Jun 29 05:28:44 2005 +++ php-src/ext/standard/php_incomplete_class.h Tue Jul 5 19:48:44 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_incomplete_class.h,v 1.15 2005/06/29 09:28:44 johannes Exp $ */ +/* $Id: php_incomplete_class.h,v 1.16 2005/07/05 23:48:44 sniper Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -42,7 +42,7 @@ #define PHP_CLASS_ATTRIBUTES \ char *class_name; \ - size_t name_len; \ + zend_uint name_len; \ zend_bool free_class_name = 0; \ zend_bool incomplete_class = 0 @@ -55,8 +55,8 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D); -char *php_lookup_class_name(zval *object, size_t *nlen); -void php_store_class_name(zval *object, const char *name, size_t len); +char *php_lookup_class_name(zval *object, zend_uint *nlen); +void php_store_class_name(zval *object, const char *name, zend_uint len); #ifdef __cplusplus }; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c
helly Sat Oct 30 15:14:05 2004 EDT Modified files: /php-src/ext/standard incomplete_class.c Log: - Update to new API http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.25r2=1.26ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.25 php-src/ext/standard/incomplete_class.c:1.26 --- php-src/ext/standard/incomplete_class.c:1.25Sun Sep 5 13:37:57 2004 +++ php-src/ext/standard/incomplete_class.c Sat Oct 30 15:14:05 2004 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.25 2004/09/05 17:37:57 helly Exp $ */ +/* $Id: incomplete_class.c,v 1.26 2004/10/30 19:14:05 helly Exp $ */ #include php.h #include basic_functions.h @@ -82,8 +82,8 @@ return 0; } -static union _zend_function *incomplete_class_get_method(zval *object, char *method, int method_len TSRMLS_DC) { - incomplete_class_message(object, E_ERROR TSRMLS_CC); +static union _zend_function *incomplete_class_get_method(zval **object, char *method, int method_len TSRMLS_DC) { + incomplete_class_message(*object, E_ERROR TSRMLS_CC); return NULL; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c
helly Sun Sep 5 13:37:57 2004 EDT Modified files: /php-src/ext/standard incomplete_class.c Log: - Bugfix #29985 http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.24r2=1.25ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.24 php-src/ext/standard/incomplete_class.c:1.25 --- php-src/ext/standard/incomplete_class.c:1.24Wed Apr 7 04:06:09 2004 +++ php-src/ext/standard/incomplete_class.c Sun Sep 5 13:37:57 2004 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.24 2004/04/07 08:06:09 stas Exp $ */ +/* $Id: incomplete_class.c,v 1.25 2004/09/05 17:37:57 helly Exp $ */ #include php.h #include basic_functions.h @@ -26,39 +26,33 @@ #define INCOMPLETE_CLASS_MSG \ The script tried to execute a method or \ access a property of an incomplete object. \ - Please ensure that the class definition b%s/b of the object \ + Please ensure that the class definition \%s\ of the object \ you are trying to operate on was loaded _before_ \ - the session was started + unserialize() gets called or provide a __autoload() function \ + to load the class definition static zend_object_handlers php_incomplete_object_handlers; /* {{{ incomplete_class_message */ -static void incomplete_class_message(int error_type TSRMLS_DC) +static void incomplete_class_message(zval *object, int error_type TSRMLS_DC) { - char buf[1024]; - char *class_name = NULL; + char *class_name; - if(EG(This)) { - class_name = php_lookup_class_name(EG(This), NULL); - } + class_name = php_lookup_class_name(object, NULL); if (!class_name) { - class_name = estrndup(unknown, sizeof(unknown)-1); + class_name = unknown; } - snprintf(buf, sizeof(buf)-1, INCOMPLETE_CLASS_MSG, class_name); - - efree(class_name); - - php_error_docref(NULL TSRMLS_CC, error_type, %s, buf); + php_error_docref(NULL TSRMLS_CC, error_type, INCOMPLETE_CLASS_MSG, class_name); } /* }}} */ static zval *incomplete_class_get_property(zval *object, zval *member, int type TSRMLS_DC) { - incomplete_class_message(E_NOTICE TSRMLS_CC); + incomplete_class_message(object, E_NOTICE TSRMLS_CC); if(type == BP_VAR_W || type == BP_VAR_RW) { return EG(error_zval_ptr); } else { @@ -68,28 +62,28 @@ static void incomplete_class_write_property(zval *object, zval *member, zval *value TSRMLS_DC) { - incomplete_class_message(E_NOTICE TSRMLS_CC); + incomplete_class_message(object, E_NOTICE TSRMLS_CC); } static zval **incomplete_class_get_property_ptr_ptr(zval *object, zval *member TSRMLS_DC) { - incomplete_class_message(E_NOTICE TSRMLS_CC); + incomplete_class_message(object, E_NOTICE TSRMLS_CC); return EG(error_zval_ptr); } static void incomplete_class_unset_property(zval *object, zval *member TSRMLS_DC) { - incomplete_class_message(E_NOTICE TSRMLS_CC); + incomplete_class_message(object, E_NOTICE TSRMLS_CC); } static int incomplete_class_has_property(zval *object, zval *member, int check_empty TSRMLS_DC) { - incomplete_class_message(E_NOTICE TSRMLS_CC); + incomplete_class_message(object, E_NOTICE TSRMLS_CC); return 0; } static union _zend_function *incomplete_class_get_method(zval *object, char *method, int method_len TSRMLS_DC) { - incomplete_class_message(E_ERROR TSRMLS_CC); + incomplete_class_message(object, E_ERROR TSRMLS_CC); return NULL; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c
stasWed Apr 7 04:06:12 2004 EDT Modified files: /php-src/ext/standard incomplete_class.c Log: Fix incomplete class for the new object model http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.23r2=1.24ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.23 php-src/ext/standard/incomplete_class.c:1.24 --- php-src/ext/standard/incomplete_class.c:1.23Tue Mar 30 03:56:29 2004 +++ php-src/ext/standard/incomplete_class.c Wed Apr 7 04:06:09 2004 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.23 2004/03/30 08:56:29 andi Exp $ */ +/* $Id: incomplete_class.c,v 1.24 2004/04/07 08:06:09 stas Exp $ */ #include php.h #include basic_functions.h @@ -31,6 +31,8 @@ the session was started +static zend_object_handlers php_incomplete_object_handlers; + /* {{{ incomplete_class_message */ static void incomplete_class_message(int error_type TSRMLS_DC) @@ -54,61 +56,72 @@ } /* }}} */ -/* {{{ incomplete_class_call_func - */ -static void incomplete_class_call_func(INTERNAL_FUNCTION_PARAMETERS) +static zval *incomplete_class_get_property(zval *object, zval *member, int type TSRMLS_DC) { - incomplete_class_message(E_ERROR TSRMLS_CC); + incomplete_class_message(E_NOTICE TSRMLS_CC); + if(type == BP_VAR_W || type == BP_VAR_RW) { + return EG(error_zval_ptr); + } else { + return EG(uninitialized_zval_ptr); + } } -/* }}} */ -/* {{{ incomplete_class_set_property - */ -static void incomplete_class_set_property(INTERNAL_FUNCTION_PARAMETERS) +static void incomplete_class_write_property(zval *object, zval *member, zval *value TSRMLS_DC) { incomplete_class_message(E_NOTICE TSRMLS_CC); } -/* }}} */ + +static zval **incomplete_class_get_property_ptr_ptr(zval *object, zval *member TSRMLS_DC) +{ + incomplete_class_message(E_NOTICE TSRMLS_CC); + return EG(error_zval_ptr); +} -/* {{{ incomplete_class_get_property - */ -static void incomplete_class_get_property(INTERNAL_FUNCTION_PARAMETERS) +static void incomplete_class_unset_property(zval *object, zval *member TSRMLS_DC) { incomplete_class_message(E_NOTICE TSRMLS_CC); } -/* }}} */ + +static int incomplete_class_has_property(zval *object, zval *member, int check_empty TSRMLS_DC) +{ + incomplete_class_message(E_NOTICE TSRMLS_CC); + return 0; +} + +static union _zend_function *incomplete_class_get_method(zval *object, char *method, int method_len TSRMLS_DC) { + incomplete_class_message(E_ERROR TSRMLS_CC); + return NULL; +} /* {{{ php_create_incomplete_class */ -zend_internal_function incomplete_class_call_func_fe; -zend_internal_function incomplete_class_get_property_fe; -zend_internal_function incomplete_class_set_property_fe; - -static void php_incomplete_class_init_func(zend_internal_function *fe, void (*handler)(INTERNAL_FUNCTION_PARAMETERS)) { - fe-type = ZEND_INTERNAL_FUNCTION; - fe-handler = handler; - fe-function_name = NULL; - fe-scope = NULL; - fe-fn_flags = 0; - fe-prototype = NULL; - fe-num_args = 2; - fe-arg_info = NULL; - fe-pass_rest_by_reference = 0; +static zend_object_value php_create_incomplete_object(zend_class_entry *class_type TSRMLS_DC) { + zend_object *object; + zend_object_value value; + + value = zend_objects_new(object, class_type TSRMLS_CC); + value.handlers = php_incomplete_object_handlers; + + ALLOC_HASHTABLE(object-properties); + zend_hash_init(object-properties, 0, NULL, ZVAL_PTR_DTOR, 0); + return value; } zend_class_entry *php_create_incomplete_class(TSRMLS_D) { zend_class_entry incomplete_class; - php_incomplete_class_init_func(incomplete_class_call_func_fe, incomplete_class_call_func); - php_incomplete_class_init_func(incomplete_class_get_property_fe, incomplete_class_get_property); - php_incomplete_class_init_func(incomplete_class_set_property_fe, incomplete_class_set_property); - - INIT_OVERLOADED_CLASS_ENTRY(incomplete_class, INCOMPLETE_CLASS, NULL, - (zend_function *)incomplete_class_call_func_fe, - (zend_function *)incomplete_class_get_property_fe, - (zend_function *)incomplete_class_set_property_fe); + INIT_CLASS_ENTRY(incomplete_class, INCOMPLETE_CLASS, NULL); + incomplete_class.create_object = php_create_incomplete_object; + memcpy(php_incomplete_object_handlers, std_object_handlers, sizeof(zend_object_handlers)); + php_incomplete_object_handlers.read_property = incomplete_class_get_property; + php_incomplete_object_handlers.has_property = incomplete_class_has_property; + php_incomplete_object_handlers.unset_property = incomplete_class_unset_property; +
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c php_incomplete_class.h var.c /ext/standard/tests/serialize bug27469.phpt
dmitry Thu Mar 18 11:54:37 2004 EDT Added files: /php-src/ext/standard/tests/serialize bug27469.phpt Modified files: /php-src/ext/standard incomplete_class.c php_incomplete_class.h var.c Log: BUG #27469 was fixed (serialize() objects of incomplete class) http://cvs.php.net/diff.php/php-src/ext/standard/incomplete_class.c?r1=1.21r2=1.22ty=u Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.21 php-src/ext/standard/incomplete_class.c:1.22 --- php-src/ext/standard/incomplete_class.c:1.21Thu Jan 8 03:17:32 2004 +++ php-src/ext/standard/incomplete_class.c Thu Mar 18 11:54:36 2004 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.21 2004/01/08 08:17:32 andi Exp $ */ +/* $Id: incomplete_class.c,v 1.22 2004/03/18 16:54:36 dmitry Exp $ */ #include php.h #include basic_functions.h @@ -39,7 +39,7 @@ char *class_name = NULL; if(EG(This)) { - class_name = php_lookup_class_name(EG(This), NULL, 0); + class_name = php_lookup_class_name(EG(This), NULL); } if (!class_name) @@ -114,7 +114,7 @@ /* {{{ php_lookup_class_name */ -char *php_lookup_class_name(zval *object, size_t *nlen, zend_bool del) +char *php_lookup_class_name(zval *object, size_t *nlen) { zval **val; char *retval = NULL; @@ -128,9 +128,6 @@ if (nlen) *nlen = Z_STRLEN_PP(val); - - if (del) - zend_hash_del(object_properties, MAGIC_MEMBER, sizeof(MAGIC_MEMBER)); } return (retval); http://cvs.php.net/diff.php/php-src/ext/standard/php_incomplete_class.h?r1=1.12r2=1.13ty=u Index: php-src/ext/standard/php_incomplete_class.h diff -u php-src/ext/standard/php_incomplete_class.h:1.12 php-src/ext/standard/php_incomplete_class.h:1.13 --- php-src/ext/standard/php_incomplete_class.h:1.12Thu Jan 8 12:32:51 2004 +++ php-src/ext/standard/php_incomplete_class.h Thu Mar 18 11:54:36 2004 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: php_incomplete_class.h,v 1.12 2004/01/08 17:32:51 sniper Exp $ */ +/* $Id: php_incomplete_class.h,v 1.13 2004/03/18 16:54:36 dmitry Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -29,8 +29,9 @@ #define PHP_SET_CLASS_ATTRIBUTES(struc) \ /* OBJECTS_FIXME: Fix for new object model */ \ if (Z_OBJCE_P(struc) == BG(incomplete_class)) { \ - class_name = php_lookup_class_name(struc, name_len, 1); \ + class_name = php_lookup_class_name(struc, name_len); \ free_class_name = 1; \ + incomplete_class = 1; \ } else { \ class_name = Z_OBJCE_P(struc)-name; \ name_len = Z_OBJCE_P(struc)-name_length; \ @@ -42,7 +43,8 @@ #define PHP_CLASS_ATTRIBUTES \ char *class_name; \ size_t name_len; \ - zend_bool free_class_name = 0 \ + zend_bool free_class_name = 0; \ + zend_bool incomplete_class = 0 #define INCOMPLETE_CLASS __PHP_Incomplete_Class #define MAGIC_MEMBER __PHP_Incomplete_Class_Name @@ -53,7 +55,7 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D); -char *php_lookup_class_name(zval *object, size_t *nlen, zend_bool del); +char *php_lookup_class_name(zval *object, size_t *nlen); void php_store_class_name(zval *object, const char *name, size_t len); #ifdef __cplusplus http://cvs.php.net/diff.php/php-src/ext/standard/var.c?r1=1.186r2=1.187ty=u Index: php-src/ext/standard/var.c diff -u php-src/ext/standard/var.c:1.186 php-src/ext/standard/var.c:1.187 --- php-src/ext/standard/var.c:1.186Mon Mar 8 18:11:43 2004 +++ php-src/ext/standard/var.c Thu Mar 18 11:54:36 2004 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: var.c,v 1.186 2004/03/08 23:11:43 abies Exp $ */ +/*
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c
stasTue Aug 5 05:07:49 2003 EDT Modified files: /php-src/ext/standard incomplete_class.c Log: pass trsm via parameters Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.19 php-src/ext/standard/incomplete_class.c:1.20 --- php-src/ext/standard/incomplete_class.c:1.19Tue Aug 5 05:06:02 2003 +++ php-src/ext/standard/incomplete_class.c Tue Aug 5 05:07:49 2003 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.19 2003/08/05 09:06:02 stas Exp $ */ +/* $Id: incomplete_class.c,v 1.20 2003/08/05 09:07:49 stas Exp $ */ #include php.h #include basic_functions.h @@ -33,11 +33,10 @@ /* {{{ incomplete_class_message */ -static void incomplete_class_message(int error_type) +static void incomplete_class_message(int error_type TSRMLS_DC) { char buf[1024]; char *class_name = NULL; - TSRMLS_FETCH(); if(EG(This)) { class_name = php_lookup_class_name(EG(This), NULL, 0); @@ -58,7 +57,7 @@ */ static void incomplete_class_call_func(INTERNAL_FUNCTION_PARAMETERS) { - incomplete_class_message(E_ERROR); + incomplete_class_message(E_ERROR TSRMLS_CC); } /* }}} */ @@ -66,7 +65,7 @@ */ static void incomplete_class_set_property(INTERNAL_FUNCTION_PARAMETERS) { - incomplete_class_message(E_NOTICE); + incomplete_class_message(E_NOTICE TSRMLS_CC); } /* }}} */ @@ -74,7 +73,7 @@ */ static void incomplete_class_get_property(INTERNAL_FUNCTION_PARAMETERS) { - incomplete_class_message(E_NOTICE); + incomplete_class_message(E_NOTICE TSRMLS_CC); } /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/standard incomplete_class.c
stasTue Aug 5 05:06:02 2003 EDT Modified files: /php-src/ext/standard incomplete_class.c Log: fix incomplete class for ZE2 Index: php-src/ext/standard/incomplete_class.c diff -u php-src/ext/standard/incomplete_class.c:1.18 php-src/ext/standard/incomplete_class.c:1.19 --- php-src/ext/standard/incomplete_class.c:1.18Tue Jun 10 16:03:38 2003 +++ php-src/ext/standard/incomplete_class.c Tue Aug 5 05:06:02 2003 @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.18 2003/06/10 20:03:38 imajes Exp $ */ +/* $Id: incomplete_class.c,v 1.19 2003/08/05 09:06:02 stas Exp $ */ #include php.h #include basic_functions.h @@ -33,13 +33,15 @@ /* {{{ incomplete_class_message */ -static void incomplete_class_message(zend_property_reference *ref, int error_type) +static void incomplete_class_message(int error_type) { char buf[1024]; - char *class_name; + char *class_name = NULL; TSRMLS_FETCH(); - class_name = php_lookup_class_name(ref-object, NULL, 0); + if(EG(This)) { + class_name = php_lookup_class_name(EG(This), NULL, 0); + } if (!class_name) class_name = estrdup(unknown); @@ -54,47 +56,58 @@ /* {{{ incomplete_class_call_func */ -static void incomplete_class_call_func(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference) +static void incomplete_class_call_func(INTERNAL_FUNCTION_PARAMETERS) { - incomplete_class_message(property_reference, E_ERROR); + incomplete_class_message(E_ERROR); } /* }}} */ /* {{{ incomplete_class_set_property */ -static int incomplete_class_set_property(zend_property_reference *property_reference, zval *value) +static void incomplete_class_set_property(INTERNAL_FUNCTION_PARAMETERS) { - incomplete_class_message(property_reference, E_NOTICE); - - /* does not reach this point */ - return (0); + incomplete_class_message(E_NOTICE); } /* }}} */ /* {{{ incomplete_class_get_property */ -static zval incomplete_class_get_property(zend_property_reference *property_reference) +static void incomplete_class_get_property(INTERNAL_FUNCTION_PARAMETERS) { - zval foo; - - incomplete_class_message(property_reference, E_NOTICE); - - /* does not reach this point */ - memset(foo, 0, sizeof(zval)); /* shut warnings up */ - return (foo); + incomplete_class_message(E_NOTICE); } /* }}} */ /* {{{ php_create_incomplete_class */ +zend_internal_function incomplete_class_call_func_fe; +zend_internal_function incomplete_class_get_property_fe; +zend_internal_function incomplete_class_set_property_fe; + +static void php_incomplete_class_init_func(zend_internal_function *fe, void (*handler)(INTERNAL_FUNCTION_PARAMETERS)) { + fe-type = ZEND_INTERNAL_FUNCTION; + fe-handler = handler; + fe-function_name = NULL; + fe-scope = NULL; + fe-fn_flags = 0; + fe-prototype = NULL; + fe-num_args = 2; + fe-arg_info = NULL; + fe-pass_rest_by_reference = 0; +} + zend_class_entry *php_create_incomplete_class(TSRMLS_D) { zend_class_entry incomplete_class; + php_incomplete_class_init_func(incomplete_class_call_func_fe, incomplete_class_call_func); + php_incomplete_class_init_func(incomplete_class_get_property_fe, incomplete_class_get_property); + php_incomplete_class_init_func(incomplete_class_set_property_fe, incomplete_class_set_property); + INIT_OVERLOADED_CLASS_ENTRY(incomplete_class, INCOMPLETE_CLASS, NULL, - incomplete_class_call_func, - incomplete_class_get_property, - incomplete_class_set_property); + (zend_function *)incomplete_class_call_func_fe, + (zend_function *)incomplete_class_get_property_fe, + (zend_function *)incomplete_class_set_property_fe); return zend_register_internal_class(incomplete_class TSRMLS_CC); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php