mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-07-06 18:57:01 +02:00
Add macros wrapping the gcc alloc_size function attribute. (#523019,
2008-03-30 Matthias Clasen <mclasen@redhat.com> * glib/gmacros.h: Add macros wrapping the gcc alloc_size function attribute. (#523019, Rodrigo Moya) * glib/gmem.h: * glib/gslice.h: * glib/gstrfuncs.h: Use the new attribute where appropriate. svn path=/trunk/; revision=6781
This commit is contained in:
parent
f0c679e3bf
commit
2af49e60a1
@ -1,3 +1,12 @@
|
|||||||
|
2008-03-30 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmacros.h: Add macros wrapping the gcc alloc_size
|
||||||
|
function attribute. (#523019, Rodrigo Moya)
|
||||||
|
|
||||||
|
* glib/gmem.h:
|
||||||
|
* glib/gslice.h:
|
||||||
|
* glib/gstrfuncs.h: Use the new attribute where appropriate.
|
||||||
|
|
||||||
2008-03-30 Matthias Clasen <mclasen@redhat.com>
|
2008-03-30 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* glib/glibintl.h:
|
* glib/glibintl.h:
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2008-03-30 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* glib/glib-sections.txt:
|
||||||
|
* glib/tmpl/macros-misc.sgml: Document G_GNUC_ALLOC_SIZE
|
||||||
|
macros
|
||||||
|
|
||||||
2008-03-28 A. Walton <awalton@svn.gnome.org>
|
2008-03-28 A. Walton <awalton@svn.gnome.org>
|
||||||
|
|
||||||
* gio/overview.xml:
|
* gio/overview.xml:
|
||||||
|
@ -324,6 +324,8 @@ G_GNUC_EXTENSION
|
|||||||
G_GNUC_CONST
|
G_GNUC_CONST
|
||||||
G_GNUC_PURE
|
G_GNUC_PURE
|
||||||
G_GNUC_MALLOC
|
G_GNUC_MALLOC
|
||||||
|
G_GNUC_ALLOC_SIZE
|
||||||
|
G_GNUC_ALLOC_SIZE2
|
||||||
G_GNUC_DEPRECATED
|
G_GNUC_DEPRECATED
|
||||||
G_GNUC_NORETURN
|
G_GNUC_NORETURN
|
||||||
G_GNUC_UNUSED
|
G_GNUC_UNUSED
|
||||||
|
@ -141,17 +141,44 @@ See the GNU C documentation for details.
|
|||||||
|
|
||||||
<!-- ##### MACRO G_GNUC_MALLOC ##### -->
|
<!-- ##### MACRO G_GNUC_MALLOC ##### -->
|
||||||
<para>
|
<para>
|
||||||
Expands to the GNU C <literal>malloc</literal> function attribute if the compiler is
|
Expands to the GNU C <literal>malloc</literal> function attribute if the
|
||||||
<command>gcc</command>. Declaring a function as malloc enables better optimization of the
|
compiler is <command>gcc</command>. Declaring a function as malloc enables
|
||||||
function. A function can have the malloc attribute if it returns a pointer which is guaranteed
|
better optimization of the function. A function can have the malloc attribute
|
||||||
to not alias with any other pointer when the function returns (in practice, this means newly
|
if it returns a pointer which is guaranteed to not alias with any other pointer
|
||||||
allocated memory).
|
when the function returns (in practice, this means newly allocated memory).
|
||||||
See the GNU C documentation for details.
|
See the GNU C documentation for details.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@Since: 2.6
|
@Since: 2.6
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ##### MACRO G_GNUC_ALLOC_SIZE ##### -->
|
||||||
|
<para>
|
||||||
|
Expands to the GNU C <literal>alloc_size</literal> function attribute if the
|
||||||
|
compiler is a new enough <command>gcc</command>. This attribute tells the
|
||||||
|
compiler that the function returns a pointer to memory of a size that is
|
||||||
|
specified by the @x<!-- -->th function parameter.
|
||||||
|
See the GNU C documentation for details.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
@x: the index of the argument specifying the allocation size
|
||||||
|
@Since: 2.18
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ##### MACRO G_GNUC_ALLOC_SIZE2 ##### -->
|
||||||
|
<para>
|
||||||
|
Expands to the GNU C <literal>alloc_size</literal> function attribute if the
|
||||||
|
compiler is a new enough <command>gcc</command>. This attribute tells the
|
||||||
|
compiler that the function returns a pointer to memory of a size that is
|
||||||
|
specified by the product of two function parameters.
|
||||||
|
See the GNU C documentation for details.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
@x: the index of the argument specifying one factor of the allocation size
|
||||||
|
@y: the index of the argument specifying the second factor of the allocation size
|
||||||
|
@Since: 2.18
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### MACRO G_GNUC_DEPRECATED ##### -->
|
<!-- ##### MACRO G_GNUC_DEPRECATED ##### -->
|
||||||
<para>
|
<para>
|
||||||
Expands to the GNU C <literal>deprecated</literal> attribute if the compiler
|
Expands to the GNU C <literal>deprecated</literal> attribute if the compiler
|
||||||
|
@ -67,6 +67,14 @@
|
|||||||
#define G_GNUC_NULL_TERMINATED
|
#define G_GNUC_NULL_TERMINATED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
|
||||||
|
#define G_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
|
||||||
|
#define G_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
|
||||||
|
#else
|
||||||
|
#define G_GNUC_ALLOC_SIZE(x)
|
||||||
|
#define G_GNUC_ALLOC_SIZE2(x,y)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
||||||
#define G_GNUC_PRINTF( format_idx, arg_idx ) \
|
#define G_GNUC_PRINTF( format_idx, arg_idx ) \
|
||||||
__attribute__((__format__ (__printf__, format_idx, arg_idx)))
|
__attribute__((__format__ (__printf__, format_idx, arg_idx)))
|
||||||
|
@ -48,13 +48,13 @@ typedef struct _GMemVTable GMemVTable;
|
|||||||
|
|
||||||
/* Memory allocation functions
|
/* Memory allocation functions
|
||||||
*/
|
*/
|
||||||
gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC;
|
gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
gpointer g_malloc0 (gsize n_bytes) G_GNUC_MALLOC;
|
gpointer g_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
gpointer g_realloc (gpointer mem,
|
gpointer g_realloc (gpointer mem,
|
||||||
gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
|
gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
|
||||||
void g_free (gpointer mem);
|
void g_free (gpointer mem);
|
||||||
gpointer g_try_malloc (gsize n_bytes) G_GNUC_MALLOC;
|
gpointer g_try_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
gpointer g_try_malloc0 (gsize n_bytes) G_GNUC_MALLOC;
|
gpointer g_try_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
gpointer g_try_realloc (gpointer mem,
|
gpointer g_try_realloc (gpointer mem,
|
||||||
gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
|
gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
|
@ -34,10 +34,10 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
/* slices - fast allocation/release of small memory blocks
|
/* slices - fast allocation/release of small memory blocks
|
||||||
*/
|
*/
|
||||||
gpointer g_slice_alloc (gsize block_size) G_GNUC_MALLOC;
|
gpointer g_slice_alloc (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
gpointer g_slice_alloc0 (gsize block_size) G_GNUC_MALLOC;
|
gpointer g_slice_alloc0 (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
gpointer g_slice_copy (gsize block_size,
|
gpointer g_slice_copy (gsize block_size,
|
||||||
gconstpointer mem_block) G_GNUC_MALLOC;
|
gconstpointer mem_block) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
|
||||||
void g_slice_free1 (gsize block_size,
|
void g_slice_free1 (gsize block_size,
|
||||||
gpointer mem_block);
|
gpointer mem_block);
|
||||||
void g_slice_free_chain_with_offset (gsize block_size,
|
void g_slice_free_chain_with_offset (gsize block_size,
|
||||||
|
@ -218,7 +218,7 @@ gchar* g_strescape (const gchar *source,
|
|||||||
const gchar *exceptions) G_GNUC_MALLOC;
|
const gchar *exceptions) G_GNUC_MALLOC;
|
||||||
|
|
||||||
gpointer g_memdup (gconstpointer mem,
|
gpointer g_memdup (gconstpointer mem,
|
||||||
guint byte_size) G_GNUC_MALLOC;
|
guint byte_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(2);
|
||||||
|
|
||||||
/* NULL terminated string arrays.
|
/* NULL terminated string arrays.
|
||||||
* g_strsplit(), g_strsplit_set() split up string into max_tokens tokens
|
* g_strsplit(), g_strsplit_set() split up string into max_tokens tokens
|
||||||
|
Loading…
x
Reference in New Issue
Block a user