X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fguestfs.c;h=b02bdb9d72626d9f54699f26f17b4cba2d26833d;hb=123610f1b5133a9e541a245467f60d065ea96575;hp=7868e8f060e52ee474cbcbed3f8b5a0d6396814b;hpb=b2f8627ab59daeb03f036dde6c66fb9da736950c;p=libguestfs.git diff --git a/src/guestfs.c b/src/guestfs.c index 7868e8f..b02bdb9 100644 --- a/src/guestfs.c +++ b/src/guestfs.c @@ -169,15 +169,19 @@ guestfs_create (void) void guestfs_close (guestfs_h *g) { - int i; - guestfs_h *gg; - if (g->state == NO_HANDLE) { /* Not safe to call ANY callbacks here, so ... */ fprintf (stderr, _("guestfs_close: called twice on the same handle\n")); return; } + if (g->trace) { + const char trace_msg[] = "close"; + + guestfs___call_callbacks_message (g, GUESTFS_EVENT_TRACE, + trace_msg, strlen (trace_msg)); + } + debug (g, "closing guestfs handle %p (state %d)", g, g->state); /* Try to sync if autosync flag is set. */ @@ -219,6 +223,8 @@ guestfs_close (guestfs_h *g) remove_tmpdir (g); if (g->cmdline) { + size_t i; + for (i = 0; i < g->cmdline_size; ++i) free (g->cmdline[i]); free (g->cmdline); @@ -231,6 +237,8 @@ guestfs_close (guestfs_h *g) if (handles == g) handles = g->next; else { + guestfs_h *gg; + for (gg = handles; gg->next != g; gg = gg->next) ; gg->next = g->next;