Jim Jagielski wrote:
> Nuutti Kotivuori wrote:
>>
>> * apr_snprintf behaved incorrectly when the output was
>> * truncated. It returned the length that was passed in, but that is
>> * including the null-terminator.
>>
>
> From the man page for snprintf():
> if the return value is greater than or equal to the size argument,
> the string was too short and some of the printed characters were
> discarded.
>
> So if truncated, what is returned *must* be >= the length passed in.
apr_snprintf is not snprintf.
From apr_strings.h:
* Note that various standards and implementations disagree on the return
* value of snprintf, and side-effects due to %n in the formatting string.
* apr_snprintf behaves as follows:
*
* Process the format string until the entire string is exhausted, or
* the buffer fills. If the buffer fills then stop processing immediately
* (so no further %n arguments are processed), and return the buffer
* length. In all cases the buffer is NUL terminated.
*
* In no event does apr_snprintf return a negative number. It's not possible
* to distinguish between an output which was truncated, and an output which
* exactly filled the buffer.
If this comment is changed, I can fix try to fix these functions to
behave as expected again.
-- Naked
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Jul 11 00:23:52 2002