From 6c623acc1cc9aeeac4fc3bde9af65b87d29defd7 Mon Sep 17 00:00:00 2001 From: pjung Date: Fri, 22 Jun 2007 07:30:26 -0700 Subject: 6524791 svccfg dumps core when repository changed --- usr/src/cmd/svc/svccfg/svccfg_libscf.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'usr/src') diff --git a/usr/src/cmd/svc/svccfg/svccfg_libscf.c b/usr/src/cmd/svc/svccfg/svccfg_libscf.c index eb1f796662..41c3d69f5d 100644 --- a/usr/src/cmd/svc/svccfg/svccfg_libscf.c +++ b/usr/src/cmd/svc/svccfg/svccfg_libscf.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -618,9 +618,9 @@ remove_tempfile(void) } if (tempfilename[0] != '\0') { - do + do { ret = remove(tempfilename); - while (ret == -1 && errno == EINTR); + } while (ret == -1 && errno == EINTR); if (ret == -1) warn(gettext("Could not remove temporary file")); tempfilename[0] = '\0'; @@ -666,9 +666,9 @@ start_private_repository(engine_state_t *est) } else if (est->sc_repo_pid == -1) uu_die(gettext("Attempt to fork failed")); - do + do { pid = waitpid(est->sc_repo_pid, &stat, 0); - while (pid == -1 && errno == EINTR); + } while (pid == -1 && errno == EINTR); if (pid == -1) uu_die(gettext("Could not waitpid() for repository server")); @@ -787,8 +787,10 @@ repository_teardown(void) scf_service_destroy(cur_svc); scf_scope_destroy(cur_scope); scf_handle_destroy(g_hndl); + cur_inst = NULL; + cur_svc = NULL; + cur_scope = NULL; g_hndl = NULL; - lscf_cleanup(); } } -- cgit v1.2.3