Re: WIKI: phpng-upgrading
| From: | François Laupretre | Date: | Wed, 20 Jan 2016 23:20:04 +0000 |
| Subject: | Re: WIKI: phpng-upgrading | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-90754@lists.php.net to get a copy of this message | ||
Le 20/01/2016 23:07, Sean DuBois a écrit :
On Thu, Jan 21, 2016 at 06:55:41AM +0900, Yasuo Ohgaki wrote:May I suggest we also include in this document a pointer to the PECL compatibility library (https://github.com/flaupretre/pecl-compat), a compatibility layer for PHP 5 & 7. Of course, this is not solving every issues but it can help a lot, especially on string/array-related issues. Among others, it includes a solution to the zend_parse_parameters() issue (using COMPAT_ARG_SIZE_T/COMPAT_ARG_LONG_T as variable types). Regards FrançoisHi ZendEngine developers, I'm not sure if the wiki page is maintained, but I noticed few errors. https://wiki.php.net/phpng-upgrading#strings has following example. - ZVAL_STRING(zv, str, 1); + ZVAL_STRING(zv, str); - ZVAL_STRINGL(zv, str, len, 1); + ZVAL_STRINGL(zv, str, len); - ZVAL_STRING(zv, str, 0); + ZVAL_STRING(zv, str); + efree(str); - ZVAL_STRINGL(zv, str, len, 0); + ZVAL_STRINGL(zv, str, len); + efree(str); Since PHP5 has following definition for ZVAL_STRING*()Hi! I tried to get access to that page as well, but didn't have any luck would you mind adding the zend_parse_paramaters changes? 'l' went from 'long' -> 'zend_long' and 's' went from 'int' -> 'size_t'. So many extensions have been ported without this in mind, and it bites in really nasty hard to reproduce runtime ways. thanks!#define ZVAL_STRING(z, s, duplicate) do { \ const char *__s=(s); \ zval *__z = (z); \ Z_STRLEN_P(__z) = strlen(__s); \ Z_STRVAL_P(__z) = (duplicate?estrndup(__s,Z_STRLEN_P(__z)):(char*)__s);\Z_TYPE_P(__z) = IS_STRING; \ } while (0)the example's 0 and 1 are flipped, efree() locations are wrong. In https://wiki.php.net/phpng-upgrading#zend_string_api , it says zend_string_init(char *val, int len, int persistent) Current definition is zend_string_init(char *val, size_t len, int persistent) Should I update the doc or is the doc is maintained elsewhere? Regards -- Yasuo Ohgaki yohgaki@ohgaki.net -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php