At Thu, 2 Jul 2009 13:42:56 -0400, christos%zoulas.com@localhost (Christos
Zoulas) wrote:
Subject: Re: why cast to char* through void*
>
> On Jul 2, 12:30pm, woods%planix.com@localhost ("Greg A. Woods") wrote:
> -- Subject: Re: why cast to char* through void*
>
> | As I said, the cast through void* is not necessary here on at least i386
> | neither for generating the correct result, nor for shutting up GCC.
>
> Did you try it? It breaks lint.
No, I didn't try lint. But lint didn't "break" -- lint warnings are
normal in many cases and should NOT be hidden or obscured by even more
questionable practises.
> Yes, lint is broken and should not complain
> in that case, but until it is fixed...
>
> /usr/src/lib/libutil/login_cap.c(521): warning: pointer casts may be
> troublesome [247]
Well, lint may in fact be right. Pointer casts _may_ be troublesome.
The correct action would be to tell lint that in this case the cast is
not going to be a problem because the programmer does know better. ;-)
--- login_cap.c 10 Feb 2007 12:57:39 -0500 1.25
+++ login_cap.c 02 Jul 2009 14:33:09 -0400
@@ -517,8 +517,9 @@
if (!res)
return -1;
- ptr = (char *)(void *)&res[count];
- (void)strcpy(ptr, str);
+ /* LINTED (we are creating an array of pointers into the same storage)
*/
+ ptr = (char *) &res[count];
+ (void) strcpy(ptr, str);
/* split string */
for (i = 0; (res[i] = stresep(&ptr, stop, '\\')) != NULL; )
--
Greg A. Woods
Planix, Inc.
<woods%planix.com@localhost> +1 416 218-0099 http://www.planix.com/
Attachment:
pgperFJq8T7fM.pgp
Description: PGP signature