diff --git a/DataStr/List.cpp b/DataStr/List.cpp index f2ec9170fec7fe5270bcedae73cbaa94cfba82ac..5a7802a10e06f96635c45d64f3fc1766e815bc87 100644 --- a/DataStr/List.cpp +++ b/DataStr/List.cpp @@ -1,4 +1,4 @@ -// $Id: List.cpp,v 1.31 2004-06-16 17:57:07 geuzaine Exp $ +// $Id: List.cpp,v 1.32 2004-10-06 14:39:19 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -287,28 +287,29 @@ void *lolofind(void *data, void *array, int n, int size, return (NULL); } -int List_LQuery(List_T * liste, void *data, - int (*fcmp) (const void *a, const void *b), int first) +int List_LQuery(List_T *liste, void *data, + int (*fcmp)(const void *a, const void *b), int first) { char *ptr; - - if(first == 1) { - ptr = (char *)lolofind(data, liste->array, liste->n, liste->size, fcmp); + + if (first == 1) { + ptr = (char *) lolofind(data,liste->array,liste->n,liste->size,fcmp); } else { - if(startptr != NULL) - ptr = (char *)lolofind(data, startptr, liste->n, liste->size, fcmp); + if (startptr != NULL) + ptr = (char *) lolofind(data,startptr, + liste->n - (startptr-liste->array)/liste->size, + liste->size,fcmp); else - return (0); + return(0); } - if(ptr == NULL) - return (0); + if (ptr == NULL) return(0); - startptr = ptr + liste->size; - if(startptr >= (liste->array + liste->n * liste->size)) + startptr = ptr + liste->size; + if ( startptr >= ( liste->array + liste->n * liste->size)) startptr = NULL; - memcpy(data, ptr, liste->size); + memcpy(data,ptr,liste->size); return (1); }