about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Src/utils.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/Src/utils.c b/Src/utils.c
index cbcdfc91e..cb279983b 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -3073,7 +3073,10 @@ bslashquote(const char *s, char **e, int instring)
 	  }
 	  continue;
 	}
-	else if (ispecial(*u) && (*u != '=' || u == s) &&
+	else if (ispecial(*u) &&
+		 ((*u != '=' && *u != '~') ||
+		  (u == s || (isset(MAGICEQUALSUBST) &&
+			      (u[-1] == '=' || u[-1] == ':')))) &&
 	    (!instring ||
 	     (isset(BANGHIST) && *u == (char)bangchar) ||
 	     (instring == 2 &&