From eeaa766456ee2de5533313cab1c7f0757126d19a Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Sun, 24 Oct 1999 16:19:48 +0000 Subject: [PATCH] Use glib's malloc functions when compiled with LIBGTOP_ENABLE_DEBUG. 1999-10-24 Martin Baulig * xmalloc.c: Use glib's malloc functions when compiled with LIBGTOP_ENABLE_DEBUG. * xmalloc_suid.c: New file. --- sysdeps/common/ChangeLog | 7 ++++ sysdeps/common/Makefile.am | 2 +- sysdeps/common/xmalloc.c | 24 ++++++++++++ sysdeps/common/xmalloc_suid.c | 72 +++++++++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 sysdeps/common/ChangeLog create mode 100644 sysdeps/common/xmalloc_suid.c diff --git a/sysdeps/common/ChangeLog b/sysdeps/common/ChangeLog new file mode 100644 index 00000000..4980b5d6 --- /dev/null +++ b/sysdeps/common/ChangeLog @@ -0,0 +1,7 @@ +1999-10-24 Martin Baulig + + * xmalloc.c: Use glib's malloc functions when compiled + with LIBGTOP_ENABLE_DEBUG. + + * xmalloc_suid.c: New file. + diff --git a/sysdeps/common/Makefile.am b/sysdeps/common/Makefile.am index 8ba26000..ceae07e7 100644 --- a/sysdeps/common/Makefile.am +++ b/sysdeps/common/Makefile.am @@ -21,7 +21,7 @@ libgtop_common_la_SOURCES = xmalloc.c error.c gnuslib.c \ libgtop_common_la_LDFLAGS = $(LT_VERSION_INFO) libgtop_common_la_LIBADD = $(LIBGTOP_EXTRA_LIBS) -libgtop_suid_common_la_SOURCES = xmalloc.c error.c sysdeps_suid.c +libgtop_suid_common_la_SOURCES = xmalloc_suid.c error.c sysdeps_suid.c libgtop_suid_common_la_LDFLAGS = $(LT_VERSION_INFO) diff --git a/sysdeps/common/xmalloc.c b/sysdeps/common/xmalloc.c index d8d0080f..fd544cca 100644 --- a/sysdeps/common/xmalloc.c +++ b/sysdeps/common/xmalloc.c @@ -23,22 +23,33 @@ #include +#if LIBGTOP_ENABLE_DEBUG +#include +#endif + /* Wrappers to malloc, calloc, realloc ... */ void * glibtop_malloc_r (glibtop *server, size_t size) { +#if LIBGTOP_ENABLE_DEBUG + return g_malloc0 (size); +#else void *buf = malloc (size); if (!buf) glibtop_error_io_r (server, "malloc %d bytes", size); return buf; +#endif } void * glibtop_calloc_r (glibtop *server, size_t nmemb, size_t size) { +#if LIBGTOP_ENABLE_DEBUG + return g_malloc0 (size * nmemb); +#else void *buf = calloc (nmemb, size); if (!buf) @@ -46,27 +57,40 @@ glibtop_calloc_r (glibtop *server, size_t nmemb, size_t size) nmemb, size); return buf; +#endif } void * glibtop_realloc_r (glibtop *server, void *ptr, size_t size) { +#if LIBGTOP_ENABLE_DEBUG + return g_realloc (ptr, size); +#else void *buf = realloc (ptr, size); if (!buf) glibtop_error_io_r (server, "realloc %d bytes", size); return buf; +#endif } char * glibtop_strdup_r (glibtop *server, const char *string) { +#if LIBGTOP_DEBUG + return g_strdup (string); +#else return strcpy (glibtop_malloc_r (server, strlen (string) + 1), string); +#endif } void glibtop_free_r (glibtop *server, const void *ptr) { +#if LIBGTOP_DEBUG + g_free (ptr); +#else if (ptr) free ((void *) ptr); +#endif } diff --git a/sysdeps/common/xmalloc_suid.c b/sysdeps/common/xmalloc_suid.c new file mode 100644 index 00000000..d8d0080f --- /dev/null +++ b/sysdeps/common/xmalloc_suid.c @@ -0,0 +1,72 @@ +/* $Id$ */ + +/* Copyright (C) 1998-99 Martin Baulig + This file is part of LibGTop 1.0. + + Contributed by Martin Baulig , April 1998. + + LibGTop is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, + or (at your option) any later version. + + LibGTop is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with LibGTop; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +/* Wrappers to malloc, calloc, realloc ... */ + +void * +glibtop_malloc_r (glibtop *server, size_t size) +{ + void *buf = malloc (size); + + if (!buf) + glibtop_error_io_r (server, "malloc %d bytes", size); + + return buf; +} + +void * +glibtop_calloc_r (glibtop *server, size_t nmemb, size_t size) +{ + void *buf = calloc (nmemb, size); + + if (!buf) + glibtop_error_io_r (server, "calloc %d blocks (%d bytes each)", + nmemb, size); + + return buf; +} + +void * +glibtop_realloc_r (glibtop *server, void *ptr, size_t size) +{ + void *buf = realloc (ptr, size); + + if (!buf) + glibtop_error_io_r (server, "realloc %d bytes", size); + + return buf; +} + +char * +glibtop_strdup_r (glibtop *server, const char *string) +{ + return strcpy (glibtop_malloc_r (server, strlen (string) + 1), string); +} + +void +glibtop_free_r (glibtop *server, const void *ptr) +{ + if (ptr) free ((void *) ptr); +}