Either I have a brain-block, or I'm missing something, or... A long time ago I suggested to myself in a comment in login_cap.c that the pointer arithmetic in setuserenv() should be replaced with an array reference and thus avoid a lot of ugliness. I see that's been done now, but the cast to char* through void* remains. It doesn't make any sense to me -- there shouldn't be any alignment work-arounds necessary here (should there?), and I see no other possible reason for it. --- login_cap.c 10 Feb 2007 12:57:39 -0500 1.25 +++ login_cap.c 01 Jul 2009 15:14:06 -0400 @@ -517,8 +517,8 @@ if (!res) return -1; - ptr = (char *)(void *)&res[count]; - (void)strcpy(ptr, str); + ptr = (char *) &res[count]; + (void) strcpy(ptr, str); /* split string */ for (i = 0; (res[i] = stresep(&ptr, stop, '\\')) != NULL; ) -- Greg A. Woods +1 416 218-0098 VE3TCP RoboHack <woods%robohack.ca@localhost> Planix, Inc. <woods%planix.com@localhost> Secrets of the Weird <woods%weird.com@localhost>
Attachment:
pgptStrJFWxxe.pgp
Description: PGP signature