Re: Streams constify API change in master leads to compilation warning for extensions
| From: | Remi Collet | Date: | Thu, 03 Oct 2013 08:59:13 +0000 |
| Subject: | Re: Streams constify API change in master leads to compilation warning for extensions | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-69475@lists.php.net to get a copy of this message | ||
Le 02/10/2013 20:41, Jakub Zelenka a écrit :
> Hi,
>
> I was wondering why stream API has been changed in this commit:
>
>
> https://github.com/php/php-src/commit/92d27ccb0574f901a107409a7fec92888fa2b82f
>
> Basically all char pointers have been constified. The thing is that this
> commit leads to compilation warning for many extensions.
>
> In my case I use php_stream_locate_url_wrapper and want to compile my
> extension (fann) without any warnings.
Sorry to have not read enough carefully your mail.
-PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper
(const char *path, char **path_for_open, int options TSRMLS_DC);
+PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper
(const char *path, const char **path_for_open, int options TSRMLS_DC);
While is absolutly safe (and often useful) to switch from (char *) to
(const char *), it is not with (char **)
No compatibility in ever way.
... expected ‘const char **’ but argument is of type ‘char **’ ...
... expected ‘char **’ but argument is of type ‘const char **’ ...
So I agree, this one could probably be reverted.
As I found awful having to see more code like this (ex from twig)
#if PHP_API_VERSION >= 20100412
zend_get_object_classname(object, (const char **) &class_name,
&class_name_len TSRMLS_CC);
#else
zend_get_object_classname(object, &class_name, &class_name_len
TSRMLS_CC);
#endif
return class_name;
}
Remi.