aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2025-07-29 11:50:20 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2025-07-29 11:50:20 -0300
commitc33bb08ffe04f24e09571b59eed3c9b59b622d91 (patch)
treec8b27b06d950d0907eb04ecbc91462d2b78ccea2
parente3716ee161bb5416b5eb846eff6039d61954cfbd (diff)
downloadlua-c33bb08ffe04f24e09571b59eed3c9b59b622d91.tar.gz
lua-c33bb08ffe04f24e09571b59eed3c9b59b622d91.tar.bz2
lua-c33bb08ffe04f24e09571b59eed3c9b59b622d91.zip
Added some casts for 32-bit machines
When both 'int' and 'l_obj' have 32 bits, an unsigned int needs a cast to be assigned to 'l_obj'. (As long as 'l_obj' can count the total memory used by the system, these casts should be safe.)
-rw-r--r--lgc.c2
-rw-r--r--llimits.h4
-rw-r--r--lobject.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/lgc.c b/lgc.c
index bbaa5ff7..a775b6e5 100644
--- a/lgc.c
+++ b/lgc.c
@@ -624,7 +624,7 @@ static l_mem traversetable (global_State *g, Table *h) {
624 linkgclist(h, g->allweak); /* must clear collected entries */ 624 linkgclist(h, g->allweak); /* must clear collected entries */
625 break; 625 break;
626 } 626 }
627 return 1 + 2*sizenode(h) + h->asize; 627 return cast(l_mem, 1 + 2*sizenode(h) + h->asize);
628} 628}
629 629
630 630
diff --git a/llimits.h b/llimits.h
index 223b5e6c..c4719a15 100644
--- a/llimits.h
+++ b/llimits.h
@@ -20,8 +20,8 @@
20/* 20/*
21** 'l_mem' is a signed integer big enough to count the total memory 21** 'l_mem' is a signed integer big enough to count the total memory
22** used by Lua. (It is signed due to the use of debt in several 22** used by Lua. (It is signed due to the use of debt in several
23** computations.) Usually, 'ptrdiff_t' should work, but we use 'long' 23** computations.) 'lu_mem' is a corresponding unsigned type. Usually,
24** for 16-bit machines. 24** 'ptrdiff_t' should work, but we use 'long' for 16-bit machines.
25*/ 25*/
26#if defined(LUAI_MEM) /* { external definitions? */ 26#if defined(LUAI_MEM) /* { external definitions? */
27typedef LUAI_MEM l_mem; 27typedef LUAI_MEM l_mem;
diff --git a/lobject.c b/lobject.c
index b558cfe0..763b4846 100644
--- a/lobject.c
+++ b/lobject.c
@@ -87,7 +87,7 @@ lu_byte luaO_codeparam (unsigned int p) {
87** overflow, so we check which order is best. 87** overflow, so we check which order is best.
88*/ 88*/
89l_mem luaO_applyparam (lu_byte p, l_mem x) { 89l_mem luaO_applyparam (lu_byte p, l_mem x) {
90 unsigned int m = p & 0xF; /* mantissa */ 90 int m = p & 0xF; /* mantissa */
91 int e = (p >> 4); /* exponent */ 91 int e = (p >> 4); /* exponent */
92 if (e > 0) { /* normalized? */ 92 if (e > 0) { /* normalized? */
93 e--; /* correct exponent */ 93 e--; /* correct exponent */