mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-11 11:56:16 +01:00
Merge branch 'array-copy-null-terminated' into 'main'
garray: Fix NULL-termination of GPtrArray copies See merge request GNOME/glib!2730
This commit is contained in:
commit
a6f208af8e
@ -1092,7 +1092,7 @@ static void g_ptr_array_maybe_expand (GRealPtrArray *array,
|
|||||||
guint len);
|
guint len);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ptr_array_null_terminate (GRealPtrArray *rarray)
|
ptr_array_maybe_null_terminate (GRealPtrArray *rarray)
|
||||||
{
|
{
|
||||||
if (G_UNLIKELY (rarray->null_terminated))
|
if (G_UNLIKELY (rarray->null_terminated))
|
||||||
rarray->pdata[rarray->len] = NULL;
|
rarray->pdata[rarray->len] = NULL;
|
||||||
@ -1123,7 +1123,7 @@ ptr_array_new (guint reserved_size,
|
|||||||
g_ptr_array_maybe_expand (array, reserved_size);
|
g_ptr_array_maybe_expand (array, reserved_size);
|
||||||
if (null_terminated)
|
if (null_terminated)
|
||||||
{
|
{
|
||||||
/* don't use ptr_array_null_terminate(). It helps the compiler
|
/* don't use ptr_array_maybe_null_terminate(). It helps the compiler
|
||||||
* to see when @null_terminated is false and thereby inline
|
* to see when @null_terminated is false and thereby inline
|
||||||
* ptr_array_new() and possibly remove the code entirely. */
|
* ptr_array_new() and possibly remove the code entirely. */
|
||||||
array->pdata[0] = NULL;
|
array->pdata[0] = NULL;
|
||||||
@ -1285,7 +1285,7 @@ g_ptr_array_copy (GPtrArray *array,
|
|||||||
new_array->len = array->len;
|
new_array->len = array->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr_array_null_terminate (rarray);
|
ptr_array_maybe_null_terminate ((GRealPtrArray *) new_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new_array;
|
return new_array;
|
||||||
@ -1688,7 +1688,7 @@ g_ptr_array_set_size (GPtrArray *array,
|
|||||||
|
|
||||||
rarray->len = length_unsigned;
|
rarray->len = length_unsigned;
|
||||||
|
|
||||||
ptr_array_null_terminate (rarray);
|
ptr_array_maybe_null_terminate (rarray);
|
||||||
}
|
}
|
||||||
else if (length_unsigned < rarray->len)
|
else if (length_unsigned < rarray->len)
|
||||||
g_ptr_array_remove_range (array, length_unsigned, rarray->len - length_unsigned);
|
g_ptr_array_remove_range (array, length_unsigned, rarray->len - length_unsigned);
|
||||||
@ -1862,7 +1862,7 @@ g_ptr_array_remove_range (GPtrArray *array,
|
|||||||
rarray->pdata[rarray->len + i] = NULL;
|
rarray->pdata[rarray->len + i] = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ptr_array_null_terminate (rarray);
|
ptr_array_maybe_null_terminate (rarray);
|
||||||
|
|
||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
@ -1963,7 +1963,7 @@ g_ptr_array_add (GPtrArray *array,
|
|||||||
|
|
||||||
rarray->pdata[rarray->len++] = data;
|
rarray->pdata[rarray->len++] = data;
|
||||||
|
|
||||||
ptr_array_null_terminate (rarray);
|
ptr_array_maybe_null_terminate (rarray);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2026,7 +2026,7 @@ g_ptr_array_extend (GPtrArray *array_to_extend,
|
|||||||
|
|
||||||
rarray_to_extend->len += array->len;
|
rarray_to_extend->len += array->len;
|
||||||
|
|
||||||
ptr_array_null_terminate (rarray_to_extend);
|
ptr_array_maybe_null_terminate (rarray_to_extend);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2097,7 +2097,7 @@ g_ptr_array_insert (GPtrArray *array,
|
|||||||
rarray->len++;
|
rarray->len++;
|
||||||
rarray->pdata[index_] = data;
|
rarray->pdata[index_] = data;
|
||||||
|
|
||||||
ptr_array_null_terminate (rarray);
|
ptr_array_maybe_null_terminate (rarray);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Please keep this doc-comment in sync with pointer_array_sort_example()
|
/* Please keep this doc-comment in sync with pointer_array_sort_example()
|
||||||
|
Loading…
Reference in New Issue
Block a user