[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Compilation warnings in Lua 5.2.1 (size_t to unsigned int conversion)
- From: William Ahern <william@...>
- Date: Thu, 27 Sep 2012 15:24:36 -0700
On Wed, Sep 26, 2012 at 03:17:41PM +0200, jean-luc@zenocloud.eu wrote:
> Hi,
>
> I migrated from Lua 5.2.0 to Lua 5.2.1 this morning. It went really smoothly but with some compiler warnings, hence this message.
>
> So, compiling Lua 5.2.1 on OS X (x86_64) with LLVM compiler 4.1 produces these 2 warnings:
>
> - lstring.c:52:25: warning: implicit conversion loses integer precision: 'unsigned long' to 'unsigned int'
>
> 51 unsigned int luaS_hash (const char *str, size_t l, unsigned int seed) {
> >> 52 unsigned int h = seed ^ l;
> 53 size_t l1;
> 54 size_t step = (l >> LUAI_HASHLIMIT) + 1;
>
> - lstate.c:91:20: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'unsigned int'
>
> 89 static unsigned int makeseed (lua_State *L) {
> 90 char buff[4 * sizeof(size_t)];
> >> 91 unsigned int h = luai_makeseed();
> 92 int p = 0;
> 93 addbuff(buff, p, L); /* heap variable */
>
> Both warnings are caused to narrowing conversions of size_t (64 bits) into unsigned int (32 bits) on the architecture.
> They can be easily removed by adding explicit conversion to (unsigned int) in these two lines.
>
Sorry for beating a dead horse, but I was actually trying to track down the
issue in the clang source code. However, I can't reproduce this warning with
clang 4.1. What flags are you using? I can't get it with -Wall -Wextra.