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)