Hi Patrick: El vie, 15-12-2006 a las 17:46 +0100, Patrick Bernaud escribió: > Carlos Nieves Ónega writes: > > [...] > > > Ack! This is changed behavior. It seems that the order is > > > now different then what I expected. libgeda/gschem should always search > > > the component libraries in the reverse order (that is your local > libraries > > > should be found first), however it is not doing that. This is a bug > > > and will be fixed. Thanks for the bug report. > > > > Hopefully it's fixed now in HEAD. > > I am curious on the reason that made you clib_directories from a > GSList to a GList. Correct me if I am wrong but this code is correct > and does not require a GList. > > The bug is not in libgeda/s_clib.c but in all the places where > s_clib_search_basename() is used: the function calling it must be > careful enough to take the last item from the list. The bug is HERE > (libgeda and gschem). > > So a better way to fix this problem would have been to use > g_slist_last() on the returned list and not to modify s_clib.c.
Here are the reasons: - All the existing code asserts that the first node returned by s_clib_search_basename is the first entry to be used. This makes sense. - It also makes sense to change the search function instead of changing every function calling it. - The above two points suggests to a change in the search function, searching backwards instead of forwards. - I like to use a double-linked list whenever I need to go forward and backwards in a list. - The penalty of using a GList instead of a GSList is only a pointer for each library node. - No user will be using thousands of libraries at the same time so the memory consumption won't be increased so much. - It makes programmer's life easier. Regards, Carlos _______________________________________________ geda-user mailing list [email protected] http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

