Add g_try_new, g_try_new0 and g_try_renew. (#169611, Stefan Kost)
authorMatthias Clasen <mclasen@redhat.com>
Tue, 22 Mar 2005 04:02:13 +0000 (04:02 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 22 Mar 2005 04:02:13 +0000 (04:02 +0000)
2005-03-21  Matthias Clasen  <mclasen@redhat.com>

* glib/gmem.h: Add g_try_new, g_try_new0 and
g_try_renew.  (#169611, Stefan Kost)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
docs/reference/ChangeLog
docs/reference/glib/glib-sections.txt
docs/reference/glib/tmpl/memory.sgml
glib/gmem.h

index ff113fe..96bd57f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-21  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gmem.h: Add g_try_new, g_try_new0 and 
+       g_try_renew.  (#169611, Stefan Kost)
+
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
        * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
index ff113fe..96bd57f 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-21  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gmem.h: Add g_try_new, g_try_new0 and 
+       g_try_renew.  (#169611, Stefan Kost)
+
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
        * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
index ff113fe..96bd57f 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-21  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gmem.h: Add g_try_new, g_try_new0 and 
+       g_try_renew.  (#169611, Stefan Kost)
+
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
        * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
index ff113fe..96bd57f 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-21  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gmem.h: Add g_try_new, g_try_new0 and 
+       g_try_renew.  (#169611, Stefan Kost)
+
 2005-03-20  Tor Lillqvist  <tml@novell.com>
 
        * glib/gspawn-win32.c (do_spawn_with_pipes): Close the process
index c23fe43..3c5f0e8 100644 (file)
@@ -1,3 +1,9 @@
+2005-03-21  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/glib-sections.txt: 
+       * glib/tmpl/memory.sgml: Document g_try_new, g_try_new0 
+       and g_try_renew.
+
 2005-03-20  Matthias Clasen  <mclasen@redhat.com>
 
        * gobject/tmpl/gparamspec.sgml: Document G_PARAM_SPEC_STATIC_
index 0d9e58d..d0feee0 100644 (file)
@@ -763,6 +763,9 @@ g_io_watch_funcs
 g_new
 g_new0
 g_renew
+g_try_new
+g_try_new0
+g_try_renew
 
 <SUBSECTION>
 g_malloc
index 0c8f7c5..91836ad 100644 (file)
@@ -24,7 +24,7 @@ This also means that there is no need to check if the call succeeded.
 <para>
 Allocates @n_structs elements of type @struct_type.
 The returned pointer is cast to a pointer to the given type.
-If @count is 0 it returns %NULL.
+If @n_structs is 0 it returns %NULL.
 </para>
 
 @struct_type: the type of the elements to allocate.
@@ -36,7 +36,7 @@ If @count is 0 it returns %NULL.
 <para>
 Allocates @n_structs elements of type @struct_type, initialized to 0's.
 The returned pointer is cast to a pointer to the given type.
-If @count is 0 it returns %NULL.
+If @n_structs is 0 it returns %NULL.
 </para>
 
 @struct_type: the type of the elements to allocate.
@@ -47,7 +47,7 @@ If @count is 0 it returns %NULL.
 <!-- ##### MACRO g_renew ##### -->
 <para>
 Reallocates the memory pointed to by @mem, so that it now has space for
-@n_struct elements of type @struct_type. It returns the new address of 
+@n_structs elements of type @struct_type. It returns the new address of 
 the memory, which may have been moved.
 </para>
 
@@ -57,6 +57,50 @@ the memory, which may have been moved.
 @Returns: a pointer to the new allocated memory, cast to a pointer to @struct_type.
 
 
+<!-- ##### MACRO g_try_new ##### -->
+<para>
+Attempts to allocate @n_structs elements of type @struct_type, and returns 
+%NULL on failure. Contrast with g_new(), which aborts the program on failure.
+The returned pointer is cast to a pointer to the given type. 
+If @n_structs is 0 it returns %NULL.
+</para>
+
+@struct_type: the type of the elements to allocate.
+@n_structs: the number of elements to allocate.
+@Returns: a pointer to the allocated memory, cast to a pointer to @struct_type.
+@Since: 2.8
+
+
+<!-- ##### MACRO g_try_new0 ##### -->
+<para>
+Attempts to allocate @n_structs elements of type @struct_type, initialized 
+to 0's, and returns %NULL on failure. Contrast with g_new0(), which aborts 
+the program on failure.
+The returned pointer is cast to a pointer to the given type.
+If @n_counts is 0 it returns %NULL.
+</para>
+
+@struct_type: the type of the elements to allocate.
+@n_structs: the number of elements to allocate.
+@Returns: a pointer to the allocated memory, cast to a pointer to @struct_type.
+@Since: 2.8
+
+
+<!-- ##### MACRO g_try_renew ##### -->
+<para>
+Attempts to reallocate the memory pointed to by @mem, so that it now has 
+space for @n_structs elements of type @struct_type, and returns %NULL on 
+failure. Contrast with g_renew(), which aborts the program on failure.
+It returns the new address of the memory, which may have been moved.
+</para>
+
+@struct_type: the type of the elements to allocate.
+@mem: the currently allocated memory.
+@n_structs: the number of elements to allocate.
+@Returns: a pointer to the new allocated memory, cast to a pointer to @struct_type.
+@Since: 2.8
+
+
 <!-- ##### FUNCTION g_malloc ##### -->
 <para>
 Allocates @n_bytes bytes of memory.
index a1cd3e7..cf21e58 100644 (file)
@@ -64,6 +64,13 @@ gpointer g_try_realloc    (gpointer   mem,
 #define g_renew(struct_type, mem, n_structs)   \
     ((struct_type *) g_realloc ((mem), ((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
 
+#define g_try_new(struct_type, n_structs)              \
+    ((struct_type *) g_try_malloc (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
+#define g_try_new0(struct_type, n_structs)             \
+    ((struct_type *) g_try_malloc0 (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
+#define g_try_renew(struct_type, mem, n_structs)       \
+    ((struct_type *) g_try_realloc ((mem), ((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
+
 
 /* Memory allocation virtualization for debugging purposes
  * g_mem_set_vtable() has to be the very first GLib function called