Deutsch   English   Français   Italiano  
<usl150$347ev$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Richard Harnden <richard.nospam@gmail.invalid>
Newsgroups: comp.lang.c
Subject: Re: avoiding strdup()
Date: Sun, 10 Mar 2024 19:20:00 +0000
Organization: A noiseless patient Spider
Lines: 33
Message-ID: <usl150$347ev$2@dont-email.me>
References: <us0brl$246bf$1@dont-email.me>
 <pan$4fc39$61bdfbef$3ca9a71a$af842694@invalid.invalid>
 <87y1ayj6hs.fsf_-_@bsb.me.uk>
 <pan$e9f7e$d6f7a386$31c353e8$a08c13cf@invalid.invalid>
 <usc845$10v6e$1@dont-email.me>
 <pan$89aca$33d2df8c$9e2c232f$d767db40@invalid.invalid>
 <ushea7$28prq$2@dont-email.me> <ushnkb$1rnlb$4@dont-email.me>
 <87r0gizzuo.fsf@nosuchdomain.example.com> <20240310101101.00001fd4@yahoo.com>
 <20240310100715.866@kylheku.com> <ifnHN.386274$vFZa.250421@fx13.iad>
Reply-To: nospam.harnden@invalid.com
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 10 Mar 2024 19:20:00 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="08377d5e8277558f85a2b54dd370257a";
	logging-data="3284447"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX194F0kBGwwdjKrkO1smnwUivefSJQIOJmw="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:V6UKvdQmjDSuF0TNYsFoDXakkzk=
Content-Language: en-GB
In-Reply-To: <ifnHN.386274$vFZa.250421@fx13.iad>
Bytes: 2679

On 10/03/2024 18:47, Scott Lurndal wrote:
> Kaz Kylheku <433-929-6894@kylheku.com> writes:
>> On 2024-03-10, Michael S <already5chosen@yahoo.com> wrote:
>>> On Sat, 09 Mar 2024 16:37:19 -0800
>>> Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:
>>>> strdup() and strndup() are being added to the C23 standard.
>>>>
>>>
>>> What is justification?
>>
>> strdup is required by POSIX already and thus widely implemented.
>> Many programmers who are not into standards already assume it's in C.
>>
>> For decades, portable programs have been doing things like this:
>>
>> #if HAVE_STRDUP
>> #define xstrdup(s) strdup(s)
>> #else
>> char *xstrdup(const char *); // own definition
>> #endif
>>
>>> What strdup() can do better, for any chosen value of better, than
>>> strlen()+malloc()+memcpy() ?
>>
>> Not take up space in every application for a common library routine.
> 
> It's a form of lazy programming.  I've seen a lot of open source
> code that uses strdup without checking for failure and frequently
> "forgetting" to free the result.

The hidden use of malloc was one of the reasons it was left out of the 
standard library.