That's silly… We *know* that endp and p are char* (and
to the same object) and so any comparison is allowed without
any weird casts…

The real fix is:

  if (endp < p)

On Sep 25, 2011, at 7:35 PM, Igor Galić wrote:

> 
> 
> ----- Original Message -----
>> for sure… mixing pointers and ints is Do Not Do In C 101.
>> Tracking the full issue…
> 
> Here's how we deal with that on trunk:
> 
> 
> @@ -1863,7 +1861,7 @@
>     c->freeall();
>     p = (char *) DOUBLE_ALIGN(p);
> #ifdef PURIFY
> -    if ((unsigned int) endp < (unsigned int) p)
> +    if ((uintptr_t) endp < (uintptr_t) p)
>       memset(endp, 0, (p - endp));
> #endif
>   }
> 
> 

Reply via email to