devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d70f9484c6e6e9a5034adb350d78f761481cb3b0
commit d70f9484c6e6e9a5034adb350d78f761481cb3b0 Author: Christopher Michael <devilho...@comcast.net> Date: Thu Feb 25 08:25:29 2021 -0500 ecore: Update to not use deprecated mallinfo mallinfo (the structure) and mallinfo (the function) have both been deprecated in favor of mallinfo2 which has been updated to handle allocations > 4GB. This patch updates ecore usage of deprecated mallinfo to use mallinfo2. If the system does NOT have mallinfo2, then this code will fallback to using mallinfo. --- src/lib/ecore/ecore.c | 63 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c index 0d79b621b2..0b4ba4a8fd 100644 --- a/src/lib/ecore/ecore.c +++ b/src/lib/ecore/ecore.c @@ -32,8 +32,8 @@ #include "ecore_private.h" #include "../../static_libs/buildsystem/buildsystem.h" -#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) -#include <malloc.h> +#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2) +# include <malloc.h> #endif #ifndef O_BINARY @@ -45,14 +45,19 @@ EAPI Ecore_Version *ecore_version = &_version; EAPI double _efl_startup_time = 0; -#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) -#define KEEP_MAX(Global, Local) \ - if (Global < (Local)) \ - Global = Local; +#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2) +# define KEEP_MAX(Global, Local) \ + if (Global < (Local)) \ + Global = Local; static Eina_Bool _ecore_memory_statistic(void *data); +# ifdef HAVE_MALLINFO2 +static size_t _ecore_memory_max_total = 0; +static size_t _ecore_memory_max_free = 0; +# else static int _ecore_memory_max_total = 0; static int _ecore_memory_max_free = 0; +# endif static pid_t _ecore_memory_pid = 0; #ifdef HAVE_MALLOC_INFO static FILE *_ecore_memory_statistic_file = NULL; @@ -291,7 +296,7 @@ ecore_init(void) if (_ecore_glib_always_integrate) ecore_main_loop_glib_integrate(); #endif -#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) +#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2) if (getenv("ECORE_MEM_STAT")) { #ifdef HAVE_MALLOC_INFO @@ -432,16 +437,22 @@ ecore_shutdown(void) _ecore_main_loop_shutdown(); -#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) +#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2) if (getenv("ECORE_MEM_STAT")) { _ecore_memory_statistic(NULL); + #ifdef HAVE_MALLINFO2 + ERR("[%i] Memory MAX total: %lu, free: %lu", + _ecore_memory_pid, + _ecore_memory_max_total, + _ecore_memory_max_free); + #else ERR("[%i] Memory MAX total: %i, free: %i", _ecore_memory_pid, _ecore_memory_max_total, _ecore_memory_max_free); - + #endif #ifdef HAVE_MALLOC_INFO fclose(_ecore_memory_statistic_file); @@ -963,20 +974,30 @@ _systemd_watchdog_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) } #endif -#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) +#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2) static Eina_Bool _ecore_memory_statistic(EINA_UNUSED void *data) { #ifdef HAVE_MALLOC_INFO static int frame = 0; #endif -#ifdef HAVE_MALLINFO + +#if defined(HAVE_MALLINFO) || defined(HAVE_MALLINFO2) + Eina_Bool changed = EINA_FALSE; + +# if defined(HAVE_MALLINFO2) + struct mallinfo2 mi; + static size_t uordblks = 0; + static size_t fordblks = 0; + + mi = mallinfo2(); +# else struct mallinfo mi; static int uordblks = 0; static int fordblks = 0; - Eina_Bool changed = EINA_FALSE; mi = mallinfo(); +# endif #define HAS_CHANGED(Global, Local) \ if (Global != Local) \ @@ -989,14 +1010,24 @@ _ecore_memory_statistic(EINA_UNUSED void *data) HAS_CHANGED(fordblks, mi.fordblks); if (changed) - ERR("[%i] Memory total: %i, free: %i", - _ecore_memory_pid, - mi.uordblks, - mi.fordblks); + { +#ifdef HAVE_MALLINFO2 + ERR("[%i] Memory total: %lu, free: %lu", + _ecore_memory_pid, + mi.uordblks, + mi.fordblks); +#else + ERR("[%i] Memory total: %i, free: %i", + _ecore_memory_pid, + mi.uordblks, + mi.fordblks); +#endif + } KEEP_MAX(_ecore_memory_max_total, mi.uordblks); KEEP_MAX(_ecore_memory_max_free, mi.fordblks); #endif + #ifdef HAVE_MALLOC_INFO if (frame) fputs("\n", _ecore_memory_statistic_file); malloc_info(0, _ecore_memory_statistic_file); --