lkml.org 
[lkml]   [2002]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [TRIVIAL] strlen("literal string") -> (sizeof("literal string")-1)
Date
In message <7vd6s2lc9c.fsf@siamese.dyndns.org> you write:
> >>>>> "JT" == Jim Treadway <jim@stardot-tech.com> writes:
>
> JT> Would redefining strlen() as __strlen() and then using
>
> JT> #define strlen(x) (__builtin_constant_p(x) ? (sizeof(x) - 1) : __strlen(x
))
>
> JT> work in this situation?
>
> I thought about that before I posted the previous patch, but
> rejected it.
>
> If it worked in all situations then it would have been great,
> but it fails in at least one way [*1*], so you cannot generally
> define the above in a header file which everybody includes.

If you really care about that, try:

/* Be paranoid in case someone uses strlen(&("FOO"[0])) */
#define strlen(x) \
(__builtin_constant_p(x) && sizeof(x) != sizeof(char *)
? (sizeof(x) - 1) : __strlen(x))

Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.031 / U:14.824 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site