diff --git a/src/lib66/tree/tree_service_remove.c b/src/lib66/tree/tree_service_remove.c
index 3c0839d259de2d074f5ad6206d19371642441e60..7525b15853f78295f8d8c097e3da81ab52985e4d 100644
--- a/src/lib66/tree/tree_service_remove.c
+++ b/src/lib66/tree/tree_service_remove.c
@@ -34,23 +34,27 @@ void tree_service_remove(char const *base, char const *treename, char const *ser
     if (!resolve_read_g(wres, base, treename))
         log_dieusys(LOG_EXIT_SYS, "read resolve file of tree: ", treename) ;
 
-    if (!sastr_clean_string(&sa, tres.sa.s + tres.contents))
-        log_dieu(LOG_EXIT_SYS, "clean string") ;
+    if (tres.ncontents) {
 
-    if (!sastr_remove_element(&sa, service))
-        log_dieu(LOG_EXIT_SYS, "remove service: ", service, " list") ;
+        if (!sastr_clean_string(&sa, tres.sa.s + tres.contents))
+            log_dieu(LOG_EXIT_SYS, "clean string") ;
 
-    if (sa.len) {
-        if (!sastr_rebuild_in_oneline(&sa))
-            log_dieu(LOG_EXIT_SYS, "rebuild stralloc list") ;
-        str = sa.s ;
+        if (!sastr_remove_element(&sa, service))
+            log_dieu(LOG_EXIT_SYS, "remove service: ", service, " from selection") ;
 
-    } else str = "" ;
+        if (sa.len) {
+            if (!sastr_rebuild_in_oneline(&sa))
+                log_dieu(LOG_EXIT_SYS, "rebuild stralloc list") ;
+            str = sa.s ;
 
-    if (!resolve_modify_field(wres, E_RESOLVE_TREE_CONTENTS, str))
+        } else str = "" ;
+
+        if (!resolve_modify_field(wres, E_RESOLVE_TREE_CONTENTS, str))
         log_dieusys(LOG_EXIT_SYS, "modify resolve file of: ", treename) ;
+    }
 
-    tres.ncontents-- ;
+    if (tres.ncontents)
+        tres.ncontents-- ;
 
     if (!resolve_write_g(wres, base, treename))
         log_dieusys(LOG_EXIT_SYS, "write resolve file of tree: ", treename) ;