GArray: Avoid unncessary atomic accesses to refcounts

Not really necessary to double-check the ref-count.
This commit is contained in:
Matthias Clasen 2011-05-28 21:41:08 -04:00
parent abf719362a
commit edc7fde495

View File

@ -218,8 +218,9 @@ g_array_ref (GArray *array)
{ {
GRealArray *rarray = (GRealArray*) array; GRealArray *rarray = (GRealArray*) array;
g_return_val_if_fail (array, NULL); g_return_val_if_fail (array, NULL);
g_return_val_if_fail (g_atomic_int_get (&rarray->ref_count) > 0, array);
g_atomic_int_inc (&rarray->ref_count); g_atomic_int_inc (&rarray->ref_count);
return array; return array;
} }
@ -239,7 +240,7 @@ g_array_unref (GArray *array)
{ {
GRealArray *rarray = (GRealArray*) array; GRealArray *rarray = (GRealArray*) array;
g_return_if_fail (array); g_return_if_fail (array);
g_return_if_fail (g_atomic_int_get (&rarray->ref_count) > 0);
if (g_atomic_int_dec_and_test (&rarray->ref_count)) if (g_atomic_int_dec_and_test (&rarray->ref_count))
g_array_free (array, TRUE); g_array_free (array, TRUE);
} }
@ -875,8 +876,9 @@ g_ptr_array_ref (GPtrArray *array)
GRealPtrArray *rarray = (GRealPtrArray*) array; GRealPtrArray *rarray = (GRealPtrArray*) array;
g_return_val_if_fail (array, NULL); g_return_val_if_fail (array, NULL);
g_return_val_if_fail (g_atomic_int_get (&rarray->ref_count) > 0, array);
g_atomic_int_inc (&rarray->ref_count); g_atomic_int_inc (&rarray->ref_count);
return array; return array;
} }
@ -895,9 +897,8 @@ void
g_ptr_array_unref (GPtrArray *array) g_ptr_array_unref (GPtrArray *array)
{ {
GRealPtrArray *rarray = (GRealPtrArray*) array; GRealPtrArray *rarray = (GRealPtrArray*) array;
g_return_if_fail (array); g_return_if_fail (array);
g_return_if_fail (g_atomic_int_get (&rarray->ref_count) > 0);
if (g_atomic_int_dec_and_test (&rarray->ref_count)) if (g_atomic_int_dec_and_test (&rarray->ref_count))
g_ptr_array_free (array, TRUE); g_ptr_array_free (array, TRUE);
} }