Jean-Christophe PLAGNIOL-VILLARD wrote: > On 01:03 Mon 19 May , Wolfgang Denk wrote: >> In message <[EMAIL PROTECTED]> you wrote: >>>>> static inline void *memcpy(void *dst, const void *src, unsigned int len) >>>>> { >>>>> char *ret = dst; >>>>> + >>>>> while (len-- > 0) { >>>>> *ret++ = *((char *)src); >>>>> src++; >>>>> } >>>>> - return (void *)ret; >>>>> + >>>>> + return (void *)dst; >>>> While technically correct, this is bogus. We have a variable ret, but >>>> we don't return it. And we have a variable dst, but we don't use it as >>>> destination pointer. >>>> >>>> Please change the >>>> *ret++ = *((char *)src); >>>> into >>>> *dst++ = *((char *)src); >>>> and leave all the rest. >>> You can not do this because dst is a void >> Why not? src is void, too. > gcc will claim about the cast. > > we can do this > void *ret = dst; > char *d = dst; > const char *s = src; > > while (len-- > 0) > *d++ = *s++; > > return ret; > > Best Regards, > J.
YES! YES! YES! This gets my vote. I marked the start of this thread meaning to suggest using temp variables of the right type and get rid of the complex casting crap, exactly what you did here. Thanks, gvb ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users