Hacker News new | ask | show | jobs
by 0x09 3337 days ago
The code copies the origin string up to and including the null terminator, which must exist as strlen was used to obtain the size.
1 comments

It doesn't copy the null terminator because it's using memcpy. It's only copying the string without the null byte.
I think you are missing the +1 behind the call to strlen. strlen reports the number of chars before the zero-byte, adding one includes it.
I go back and forth between putting the +1 on the first line, or repeating it in the other lines. Putting it on the first line is harder to screw up, but harder to read.

For real programs you basically have to put it in the initial computation, or it will be forgotten somewhere later (maybe in a later commit).

> Putting it on the first line is harder to screw up, but harder to read.

Mayhaps "len" should be renamed to something clearer?