[Spread-cvs] commit: r521 - branches/reconfig_groups_crash_bugfix/daemon

jonathan at spread.org jonathan at spread.org
Thu May 3 12:07:31 EDT 2012


Author: jonathan
Date: 2012-05-03 12:07:31 -0400 (Thu, 03 May 2012)
New Revision: 521

Modified:
   branches/reconfig_groups_crash_bugfix/daemon/groups.c
Log:
Use stdskl functions to make copy/merge of lists simpler. Add checks for memory failure.

Modified: branches/reconfig_groups_crash_bugfix/daemon/groups.c
===================================================================
--- branches/reconfig_groups_crash_bugfix/daemon/groups.c	2012-05-03 15:45:06 UTC (rev 520)
+++ branches/reconfig_groups_crash_bugfix/daemon/groups.c	2012-05-03 16:07:31 UTC (rev 521)
@@ -390,7 +390,6 @@
 {
     int                 ret;
     group		*grp, *tmp_grp;
-    daemon_members      *dmn;
     stdit               git, dit;
     stdskl              tmp_GroupsList;
 
@@ -418,6 +417,8 @@
     */
     for (stdskl_begin(&GroupsList, &git); !stdskl_is_end(&GroupsList, &git); ) 
     {
+        stdit bskl, eskl;
+
         grp = *(group**) stdskl_it_key(&git);
         stdskl_it_next(&git);  /* NOTE: need to do advancement before potential erasure below */
         
@@ -436,15 +437,13 @@
             Alarmp( SPLOG_FATAL, GROUPS, "%s: %d: memory allocation failed\n", __FILE__, __LINE__ );
         }
 
-        for (stdskl_begin(&grp->DaemonsList, &dit); !stdskl_is_end(&grp->DaemonsList, &dit); ) 
-        {
-            dmn = *(daemon_members**) stdskl_it_key(&dit);
-            stdskl_it_next(&dit);  /* NOTE: need to do advancement before potential erasure below */
-            
-            /* insert this dmn into the new skiplist */
-            if (stdskl_put(&tmp_grp->DaemonsList, NULL, &dmn, NULL, STDFALSE) != 0) {
-                Alarmp( SPLOG_FATAL, GROUPS, "%s: %d: memory allocation failed\n", __FILE__, __LINE__ );
-            }
+
+        stdskl_begin(&grp->DaemonsList, &bskl);
+        stdskl_end(&grp->DaemonsList, &eskl);
+        stdskl_begin(&tmp_grp->DaemonsList, &dit);
+        /* Insert entire grp->DaemonsList (from begin to last) into tmp_grp->DaemonsList */
+        if (stdskl_insert_seq(&tmp_grp->DaemonsList, &dit, &bskl, &eskl, STDTRUE) != 0) {
+            Alarmp( SPLOG_FATAL, GROUPS, "%s: %d: memory allocation failed\n", __FILE__, __LINE__ );
         }
 
     }
@@ -502,11 +501,13 @@
         stdskl_end(&tmp_grp->DaemonsList, &eskl);
         stdskl_begin(&grp->DaemonsList, &dit);
         /* Insert entire tmp_grp->DaemonsList (from begin to last) into grp->DaemonsList */
-        stdskl_insert_seq(&grp->DaemonsList, &dit, &bskl, &eskl, STDTRUE);
+        if (stdskl_insert_seq(&grp->DaemonsList, &dit, &bskl, &eskl, STDTRUE) != 0) {
+            Alarmp( SPLOG_FATAL, GROUPS, "%s: %d: memory allocation failed\n", __FILE__, __LINE__ );
+        }
 
         /* destroy interim DaemonList since we are done with it */
 	stdskl_erase(&tmp_GroupsList, &it);
-        stdskl_destruct( &tmp_grp->DaemonsList);
+        stdskl_destruct(&tmp_grp->DaemonsList);
 	dispose(tmp_grp);
     }
 




More information about the Spread-cvs mailing list