[PATCH 1/2] Turn deprecated allocation functions into inline ones
Jamey Sharp
jamey at minilop.net
Tue May 18 13:51:05 PDT 2010
Mark's whitespace note aside,
Reviewed-by: Jamey Sharp <jamey at minilop.net>
On Tue, May 18, 2010 at 12:01 PM, Mikhail Gusarov
<dottedmag at dottedmag.net> wrote:
> This changes ABI of server as Xalloc/Xfree/Xrealloc/Xstrdup are
> no longer exported. OTOH, API is not changed.
>
> Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
> ---
> include/os.h | 163 +++++++++++++++++++++++++++++++++++++++++++++------------
> os/utils.c | 57 --------------------
> 2 files changed, 128 insertions(+), 92 deletions(-)
>
> diff --git a/include/os.h b/include/os.h
> index efa202c..d0f7191 100644
> --- a/include/os.h
> +++ b/include/os.h
> @@ -50,7 +50,10 @@ SOFTWARE.
> #define OS_H
>
> #include "misc.h"
> +#include <stdio.h>
> #include <stdarg.h>
> +#include <stdlib.h>
> +#include <string.h>
>
> #define SCREEN_SAVER_ON 0
> #define SCREEN_SAVER_OFF 1
> @@ -67,21 +70,135 @@ SOFTWARE.
> typedef struct _FontPathRec *FontPathPtr;
> typedef struct _NewClientRec *NewClientPtr;
>
> -#ifndef xalloc
> +/* Deprecated allocation functions */
> +
> +/*
> + * There are functions similar to defined below in Xlib. Given there are DDXes
> + * which include Xlib, protect those by not defining this deprecated set of
> + * functions.
> + */
> +#ifndef Xfree
> +
> +/*
> + * Use malloc(3) instead.
> + */
> +static inline void *xalloc(size_t size) _X_DEPRECATED;
> +
> +static inline void*
> +xalloc(size_t size)
> +{
> + return malloc(size);
> +}
> +
> +/*
> + * Use malloc(3) instead.
> + */
> +static inline void *Xalloc(size_t size) _X_DEPRECATED;
> +
> +static inline void *
> +Xalloc(size_t size)
> +{
> + return malloc(size);
> +}
> +
> +/*
> + * Use calloc(3) instead.
> + */
> +static inline void *xcalloc(size_t nmemb, size_t size) _X_DEPRECATED;
> +
> +static inline void *
> +xcalloc(size_t nmemb, size_t size)
> +{
> + return calloc(nmemb, size);
> +}
> +
> +/*
> + * Use calloc(3) instead. Note the missing argument.
> + */
> +static inline void *Xcalloc(size_t size) _X_DEPRECATED;
> +
> +static inline void *
> +Xcalloc(size_t size)
> +{
> + return calloc(1, size);
> +}
> +
> +/*
> + * Use realloc(3) instead
> + */
> +static inline void *xrealloc(void *ptr, size_t size) _X_DEPRECATED;
> +
> +static inline void *
> +xrealloc(void *ptr, size_t size)
> +{
> + return realloc(ptr, size);
> +}
> +
> +/*
> + * Use realloc(3) instead
> + */
> +static inline void *Xrealloc(void *ptr, size_t size) _X_DEPRECATED;
> +
> +static inline void *
> +Xrealloc(void *ptr, size_t size)
> +{
> + return realloc(ptr, size);
> +}
> +
> +/*
> + * Use free(3) instead
> + */
> +static inline void xfree(void *ptr) _X_DEPRECATED;
> +
> +static inline void
> +xfree(void *ptr)
> +{
> + free(ptr);
> +}
> +
> +/*
> + * Use free(3) instead
> + */
> +static inline void Xfree(void *ptr) _X_DEPRECATED;
> +
> +static inline void
> +Xfree(void *ptr)
> +{
> + free(ptr);
> +}
> +
> +/*
> + * Use strdup(3) instead. The only difference from the library function that it
> + * is safe to pass NULL, and NULL will be returned.
> + */
> +static inline char *xstrdup(const char *s) _X_DEPRECATED;
> +
> +static inline char *
> +xstrdup(const char *s)
> +{
> + return s ? strdup(s) : NULL;
> +}
> +
> +/*
> + * Use strdup(3) instead. The only difference from the library function that it
> + * is safe to pass NULL, and NULL will be returned.
> + */
> +static inline char *Xstrdup(const char *s) _X_DEPRECATED;
> +
> +static inline char *
> +Xstrdup(const char *s)
> +{
> + return s ? strdup(s) : NULL;
> +}
> +
> +#endif
> +
> +/* Not yet fully deprecated allocation functions */
> +
> #define xnfalloc(size) XNFalloc((unsigned long)(size))
> #define xnfcalloc(_num, _size) XNFcalloc((unsigned long)(_num)*(unsigned long)(_size))
> #define xnfrealloc(ptr, size) XNFrealloc((pointer)(ptr), (unsigned long)(size))
> -
> -#define xalloc(size) Xalloc((unsigned long)(size))
> -#define xcalloc(_num, _size) Xcalloc((unsigned long)(_num)*(unsigned long)(_size))
> -#define xrealloc(ptr, size) Xrealloc((pointer)(ptr), (unsigned long)(size))
> -#define xfree(ptr) Xfree((pointer)(ptr))
> -#define xstrdup(s) Xstrdup(s)
> #define xnfstrdup(s) XNFstrdup(s)
> -#endif
> -
> -#include <stdio.h>
> -#include <stdarg.h>
>
> #ifdef DDXBEFORERESET
> extern void ddxBeforeReset (void);
> @@ -215,24 +332,6 @@ extern _X_EXPORT int set_font_authorizations(
> #ifndef _HAVE_XALLOC_DECLS
> #define _HAVE_XALLOC_DECLS
>
> -/*
> - * Use malloc(3) instead.
> - */
> -extern _X_EXPORT void *Xalloc(unsigned long /*amount*/) _X_DEPRECATED;
> -/*
> - * Use calloc(3) instead
> - */
> -extern _X_EXPORT void *Xcalloc(unsigned long /*amount*/) _X_DEPRECATED;
> -/*
> - * Use realloc(3) instead
> - */
> -extern _X_EXPORT void *Xrealloc(void * /*ptr*/, unsigned long /*amount*/)
> - _X_DEPRECATED;
> -/*
> - * Use free(3) instead
> - */
> -extern _X_EXPORT void Xfree(void * /*ptr*/) _X_DEPRECATED;
> -
> #endif
>
> /*
> @@ -252,12 +351,6 @@ extern _X_EXPORT void *XNFcalloc(unsigned long /*amount*/);
> extern _X_EXPORT void *XNFrealloc(void * /*ptr*/, unsigned long /*amount*/);
>
> /*
> - * This function strdup(3)s passed string. The only difference from the library
> - * function that it is safe to pass NULL, as NULL will be returned.
> - */
> -extern _X_EXPORT char *Xstrdup(const char *s);
> -
> -/*
> * This function strdup(3)s passed string, terminating the server if there is
> * not enough memory. If NULL is passed to this function, NULL is returned.
> */
> diff --git a/os/utils.c b/os/utils.c
> index 7aa392a..611d5e1 100644
> --- a/os/utils.c
> +++ b/os/utils.c
> @@ -1022,24 +1022,6 @@ set_font_authorizations(char **authorizations, int *authlen, pointer client)
> }
>
> void *
> -Xalloc(unsigned long amount)
> -{
> - /*
> - * Xalloc used to return NULL when large amount of memory is requested. In
> - * order to catch the buggy callers this warning has been added, slated to
> - * removal by anyone who touches this code (or just looks at it) in 2011.
> - *
> - * -- Mikhail Gusarov
> - */
> - if ((long)amount <= 0)
> - ErrorF("Warning: Xalloc: "
> - "requesting unpleasantly large amount of memory: %lu bytes.\n",
> - amount);
> -
> - return malloc(amount);
> -}
> -
> -void *
> XNFalloc(unsigned long amount)
> {
> void *ptr = malloc(amount);
> @@ -1049,12 +1031,6 @@ XNFalloc(unsigned long amount)
> }
>
> void *
> -Xcalloc(unsigned long amount)
> -{
> - return calloc(1, amount);
> -}
> -
> -void *
> XNFcalloc(unsigned long amount)
> {
> void *ret = calloc(1, amount);
> @@ -1064,24 +1040,6 @@ XNFcalloc(unsigned long amount)
> }
>
> void *
> -Xrealloc(void *ptr, unsigned long amount)
> -{
> - /*
> - * Xrealloc used to return NULL when large amount of memory is requested. In
> - * order to catch the buggy callers this warning has been added, slated to
> - * removal by anyone who touches this code (or just looks at it) in 2011.
> - *
> - * -- Mikhail Gusarov
> - */
> - if ((long)amount <= 0)
> - ErrorF("Warning: Xrealloc: "
> - "requesting unpleasantly large amount of memory: %lu bytes.\n",
> - amount);
> -
> - return realloc(ptr, amount);
> -}
> -
> -void *
> XNFrealloc(void *ptr, unsigned long amount)
> {
> void *ret = realloc(ptr, amount);
> @@ -1090,21 +1048,6 @@ XNFrealloc(void *ptr, unsigned long amount)
> return ret;
> }
>
> -void
> -Xfree(void *ptr)
> -{
> - free(ptr);
> -}
> -
> -
> -char *
> -Xstrdup(const char *s)
> -{
> - if (s == NULL)
> - return NULL;
> - return strdup(s);
> -}
> -
> char *
> XNFstrdup(const char *s)
> {
> --
> 1.7.1
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list