[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