From 78cbcc39fc3a660af0f634f44005c105c75935f4 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Tue, 13 Jan 2004 10:09:05 +0000 Subject: [PATCH] Fixed bug in get_logbook_hierarchy() SVN revision: 665 --- src/elogd.c | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index 2da51391..f8ed2ae2 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -6,6 +6,9 @@ Contents: Web server program for Electronic Logbook ELOG $Log$ + Revision 1.183 2004/01/13 10:09:05 midas + Fixed bug in get_logbook_hierarchy() + Revision 1.182 2004/01/13 09:37:01 midas Admin users can edit [global ] section @@ -433,6 +436,7 @@ LBLIST get_logbook_hierarchy(void); int is_logbook_in_group(LBLIST pgrp, char *logbook); void free_logbook_hierarchy(LBLIST root); void show_top_text(LOGBOOK *lbs); +void show_bottom_text(LOGBOOK *lbs); /*---- Funcions from the MIDAS library -----------------------------*/ @@ -4528,27 +4532,29 @@ LBLIST get_logbook_hierarchy(void) /* populate nodes with logbooks or other groups */ for (i = 0; i < root->n_members; i++) - for (j = 0; j < root->member[i]->n_members; j++) { - /* check if node is valid logbook */ - for (k = 0; lb_list[k].name[0]; k++) - if (equal_ustring(root->member[i]->member[j]->name, lb_list[k].name)) - break; - - /* check if node is subgroup of other node */ - if (!lb_list[k].name[0]) { - for (k = 0; k < root->n_members; k++) - if (equal_ustring(root->member[i]->member[j]->name, root->member[k]->name)) { - - /* node is allocated twice, so free one... */ - free(root->member[i]->member[j]); - - /* ... and reference the other */ - root->member[i]->member[j] = root->member[k]; - - /* mark original pointer invalid */ - root->member[k] = NULL; + if (root->member[i]) { + for (j = 0; j < root->member[i]->n_members; j++) { + /* check if node is valid logbook */ + for (k = 0; lb_list[k].name[0]; k++) + if (equal_ustring(root->member[i]->member[j]->name, lb_list[k].name)) break; - } + + /* check if node is subgroup of other node */ + if (!lb_list[k].name[0]) { + for (k = 0; k < root->n_members; k++) + if (equal_ustring(root->member[i]->member[j]->name, root->member[k]->name)) { + + /* node is allocated twice, so free one... */ + free(root->member[i]->member[j]); + + /* ... and reference the other */ + root->member[i]->member[j] = root->member[k]; + + /* mark original pointer invalid */ + root->member[k] = NULL; + break; + } + } } }