This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: asprintf() issue


On Wed, 13 May 2015, Archie Cobbs wrote:

> On Tue, May 12, 2015 at 10:11 AM, Florian Weimer <fweimer@redhat.com> wrote:
> > To me, this implies the original value is preserved.  We can add this to
> > the documentation if that makes everyone happy.
> 
> Here's a proposed patch:
> 
>  manual/stdio.texi | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/manual/stdio.texi b/manual/stdio.texi
> index e407170..bf7cffe 100644
> --- a/manual/stdio.texi
> +++ b/manual/stdio.texi
> @@ -2551,6 +2551,8 @@ The return value is the number of characters
> allocated for the buffer, or
>  less than zero if an error occurred.  Usually this means that the buffer
>  could not be allocated.
> 
> +If an error occurs, the contents of *@var{ptr} are not modified.

It's not clear to me that we want to guarantee this as an API.  (Though 
the existence of code relying on it would indicate that if we changed it, 
we should also change the symbol version and keep a version that doesn't 
modify it at the old symbol version.  And as I understand that bug report, 
the code in question would work just as well if glibc changed to set it to 
NULL, which was previously requested in 
<https://sourceware.org/ml/libc-alpha/2001-12/msg00021.html>.  I don't see 
any good reason to do something other than leaving it unchanged or setting 
it to NULL, however.)

Does anyone know of implementations that do something other than leaving 
the value unchanged or setting it to NULL?  The external specifications in 
question are LSB and TR 24731-2:2010 (which defers to LSB), and they seem 
to be silent on this issue.

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]