# HG changeset patch # User Kim Alvefur # Date 1573919133 -3600 # Node ID 659b577f280cdf962ce5d93f38012a22ae332189 # Parent 4c2d789a106b102daf1499b3ff90e48b9dbaf7aa util.pposix: Avoid overflow of malloc info at 2GB (fixes #1445 until 4GB) diff -r 4c2d789a106b -r 659b577f280c 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; }