Make toy_init() reentrant, or else xexec() has funky errors.
diff --git a/main.c b/main.c
index e0dab1c..4b4b376 100644
--- a/main.c
+++ b/main.c
@@ -76,10 +76,12 @@
 
 		if ((which->flags & TOYFLAG_NEEDROOT) && euid)
 			error_exit("Not root");
-
 	}
 
-	// Free old toys contents here?
+	// Free old toys contents (to be reentrant)
+
+	if (toys.optargs != toys.argv+1) free(toys.optargs);
+	bzero(&toys, sizeof(struct toy_context));
 
 	toys.which = which;
 	toys.argv = argv;