summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Mader <robert.mader@posteo.de>2021-04-01 01:08:12 +0200
committerMarge Bot <marge-bot@gnome.org>2021-07-07 14:44:30 +0000
commit3cfbb48f46ca96c968ed98a216595557faa2bf3a (patch)
tree1d075b8a36d060e4cf5ef51edf6768f1d49b6b36
parent757501b33aba194e0c674dbcb12e4f9e6959ad68 (diff)
downloadgnome-shell-3cfbb48f46ca96c968ed98a216595557faa2bf3a.tar.gz
main: Use mallinfo2 when available at build time
`mallinfo` has been deprecated in favor of `mallinfo2`: ``` The fields of the mallinfo structure that is returned by the older mallinfo() function are typed as int. However, because some internal bookkeeping values may be of type long, the reported values may wrap around zero and thus be inaccurate. ``` Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1786>
-rw-r--r--config.h.meson3
-rw-r--r--meson.build1
-rw-r--r--src/main.c10
-rw-r--r--src/shell-global.c5
4 files changed, 11 insertions, 8 deletions
diff --git a/config.h.meson b/config.h.meson
index 141b2240a..b93fda872 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -13,6 +13,9 @@
/* Define to 1 if you have the `mallinfo' function. */
#mesondefine HAVE_MALLINFO
+/* Define to 1 if you have the `mallinfo2' function. */
+#mesondefine HAVE_MALLINFO2
+
/* Define to 1 fi you have the <sys/resource.h> header file. */
#mesondefine HAVE_SYS_RESOURCE_H
diff --git a/meson.build b/meson.build
index c642a95e9..f0a2b4c55 100644
--- a/meson.build
+++ b/meson.build
@@ -158,6 +158,7 @@ cdata.set('HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS',
)
cdata.set('HAVE_FDWALK', cc.has_function('fdwalk'))
cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo'))
+cdata.set('HAVE_MALLINFO2', cc.has_function('mallinfo2'))
cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h'))
cdata.set('HAVE__NL_TIME_FIRST_WEEKDAY',
cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY')
diff --git a/src/main.c b/src/main.c
index 23944351b..a47154db1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,7 +2,7 @@
#include "config.h"
-#ifdef HAVE_MALLINFO
+#if defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2)
#include <malloc.h>
#endif
#include <stdlib.h>
@@ -212,8 +212,12 @@ static void
malloc_statistics_callback (ShellPerfLog *perf_log,
gpointer data)
{
-#ifdef HAVE_MALLINFO
+#if defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2)
+#ifdef HAVE_MALLINFO2
+ struct mallinfo2 info = mallinfo2 ();
+#else
struct mallinfo info = mallinfo ();
+#endif
shell_perf_log_update_statistic_i (perf_log,
"malloc.arenaSize",
@@ -224,7 +228,7 @@ malloc_statistics_callback (ShellPerfLog *perf_log,
shell_perf_log_update_statistic_i (perf_log,
"malloc.usedSize",
info.uordblks);
-#endif
+#endif /* defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2) */
}
static void
diff --git a/src/shell-global.c b/src/shell-global.c
index eff53f396..99d2ac0ca 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -31,11 +31,6 @@
#define GNOME_DESKTOP_USE_UNSTABLE_API
#include <libgnome-desktop/gnome-systemd.h>
-/* Memory report bits */
-#ifdef HAVE_MALLINFO
-#include <malloc.h>
-#endif
-
#if defined __OpenBSD__ || defined __FreeBSD__
#include <sys/sysctl.h>
#endif