On Thu, Jul 08, 2021 at 01:06:17PM +0200, Alejandro Colomar (man-pages) via Gcc-help wrote: > On 7/8/21 12:07 PM, Jonny Grant wrote: > >We can't guarantee safestrlen() won't be called with NULL. So because > >strlen() itself doesn't check for NULL in C standard we'd need to call the > >wrapper so that NULL can be checked for. > >size_t __attribute__((optimize("O0"))) safestrlen(const char * s) > >{ > > if (NULL == s) return 0; > > else return strlen(s); > >} > That also allows differentiating a length of 0 (i.e., "") from an > invalid string (i.e., NULL), by returning -1 for NULL. It is incorrect to return any particular value for strlen(0); not 0, not -1, not anything. Since there *is* no string, it doesn't have a length either. So instead of making some function for this, I recommend just writing something like bla = s ? strlen(s) : 0; wherever you need it. If a function name isn't self-explanatory, and even *cannot* be, your factoring is most likely not ideal. Code is primarily there for humans to read, it should be optimised for that. Segher