Subject: Re: tgetstr bug
To: Valeriy E.Ushakov <firstname.lastname@example.org>
From: Klaus Klein <email@example.com>
Date: 12/17/2006 16:45:33
Valeriy E. Ushakov wrote:
> Christos Zoulas <firstname.lastname@example.org> wrote:
>> In article <email@example.com>,
>> Bruno Haible <firstname.lastname@example.org> wrote:
>>> tgetstr ("md", NULL) crashes on NetBSD. It's here:
>>> char *
>>> t_getstr(struct tinfo *info, const char *id, char **area, size_t
>>> _DIAGASSERT(limit != NULL);
>>> *limit = i; <=====
>>> return NULL;
>>> Other systems support tgetstr ("md", NULL) without problems, and
>>> return the string in a statically allocated buffer.
>> The code that passes NULL is non-portable. According to the TOG:
>> The tgetstr() function gets the string entry for id. If area is
>> not a null pointer and does not point to a null pointer, tgetstr()
>> copies the string entry into the buffer pointed to by *area and
>> advances the variable pointed to by area to the first byte after
>> the copy of the string entry.
>> By making tgetstr(id, NULL) work, we are encouraging non-portable
> Hmm, why is that non-portable? I read TOG text as that tgetstr
> returns the capability *and*, if area is not null, also copies the
> capability string into the area.
I concur with this reading.