+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
+2000-08-17 Darin Adler <darin@eazel.com>
+
+ * glib.h:
+ * garray.c: (g_array_free), (g_ptr_array_free),
+ (g_byte_array_free): Return the data left behind.
+ * gstring.c: (g_string_free): Return the data left behind.
+
+ Changed the free calls that leave data behind so they
+ return a pointer to the left-behind data, NULL if told not
+ to leave anything behind. This makes these calls easier
+ to use correctly, without any incompatible API change for
+ callers that don't know about the return value. Of course,
+ it would be even clearer if the free calls weren't dual-purpose
+ in the first place.
+
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
return (GArray*) array;
}
-void
+gchar*
g_array_free (GArray *array,
gboolean free_segment)
{
+ gchar* segment;
+
+ g_return_val_if_fail (array, NULL);
+
if (free_segment)
- g_free (array->data);
+ {
+ g_free (array->data);
+ segment = NULL;
+ }
+ else
+ segment = array->data;
G_LOCK (array_mem_chunk);
g_mem_chunk_free (array_mem_chunk, array);
G_UNLOCK (array_mem_chunk);
+
+ return segment;
}
GArray*
return (GPtrArray*) array;
}
-void
+gpointer*
g_ptr_array_free (GPtrArray *array,
gboolean free_segment)
{
- g_return_if_fail (array);
+ gpointer* segment;
+
+ g_return_val_if_fail (array, NULL);
if (free_segment)
- g_free (array->pdata);
+ {
+ g_free (array->pdata);
+ segment = NULL;
+ }
+ else
+ segment = array->pdata;
G_LOCK (ptr_array_mem_chunk);
g_mem_chunk_free (ptr_array_mem_chunk, array);
G_UNLOCK (ptr_array_mem_chunk);
+
+ return segment;
}
static void
return (GByteArray*) g_array_sized_new (FALSE, FALSE, 1, reserved_size);
}
-void g_byte_array_free (GByteArray *array,
+guint8* g_byte_array_free (GByteArray *array,
gboolean free_segment)
{
- g_array_free ((GArray*) array, free_segment);
+ return (guint8*) g_array_free ((GArray*) array, free_segment);
}
GByteArray* g_byte_array_append (GByteArray *array,
*/
GString* g_string_new (const gchar *init);
GString* g_string_sized_new (guint dfl_size);
-void g_string_free (GString *string,
+gchar* g_string_free (GString *string,
gboolean free_segment);
gboolean g_string_equal (const GString *v,
const GString *v2);
gboolean clear,
guint element_size,
guint reserved_size);
-void g_array_free (GArray *array,
+gchar* g_array_free (GArray *array,
gboolean free_segment);
GArray* g_array_append_vals (GArray *array,
gconstpointer data,
#define g_ptr_array_index(array,index) (array->pdata)[index]
GPtrArray* g_ptr_array_new (void);
GPtrArray* g_ptr_array_sized_new (guint reserved_size);
-void g_ptr_array_free (GPtrArray *array,
+gpointer* g_ptr_array_free (GPtrArray *array,
gboolean free_seg);
void g_ptr_array_set_size (GPtrArray *array,
gint length);
GByteArray* g_byte_array_new (void);
GByteArray* g_byte_array_sized_new (guint reserved_size);
-void g_byte_array_free (GByteArray *array,
+guint8* g_byte_array_free (GByteArray *array,
gboolean free_segment);
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data,
return (GArray*) array;
}
-void
+gchar*
g_array_free (GArray *array,
gboolean free_segment)
{
+ gchar* segment;
+
+ g_return_val_if_fail (array, NULL);
+
if (free_segment)
- g_free (array->data);
+ {
+ g_free (array->data);
+ segment = NULL;
+ }
+ else
+ segment = array->data;
G_LOCK (array_mem_chunk);
g_mem_chunk_free (array_mem_chunk, array);
G_UNLOCK (array_mem_chunk);
+
+ return segment;
}
GArray*
return (GPtrArray*) array;
}
-void
+gpointer*
g_ptr_array_free (GPtrArray *array,
gboolean free_segment)
{
- g_return_if_fail (array);
+ gpointer* segment;
+
+ g_return_val_if_fail (array, NULL);
if (free_segment)
- g_free (array->pdata);
+ {
+ g_free (array->pdata);
+ segment = NULL;
+ }
+ else
+ segment = array->pdata;
G_LOCK (ptr_array_mem_chunk);
g_mem_chunk_free (ptr_array_mem_chunk, array);
G_UNLOCK (ptr_array_mem_chunk);
+
+ return segment;
}
static void
return (GByteArray*) g_array_sized_new (FALSE, FALSE, 1, reserved_size);
}
-void g_byte_array_free (GByteArray *array,
+guint8* g_byte_array_free (GByteArray *array,
gboolean free_segment)
{
- g_array_free ((GArray*) array, free_segment);
+ return (guint8*) g_array_free ((GArray*) array, free_segment);
}
GByteArray* g_byte_array_append (GByteArray *array,
*/
GString* g_string_new (const gchar *init);
GString* g_string_sized_new (guint dfl_size);
-void g_string_free (GString *string,
+gchar* g_string_free (GString *string,
gboolean free_segment);
gboolean g_string_equal (const GString *v,
const GString *v2);
gboolean clear,
guint element_size,
guint reserved_size);
-void g_array_free (GArray *array,
+gchar* g_array_free (GArray *array,
gboolean free_segment);
GArray* g_array_append_vals (GArray *array,
gconstpointer data,
#define g_ptr_array_index(array,index) (array->pdata)[index]
GPtrArray* g_ptr_array_new (void);
GPtrArray* g_ptr_array_sized_new (guint reserved_size);
-void g_ptr_array_free (GPtrArray *array,
+gpointer* g_ptr_array_free (GPtrArray *array,
gboolean free_seg);
void g_ptr_array_set_size (GPtrArray *array,
gint length);
GByteArray* g_byte_array_new (void);
GByteArray* g_byte_array_sized_new (guint reserved_size);
-void g_byte_array_free (GByteArray *array,
+guint8* g_byte_array_free (GByteArray *array,
gboolean free_segment);
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data,
return string;
}
-void
+gchar*
g_string_free (GString *string,
gboolean free_segment)
{
+ gchar *segment;
+
g_return_if_fail (string != NULL);
if (free_segment)
- g_free (string->str);
+ {
+ g_free (string->str);
+ segment = NULL;
+ }
+ else
+ segment = string->str;
G_LOCK (string_mem_chunk);
g_mem_chunk_free (string_mem_chunk, string);
G_UNLOCK (string_mem_chunk);
+
+ return segment;
}
gboolean
return string;
}
-void
+gchar*
g_string_free (GString *string,
gboolean free_segment)
{
+ gchar *segment;
+
g_return_if_fail (string != NULL);
if (free_segment)
- g_free (string->str);
+ {
+ g_free (string->str);
+ segment = NULL;
+ }
+ else
+ segment = string->str;
G_LOCK (string_mem_chunk);
g_mem_chunk_free (string_mem_chunk, string);
G_UNLOCK (string_mem_chunk);
+
+ return segment;
}
gboolean