hush: tweak ${var/pattern/repl} optimization

function                                             old     new   delta
expand_one_var                                      2507    2502      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/shell/hush.c b/shell/hush.c
index 179155f..c970d90 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -6466,17 +6466,16 @@
 /* ${var/[/]pattern[/repl]} helpers */
 static char *strstr_pattern(char *val, const char *pattern, int *size)
 {
-	if (!strpbrk(pattern, "*?[\\")) {
+	int sz = strcspn(pattern, "*?[\\");
+	if (pattern[sz] == '\0') {
 		/* Optimization for trivial patterns.
 		 * Testcase for very slow replace (performs about 22k replaces):
 		 * x=::::::::::::::::::::::
 		 * x=$x$x;x=$x$x;x=$x$x;x=$x$x;x=$x$x;x=$x$x;x=$x$x;x=$x$x;x=$x$x;x=$x$x;echo ${#x}
 		 * echo "${x//:/|}"
 		 */
-		char *found = strstr(val, pattern);
-		if (found)
-			*size = strlen(pattern);
-		return found;
+		*size = sz;
+		return strstr(val, pattern);
 	}
 
 	while (1) {