On Wed, Jan 20, 2016 at 10:55 PM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:

> Hi 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*()
>
> #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.
>

These examples are correct. In PHP 7 ZVAL_STRING always duplicates, which
is what the 1 parameter used to signify.


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

I've fixed this. But yes, you should update the doc, it's not maintained
elsewhere.

Thanks,
Nikita

Reply via email to