mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-10-04 04:39:20 +02:00
minor optimization.
Wed Mar 1 10:39:39 2000 Tim Janik <timj@gtk.org> * gslist.c (g_slist_reverse): minor optimization. * testglib.c (g_node_test): added a couple of tests for g_node_copy(). * glib.h: * gnode.c (g_node_copy): new function to copy subtrees, supplied by dbsears@ix.netcom.com. changed iterator to walk the children list backwards, so we get down from O(n^2) to O(n). * gnode.c (g_node_first_sibling): applied patch from dbsears@ix.netcom.com to optimize access if node->parent is present. * gutils.c (g_get_any_init): backed out HAVE_PW_GECOS check around assignment of g_real_name, sicne HAVE_PW_GECOS is never defined and thus breaks the original code. * merged changes from 1.2.7. Sat Feb 19 19:43:29 2000 Tim Janik <timj@gtk.org> * testgmodule.c (main): added test to check that not yet bound symbols in shared libraries of the main module are retrievable, from David Gero. Fri Jan 28 11:37:41 2000 Owen Taylor <otaylor@redhat.com> Bug #4156 - Changes vaguely modelled after Scott Gifford's patch * gtimer.c (g_timer_elapsed): Never report negative times - clip times to 0. * gmain.c (g_timeout_prepare): Guard against unexpected clock shifts by never setting a timeout of more than data->interval msecs.
This commit is contained in:
21
glib/gnode.c
21
glib/gnode.c
@@ -189,6 +189,24 @@ g_node_unlink (GNode *node)
|
||||
node->prev = NULL;
|
||||
}
|
||||
|
||||
GNode*
|
||||
g_node_copy (GNode *node)
|
||||
{
|
||||
GNode *new_node = NULL;
|
||||
|
||||
if (node)
|
||||
{
|
||||
GNode *child;
|
||||
|
||||
new_node = g_node_new (node->data);
|
||||
|
||||
for (child = g_node_last_child (node); child; child = child->prev)
|
||||
g_node_prepend (new_node, g_node_copy (child));
|
||||
}
|
||||
|
||||
return new_node;
|
||||
}
|
||||
|
||||
GNode*
|
||||
g_node_insert (GNode *parent,
|
||||
gint position,
|
||||
@@ -917,6 +935,9 @@ g_node_first_sibling (GNode *node)
|
||||
{
|
||||
g_return_val_if_fail (node != NULL, NULL);
|
||||
|
||||
if (node->parent)
|
||||
return node->parent->children;
|
||||
|
||||
while (node->prev)
|
||||
node = node->prev;
|
||||
|
||||
|
Reference in New Issue
Block a user