util.pposix: Avoid overflow of malloc info at 2GB (fixes #1445 until 4GB) 0.11
authorKim Alvefur <zash@zash.se>
Sat, 16 Nov 2019 16:45:33 +0100
branch0.11
changeset 10414 659b577f280c
parent 10404 4c2d789a106b
child 10415 db2a06b9ff98
child 10435 3db8372e203c
util.pposix: Avoid overflow of malloc info at 2GB (fixes #1445 until 4GB)
util-src/pposix.c
--- a/util-src/pposix.c	Fri Nov 08 00:54:56 2019 +0100
+++ b/util-src/pposix.c	Sat Nov 16 16:45:33 2019 +0100
@@ -721,20 +721,20 @@
 	struct mallinfo info = mallinfo();
 	lua_createtable(L, 0, 5);
 	/* This is the total size of memory allocated with sbrk by malloc, in bytes. */
-	lua_pushinteger(L, info.arena);
+	lua_pushinteger(L, (unsigned)info.arena);
 	lua_setfield(L, -2, "allocated");
 	/* This is the total size of memory allocated with mmap, in bytes. */
-	lua_pushinteger(L, info.hblkhd);
+	lua_pushinteger(L, (unsigned)info.hblkhd);
 	lua_setfield(L, -2, "allocated_mmap");
 	/* This is the total size of memory occupied by chunks handed out by malloc. */
-	lua_pushinteger(L, info.uordblks);
+	lua_pushinteger(L, (unsigned)info.uordblks);
 	lua_setfield(L, -2, "used");
 	/* This is the total size of memory occupied by free (not in use) chunks. */
-	lua_pushinteger(L, info.fordblks);
+	lua_pushinteger(L, (unsigned)info.fordblks);
 	lua_setfield(L, -2, "unused");
 	/* This is the size of the top-most releasable chunk that normally borders the
 	   end of the heap (i.e., the high end of the virtual address space's data segment). */
-	lua_pushinteger(L, info.keepcost);
+	lua_pushinteger(L, (unsigned)info.keepcost);
 	lua_setfield(L, -2, "returnable");
 	return 1;
 }