diff --git a/src/lib66/ssexec_env.c b/src/lib66/ssexec_env.c
index e59c7c9f5c87334cb4685ec94bbd614c00814f99..8b3ed44b564b23d34f68b9b99e39af522214eb6b 100644
--- a/src/lib66/ssexec_env.c
+++ b/src/lib66/ssexec_env.c
@@ -33,6 +33,7 @@
 #include <66/parser.h>
 #include <66/environ.h>
 #include <66/constants.h>
+#include <66/resolve.h>
 
 int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_t *info)
 {
@@ -85,7 +86,7 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 		else if (r > 2) {
 			log_die(LOG_EXIT_SYS,sv," is set on different tree -- please use -t options") ;
 		}
-		else if (r == 1) log_die(LOG_EXIT_SYS,"unknown service: ",sv," in tree: ", info->treename.s) ;
+		else if (r == 1) log_die(LOG_EXIT_SYS,"unknown service: ",sv, !info->opt_tree ? " in current tree: " : " in tree: ", info->treename.s) ;
 
 		if (!ss_resolve_read(&res,sasrc.s,sv))
 			log_dieusys(LOG_EXIT_SYS,"read resolve file of: ",sv) ;
@@ -100,7 +101,7 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 		stralloc_free(&salink) ;
 	}
 
-	if (!file_readputsa_g(&salist,src))log_dieusys(LOG_EXIT_SYS,"read: ",src) ;
+	if (!file_readputsa_g(&salist,src)) log_dieusys(LOG_EXIT_SYS,"read: ",src) ;
 	if (list)
 	{
 		if (buffer_putsflush(buffer_1, salist.s) < 0)
@@ -114,6 +115,7 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 
 		if (!openwritenclose_unsafe(src,result.s,result.len))
 			log_dieusys(LOG_EXIT_SYS,"create file: ",src,sv) ;
+		goto freed ;
 	}
 	else if (edit)
 	{