Index: trunk/lib/trace.c
===================================================================
--- trunk/lib/trace.c	(revision 795)
+++ trunk/lib/trace.c	(revision 797)
@@ -577,10 +577,14 @@
 DLLEXPORT void trace_destroy(libtrace_t *libtrace) {
         assert(libtrace);
-	if (libtrace->started && libtrace->format->pause_input)
-		libtrace->format->pause_input(libtrace);
-	libtrace->format->fin_input(libtrace);
+	if (libtrace->format) {
+		if (libtrace->started && libtrace->format->pause_input)
+			libtrace->format->pause_input(libtrace);
+		libtrace->format->fin_input(libtrace);
+	}
         /* need to free things! */
-        free(libtrace->uridata);
-	destroy_tracefifo(libtrace->fifo);
+        if (libtrace->uridata)
+		free(libtrace->uridata);
+	if (libtrace->fifo)
+		destroy_tracefifo(libtrace->fifo);
         free(libtrace);
 }
