[gnome-shell/gnome-3-38] main: Use mallinfo2 when available at build time



commit ef3ac72b680595c9cc7643a14cbd4d2526aea68f
Author: Robert Mader <robert mader posteo de>
Date:   Thu Apr 1 01:08:12 2021 +0200

    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>
    (cherry picked from commit 3cfbb48f46ca96c968ed98a216595557faa2bf3a)

 config.h.meson     |  3 +++
 meson.build        |  1 +
 src/main.c         | 10 +++++++---
 src/shell-global.c |  5 -----
 4 files changed, 11 insertions(+), 8 deletions(-)
---
diff --git a/config.h.meson b/config.h.meson
index 141b2240a8..b93fda8727 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 524e409dc6..f804c21449 100644
--- a/meson.build
+++ b/meson.build
@@ -155,6 +155,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 0bfc039e7b..b69af76e57 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>
@@ -256,8 +256,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",
@@ -268,7 +272,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 7846f73006..b3f7cb5ff1 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -32,11 +32,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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]