Browse Source

Fixed warnings from different compilers

Roberto Ierusalimschy 1 năm trước cách đây
mục cha
commit
7237eb3f1c
4 tập tin đã thay đổi với 10 bổ sung6 xóa
  1. 1 1
      lapi.c
  2. 6 3
      lauxlib.c
  3. 1 1
      lmathlib.c
  4. 2 1
      ltable.c

+ 1 - 1
lapi.c

@@ -1221,7 +1221,7 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
       int param = va_arg(argp, int);
       int value = va_arg(argp, int);
       api_check(L, 0 <= param && param < LUA_GCPN, "invalid parameter");
-      res = luaO_applyparam(g->gcparams[param], 100);
+      res = cast_int(luaO_applyparam(g->gcparams[param], 100));
       if (value >= 0)
         g->gcparams[param] = luaO_codeparam(value);
       break;

+ 6 - 3
lauxlib.c

@@ -1131,8 +1131,11 @@ static void warnfon (void *ud, const char *message, int tocont) {
 /* Size for the buffer in int's, rounded up */
 #define BUFSEED		((BUFSEEDB + sizeof(int) - 1) / sizeof(int))
 
-
-#define addbuff(b,v)	(memcpy(b, &(v), sizeof(v)), b += sizeof(v))
+/*
+** Copy the contents of variable 'v' into the buffer pointed by 'b'.
+** (The '&b[0]' disguises 'b' to fix an absurd warning from clang.)
+*/
+#define addbuff(b,v)	(memcpy(&b[0], &(v), sizeof(v)), b += sizeof(v))
 
 
 static unsigned int luai_makeseed (void) {
@@ -1146,7 +1149,7 @@ static unsigned int luai_makeseed (void) {
   /* fill (rare but possible) remain of the buffer with zeros */
   memset(b, 0, sizeof(buff) - BUFSEEDB);
   res = buff[0];
-  for (i = 0; i < BUFSEED; i++)
+  for (i = 1; i < BUFSEED; i++)
     res ^= (res >> 3) + (res << 7) + buff[i];
   return res;
 }

+ 1 - 1
lmathlib.c

@@ -352,7 +352,7 @@ static lua_Number I2d (Rand64 x) {
   SRand64 sx = (SRand64)(trim64(x) >> shift64_FIG);
   lua_Number res = (lua_Number)(sx) * scaleFIG;
   if (sx < 0)
-    res += 1.0;  /* correct the two's complement if negative */
+    res += l_mathop(1.0);  /* correct the two's complement if negative */
   lua_assert(0 <= res && res < 1);
   return res;
 }

+ 2 - 1
ltable.c

@@ -995,7 +995,8 @@ static int finishnodeset (Table *t, const TValue *slot, TValue *val) {
   }
   else if (isabstkey(slot))
     return HNOTFOUND;  /* no slot with that key */
-  else return (cast(Node*, slot) - t->node) + HFIRSTNODE;  /* node encoded */
+  else  /* return node encoded */
+    return cast_int((cast(Node*, slot) - t->node)) + HFIRSTNODE;
 }