We're not currently interested in distinguishing between
individual punctuation types, so just merge everything into one
general category to make the property lookup more efficient.
0xffff was used to mark character properties without any members.
This made the code unnecessarily complicated, because we need to
check for 0xffff values when looking up the property ranges. We
can simply encode this as an empty set of ranges.
It is insufficient to check whether the `base` is contained in `fname`;
we also need to ensure that `fname` is properly separated. And of
course, `fname` has to start with `base`.
For consistency with PDOStatement::setAttribute(). Attribute values
can for example also be bool.
This is backwards-compatible, as mixed is the same as no type for
parameter variance.
New resources may be created while closing resources during
shutdown. This may result in a reallocation of arData and use
after free.
This problem was exposed by 7f7a90b2bc,
which creates one resources less, and thus moved the reallocation
to shutdown for a number of existing tests. However, the general
problem already existed previously.
We don't try to also close the newly added resources -- we will
later perform a graceful reverse destroy of the table, which will
catch any remaining cases.
This property was formerly used to hold the php_stream_filter
pointer for destruction purposes. However, this is no longer used,
and we don't need to create this resource at all.
This was previously implicitly public due to the use of dynamic
properties. Make this internal state private.
If someone complains, we can consider relaxing this to protected
or public on a case-by-case basis.
Currently, _digest is used both to request that digest auth be
used (_digest == null) and to later store the _digest parameters.
This relies on the ability to distinguish between _digest being
null and it being not set, which is not present with declared
properties. (Well, technically it is, we could just leave it
uninitialized, but that would be non-idiomatic.)
Resolve this by splitting into separate _use_digest and _digest
properties.
Error exceptions should generally not be converted into domain-
specific exception types. They indicate programming errors that
should not be handled locally.