diff --git a/lib/utils/mem.c b/lib/utils/mem.c
index 588afbccba8b1934dbb55bea932eb6caf25a3842..e5675126824fdbc83cd742e129c7278b6dfbbc1a 100644
--- a/lib/utils/mem.c
+++ b/lib/utils/mem.c
@@ -17,6 +17,10 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+#ifdef HAVE_REALLOCARRAY
+  #define _GNU_SOURCE
+#endif
+
 #include "config.h"
 #include "mem.h"
 
@@ -57,5 +61,5 @@ check_reallocarray (void   *ptr,
   if (!new)
     exit (EXIT_FAILURE);
 
-  return ptr;
+  return new;
 }
diff --git a/meson.build b/meson.build
index 5b05a659141ee1946cfe13bd1b10f6b46f4c9254..2ede9cb596a6e78430fc9b288a587b1c3a9b972e 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
 project('stdlib', 'c',
-  default_options: ['c_std=gnu99'])
+  default_options: ['warning_level=3', 'c_std=gnu99'])
 
 cc = meson.get_compiler('c')
 libm = cc.find_library('m')