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

Reply via email to