GSequence: Make g_sequence_iter_move behave as documented

As pointed out in bug 658313, moving before the begin iter is
supposed to return the begin iter, not the end iter. Also add
a test for this behaviour.
This commit is contained in:
Matthias Clasen
2011-04-26 22:08:24 -04:00
parent 2a3f7f49b4
commit 440bd2a975
2 changed files with 39 additions and 1 deletions

View File

@@ -1422,12 +1422,18 @@ g_sequence_iter_move (GSequenceIter *iter,
gint delta)
{
gint new_pos;
gint len;
g_return_val_if_fail (iter != NULL, NULL);
len = g_sequence_get_length (get_sequence (iter));
new_pos = node_get_pos (iter) + delta;
new_pos = clamp_position (get_sequence (iter), new_pos);
if (new_pos < 0)
new_pos = 0;
else if (new_pos > len)
new_pos = len;
return node_get_by_pos (iter, new_pos);
}