On Thu, Jun 25, 2015 at 4:55 PM, Johannes Schlüter <johan...@schlueters.de>
wrote:

> On Thu, 2015-06-25 at 14:52 +0200, Nikita Popov wrote:
> > However what it doesn't do, and what I wouldn't consider feasible to do,
> is
> > ensure that every single string conversion in library functions is
> > exception safe. Personally I don't think this is a blocking issue, as the
> > worst that can happen is usually an additional superfluous warning to be
> > thrown, or something similar. If cases like this turn up, we can
> > specifically target them.
>
> I don't agree to the assesment that this isn'T a problem. Consider this
> extension pseudo-code:
>
>
>    zval *data = get_data();
>    convert_to_string(data);
>    store_into_database(Z_STRVAL_P(data));
>    return TRUE;
>
> This will store wrong data in the database and report to the user that
> there was an error before storing, so the user assumes nothing was
> stored.
>

We have hundreds such cases :(


> The only way we can do that imo is by bailing out if an exception is
> thrown and introducing yet another set of string conversion functions
> for marking exception safe uses. (i.e. convert_to_string_throwing())
>


This may lead to memory and resource leaks.

In general, we may throw exceptions, only from "safe" places, but this
going to make a mesh.

Thanks. Dmitry.



>
> johannes
>
>
>
>

Reply via email to