On Saturday 16 February 2008 20:23:19 James Keenan via RT wrote:
> After a whole day of binary searches, I've identified the problem as
> occurring in a revision of src/list.c in revision 24840 (attached).
>
> I am currently testing to see whether simply reverting this change is
> sufficient to get t/src/intlist.t passing again on Darwin without
> breaking it on Linux (the only other OS to which I have access).
Good catch. This part of the patch looks very wrong to me.
The checkin message says that this line does nothing, but I haven't convinced
myself that it's true. Andy?
-- c
--- src/list.c (revision 24839)
+++ src/list.c (revision 24840)
@@ -1876,7 +1876,7 @@
{
void *ret;
UINTVAL idx = list->start++;
- List_chunk *chunk = list->first;
+ List_chunk * const chunk = list->first;
if (list->length == 0)
return NULL;
@@ -1887,7 +1887,6 @@
ret = list_item(interp, list, type, idx);
if (list->start >= chunk->items) {
list->cap -= chunk->items;
- chunk = list->first = chunk->next ? chunk->next : list->last;
list->start = 0;
rebuild_chunk_list(interp, list);
if (list->n_chunks == 1)