mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
Optimize xmalloc, xcalloc, xrealloc, and xstrdup
Add alloc_size attribute and apply consistently the malloc attribute to xmalloc, xcalloc, xrealloc, and xstrdup.
This commit is contained in:
parent
aebae0537d
commit
ec09c1c410
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
|||||||
|
2012-01-08 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
|
* include/sys/cdefs.h: Define __attribute_alloc_size.
|
||||||
|
* catgets/gencat.c: Add alloc_size attribute and apply consistently
|
||||||
|
the malloc attribute to xmalloc, xcalloc, xrealloc, and xstrdup.
|
||||||
|
* elf/pldd.c: Likewise.
|
||||||
|
* iconv/iconv_charmap.c: Likewise.
|
||||||
|
* iconv/iconvconfig.c: Likewise.
|
||||||
|
* iconv/strtab.c: Likewise.
|
||||||
|
* locale/programs/locale.c: Likewise.
|
||||||
|
* locale/programs/localedef.h: Likewise.
|
||||||
|
* locale/programs/simple-hash.c: Likewise.
|
||||||
|
* nscd/nscd.h: Likewise.
|
||||||
|
* nss/makedb.c: Likewise.
|
||||||
|
* sysdeps/generic/ldconfig.h: Likewise.
|
||||||
|
* locale/programs/localedef.c: Remove xmalloc prototype.
|
||||||
|
* nscd/mem.c: Remove xmalloc and xcalloc prototypes.
|
||||||
|
|
||||||
2012-01-05 Paul Pluzhnikov <ppluzhnikov@google.com>
|
2012-01-05 Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||||
|
|
||||||
* stdio-common/vfscanf.c (_IO_vfscanf_internal): Use alloca when
|
* stdio-common/vfscanf.c (_IO_vfscanf_internal): Use alloca when
|
||||||
|
@ -138,10 +138,13 @@ static struct argp argp =
|
|||||||
|
|
||||||
|
|
||||||
/* Wrapper functions with error checking for standard functions. */
|
/* Wrapper functions with error checking for standard functions. */
|
||||||
extern void *xmalloc (size_t n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t n, size_t s);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
extern void *xrealloc (void *o, size_t n);
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
extern char *xstrdup (const char *);
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
extern void *xrealloc (void *o, size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (2);
|
||||||
|
extern char *xstrdup (const char *) __attribute_malloc__;
|
||||||
|
|
||||||
/* Prototypes for local functions. */
|
/* Prototypes for local functions. */
|
||||||
static void error_print (void);
|
static void error_print (void);
|
||||||
|
@ -44,8 +44,10 @@ extern char *program_invocation_short_name;
|
|||||||
#define PACKAGE _libc_intl_domainname
|
#define PACKAGE _libc_intl_domainname
|
||||||
|
|
||||||
/* External functions. */
|
/* External functions. */
|
||||||
extern void *xmalloc (size_t n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xrealloc (void *p, size_t n);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
|
extern void *xrealloc (void *o, size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (2);
|
||||||
|
|
||||||
/* Name and version of program. */
|
/* Name and version of program. */
|
||||||
static void print_version (FILE *stream, struct argp_state *state);
|
static void print_version (FILE *stream, struct argp_state *state);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Convert using charmaps and possibly iconv().
|
/* Convert using charmaps and possibly iconv().
|
||||||
Copyright (C) 2001, 2005, 2006, 2008 Free Software Foundation, Inc.
|
Copyright (C) 2001, 2005, 2006, 2008, 2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
|
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
|
||||||
|
|
||||||
@ -33,8 +33,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/* Prototypes for a few program-wide used functions. */
|
/* Prototypes for a few program-wide used functions. */
|
||||||
extern void *xmalloc (size_t __n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t __n, size_t __s);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
|
||||||
|
|
||||||
struct convtable
|
struct convtable
|
||||||
|
@ -248,9 +248,12 @@ static struct
|
|||||||
static const char gconv_module_ext[] = MODULE_EXT;
|
static const char gconv_module_ext[] = MODULE_EXT;
|
||||||
|
|
||||||
|
|
||||||
extern void *xmalloc (size_t n) __attribute_malloc__;
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t n, size_t m) __attribute_malloc__;
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
extern void *xrealloc (void *p, size_t n);
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
extern void *xrealloc (void *o, size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (2);
|
||||||
|
|
||||||
|
|
||||||
/* C string table handling. */
|
/* C string table handling. */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* C string table handling.
|
/* C string table handling.
|
||||||
Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
|
Copyright (C) 2000, 2001, 2005, 2012 Free Software Foundation, Inc.
|
||||||
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
|
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
@ -66,7 +66,8 @@ struct Strtab
|
|||||||
static size_t ps;
|
static size_t ps;
|
||||||
|
|
||||||
|
|
||||||
extern void *xmalloc (size_t n) __attribute_malloc__;
|
extern void *xmalloc (size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
|
|
||||||
/* Prototypes for our functions that are used from iconvconfig.c. If
|
/* Prototypes for our functions that are used from iconvconfig.c. If
|
||||||
you change these, change also iconvconfig.c. */
|
you change these, change also iconvconfig.c. */
|
||||||
|
@ -12,4 +12,11 @@ extern void __chk_fail (void) __attribute__ ((__noreturn__));
|
|||||||
libc_hidden_proto (__chk_fail)
|
libc_hidden_proto (__chk_fail)
|
||||||
rtld_hidden_proto (__chk_fail)
|
rtld_hidden_proto (__chk_fail)
|
||||||
|
|
||||||
|
|
||||||
|
#if __GNUC_PREREQ (4,3)
|
||||||
|
# define __attribute_alloc_size(...) __attribute__ ((alloc_size (__VA_ARGS__)))
|
||||||
|
#else
|
||||||
|
# define __attribute_alloc_size(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,8 +44,9 @@
|
|||||||
#include "charmap-dir.h"
|
#include "charmap-dir.h"
|
||||||
#include "../locarchive.h"
|
#include "../locarchive.h"
|
||||||
|
|
||||||
extern void *xmalloc (size_t __n);
|
extern void *xmalloc (size_t n)
|
||||||
extern char *xstrdup (const char *__str);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
|
extern char *xstrdup (const char *) __attribute_malloc__;
|
||||||
|
|
||||||
#define ARCHIVE_NAME LOCALEDIR "/locale-archive"
|
#define ARCHIVE_NAME LOCALEDIR "/locale-archive"
|
||||||
|
|
||||||
|
@ -169,9 +169,6 @@ static struct argp argp =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Prototypes for global functions. */
|
|
||||||
extern void *xmalloc (size_t __n);
|
|
||||||
|
|
||||||
/* Prototypes for local functions. */
|
/* Prototypes for local functions. */
|
||||||
static void error_print (void);
|
static void error_print (void);
|
||||||
static const char *construct_output_path (char *path);
|
static const char *construct_output_path (char *path);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* General definitions for localedef(1).
|
/* General definitions for localedef(1).
|
||||||
Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
|
Copyright (C) 1998-2002,2005,2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||||
|
|
||||||
@ -121,10 +121,13 @@ extern const char *alias_file;
|
|||||||
|
|
||||||
|
|
||||||
/* Prototypes for a few program-wide used functions. */
|
/* Prototypes for a few program-wide used functions. */
|
||||||
extern void *xmalloc (size_t __n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t __n, size_t __size);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
extern void *xrealloc (void *__p, size_t __n);
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
extern char *xstrdup (const char *__str);
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
extern void *xrealloc (void *o, size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (2);
|
||||||
|
extern char *xstrdup (const char *) __attribute_malloc__;
|
||||||
|
|
||||||
|
|
||||||
/* Wrapper to switch LC_CTYPE back to the locale specified in the
|
/* Wrapper to switch LC_CTYPE back to the locale specified in the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Implement simple hashing table with string based keys.
|
/* Implement simple hashing table with string based keys.
|
||||||
Copyright (C) 1994-1997,2000,2001,2002,2005 Free Software Foundation, Inc.
|
Copyright (C) 1994-1997,2000-2002,2005,2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, October 1994.
|
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, October 1994.
|
||||||
|
|
||||||
@ -53,8 +53,10 @@
|
|||||||
#define hashval_t uint32_t
|
#define hashval_t uint32_t
|
||||||
#include "hashval.h"
|
#include "hashval.h"
|
||||||
|
|
||||||
extern void *xmalloc (size_t __n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t __n, size_t __m);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
|
||||||
typedef struct hash_entry
|
typedef struct hash_entry
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Cache memory handling.
|
/* Cache memory handling.
|
||||||
Copyright (C) 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
|
Copyright (C) 2004-2006, 2008, 2009, 2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
|
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
|
||||||
|
|
||||||
@ -35,11 +35,6 @@
|
|||||||
#include "nscd.h"
|
#include "nscd.h"
|
||||||
|
|
||||||
|
|
||||||
/* Wrapper functions with error checking for standard functions. */
|
|
||||||
extern void *xmalloc (size_t n);
|
|
||||||
extern void *xcalloc (size_t n, size_t s);
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sort_he (const void *p1, const void *p2)
|
sort_he (const void *p1, const void *p2)
|
||||||
{
|
{
|
||||||
|
11
nscd/nscd.h
11
nscd/nscd.h
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (c) 1998-2001, 2003-2009, 2011 Free Software Foundation, Inc.
|
/* Copyright (c) 1998-2001, 2003-2009, 2011, 2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
|
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
|
||||||
|
|
||||||
@ -201,9 +201,12 @@ extern gid_t old_gid;
|
|||||||
/* Prototypes for global functions. */
|
/* Prototypes for global functions. */
|
||||||
|
|
||||||
/* Wrapper functions with error checking for standard functions. */
|
/* Wrapper functions with error checking for standard functions. */
|
||||||
extern void *xmalloc (size_t n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t n, size_t s);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
extern void *xrealloc (void *o, size_t n);
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
extern void *xrealloc (void *o, size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (2);
|
||||||
|
|
||||||
/* nscd.c */
|
/* nscd.c */
|
||||||
extern void termination_handler (int signum) __attribute__ ((__noreturn__));
|
extern void termination_handler (int signum) __attribute__ ((__noreturn__));
|
||||||
|
@ -167,8 +167,10 @@ static void reset_file_creation_context (void);
|
|||||||
|
|
||||||
|
|
||||||
/* External functions. */
|
/* External functions. */
|
||||||
extern void *xmalloc (size_t n) __attribute_malloc__;
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t n, size_t m) __attribute_malloc__;
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1999, 2000, 2002, 2003, 2007 Free Software Foundation, Inc.
|
/* Copyright (C) 1999,2000,2002,2003,2007,2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
|
||||||
|
|
||||||
@ -81,9 +81,12 @@ extern int opt_verbose;
|
|||||||
extern int opt_format;
|
extern int opt_format;
|
||||||
|
|
||||||
/* Prototypes for a few program-wide used functions. */
|
/* Prototypes for a few program-wide used functions. */
|
||||||
extern void *xmalloc (size_t __n);
|
extern void *xmalloc (size_t n)
|
||||||
extern void *xcalloc (size_t __n, size_t __size);
|
__attribute_malloc__ __attribute_alloc_size (1);
|
||||||
extern void *xrealloc (void *__p, size_t __n);
|
extern void *xcalloc (size_t n, size_t s)
|
||||||
extern char *xstrdup (const char *__str);
|
__attribute_malloc__ __attribute_alloc_size (1, 2);
|
||||||
|
extern void *xrealloc (void *o, size_t n)
|
||||||
|
__attribute_malloc__ __attribute_alloc_size (2);
|
||||||
|
extern char *xstrdup (const char *) __attribute_malloc__;
|
||||||
|
|
||||||
#endif /* ! _LDCONFIG_H */
|
#endif /* ! _LDCONFIG_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user