diff --git a/src/combine_path.h b/src/combine_path.h
index 1df024cb5e44c8d5b1443ca86f1ba41a2ed14e52..f0615f33c154aa669b3871250ef00c183e29aaef 100644
--- a/src/combine_path.h
+++ b/src/combine_path.h
@@ -85,7 +85,7 @@ static void APPEND_PATH(struct string_builder *s,
   if(s->s->len && !IS_SEP(LAST_PUSHED()))
     PUSH('/');
 
-  while(s->s->len==2)
+  if(s->s->len==2)
   {
     PCHARP to=MKPCHARP_STR(s->s);
     if(INDEX_PCHARP(to, 0) == '.')
@@ -163,7 +163,7 @@ static void APPEND_PATH(struct string_builder *s,
     if(from>=len) break;
     PUSH(INDEX_PCHARP(path, from++));
   }
-  if(s->s->len && 
+  if((s->s->len > 1) && 
      !IS_SEP(INDEX_PCHARP(path, from-1)) &&
      IS_SEP(LAST_PUSHED()))
     s->s->len--;