Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #151258
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
| Newsgroups | comp.lang.c |
| Subject | Re: memcpy can't take null. |
| Date | Thu, 09 Apr 2020 07:16:02 -0700 |
| Organization | A noiseless patient Spider |
| Lines | 33 |
| Message-ID | <86d08gn3rx.fsf@linuxsc.com> (permalink) |
| References | <6c3de07e-15c8-4cc0-a805-636a5976d086@googlegroups.com> <r6i3vk$14n3$1@gioia.aioe.org> <87zhbnl10s.fsf@nosuchdomain.example.com> <r6j33u$15ev$1@gioia.aioe.org> <dW8jG.1373649$hD4.309580@fx47.iad> <8338dd09-dfed-447b-adf0-356695b1b1d8@googlegroups.com> <C9kjG.316344$gW1.16632@fx03.iad> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=us-ascii |
| Injection-Info | reader02.eternal-september.org; posting-host="bedbb4a28902cd1137b240ce253aab81"; logging-data="24593"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19YbTfY30Y/QDXtxbVFLPhJNSZJJpuoTJA=" |
| User-Agent | Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) |
| Cancel-Lock | sha1:h1LmdKSce03kE6ZPDUnn0GTUC8w= sha1:VoEXlXb64963ALsOznelPOaHc+g= |
| Xref | csiph.com comp.lang.c:151258 |
Show key headers only | View raw
Richard Damon <Richard@Damon-Family.org> writes:
> On 4/8/20 5:06 AM, Malcolm McLean wrote:
>
>> If Nemployees is non-zero while the pointer employees points to invalid
>> memory, it's likely that the bug will be discovered soon enough.
>> But if Nemployees is zero and employees is NULL, then the loops through
>> the employees array will all be no-ops and have defined, correct
>> behaviour. It's only if you call a library function like memcpy that
>> the code becomes incorrect.
>
> The issue is that since memcpy is a very basic function, you want it as
> efficient as possible. On some machines, it may be quicker to load the
> pointers into registers that might object to having a null pointer
> before processing the loop, and thus the machine might trap on a null
> pointer.
>
> Also, if you really want this safe version, you can make a memcpy_safe0
> function defined as:
>
> void* memcpy_safe0(void* dest, const void* src, size_t num) {
> if(num) return memcpy(dest, src, num);
> else return dest;
> }
>
> Note, that if the library function includes the check, there is no way
> to wrap it to remove that check, thus it make sense to make the standard
> version the quick one.
>
> Note that in the above, with a decent optimizing compiler, the call to
> memcpy above is tail-recursive,
It is a tail call, but not a recursive tail call.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
memcpy can't take null. Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-04-05 06:47 -0700
Re: memcpy can't take null. Öö Tiib <ootiib@hot.ee> - 2020-04-05 07:30 -0700
Re: memcpy can't take null. Richard Damon <Richard@Damon-Family.org> - 2020-04-05 14:39 -0400
Re: memcpy can't take null. Philipp Klaus Krause <pkk@spth.de> - 2020-04-06 18:46 +0200
Re: memcpy can't take null. Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-04-06 12:45 -0700
Re: memcpy can't take null. Philipp Klaus Krause <pkk@spth.de> - 2020-04-07 07:28 +0200
Re: memcpy can't take null. Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-04-05 16:00 -0700
Re: memcpy can't take null. Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-04-05 18:29 -0600
Re: memcpy can't take null. scott@slp53.sl.home (Scott Lurndal) - 2020-04-06 18:08 +0000
Re: memcpy can't take null. Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-04-06 15:44 -0600
Re: memcpy can't take null. Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-04-06 13:54 -0700
Re: memcpy can't take null. Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-04-06 14:30 -0700
Re: memcpy can't take null. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-04-06 01:20 +0100
Re: memcpy can't take null. Siri Cruise <chine.bleu@yahoo.com> - 2020-04-05 19:09 -0700
Re: memcpy can't take null. Guillaume <message@bottle.org> - 2020-04-07 16:50 +0200
Re: memcpy can't take null. Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-04-07 09:19 -0700
Re: memcpy can't take null. Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-04-07 09:21 -0700
Re: memcpy can't take null. Guillaume <message@bottle.org> - 2020-04-08 01:41 +0200
Re: memcpy can't take null. scott@slp53.sl.home (Scott Lurndal) - 2020-04-08 00:30 +0000
Re: memcpy can't take null. Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-04-08 02:06 -0700
Re: memcpy can't take null. Richard Damon <Richard@Damon-Family.org> - 2020-04-08 09:17 -0400
Re: memcpy can't take null. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-04-09 07:16 -0700
Re: memcpy can't take null. Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-04-08 13:33 -0700
Re: memcpy can't take null. Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-04-09 09:05 -0700
Re: memcpy can't take null. Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-04-09 13:28 -0700
Re: memcpy can't take null. richard@cogsci.ed.ac.uk (Richard Tobin) - 2020-04-09 23:41 +0000
Re: memcpy can't take null. Guillaume <message@bottle.org> - 2020-04-08 16:17 +0200
Re: memcpy can't take null. Ike Naar <ike@sdf.lonestar.org> - 2020-04-07 22:01 +0000
Re: memcpy can't take null. Guillaume <message@bottle.org> - 2020-04-08 01:32 +0200
csiph-web