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.