diff --git a/sway/stringop.c b/sway/stringop.c
index b944a43d..0f8577ae 100644
--- a/sway/stringop.c
+++ b/sway/stringop.c
@@ -53,8 +53,9 @@ char *strip_comments(char *str) {
 list_t *split_string(const char *str, const char *delims) {
 	list_t *res = create_list();
 	int i, j;
-	for (i = 0, j = 0; i < strlen(str) + 1; ++i) {
-		if (strchr(delims, str[i]) || i == strlen(str)) {
+	int len = strlen(str);
+	for (i = 0, j = 0; i < len + 1; ++i) {
+		if (strchr(delims, str[i]) || i == len) {
 			if (i - j == 0) {
 				continue;
 			}
@@ -63,7 +64,7 @@ list_t *split_string(const char *str, const char *delims) {
 			left[i - j] = 0;
 			list_add(res, left);
 			j = i + 1;
-			while (j <= strlen(str) && str[j] && strchr(delims, str[j])) {
+			while (j <= len && str[j] && strchr(delims, str[j])) {
 				j++;
 				i++;
 			}
@@ -111,40 +112,44 @@ int unescape_string(char *string) {
 	for (i = 0; string[i]; ++i) {
 		if (string[i] == '\\') {
 			--len;
+			int shift = 0;
 			switch (string[++i]) {
 			case '0':
 				string[i - 1] = '\0';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 'a':
 				string[i - 1] = '\a';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 'b':
 				string[i - 1] = '\b';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 't':
 				string[i - 1] = '\t';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 'n':
 				string[i - 1] = '\n';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 'v':
 				string[i - 1] = '\v';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 'f':
 				string[i - 1] = '\f';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			case 'r':
 				string[i - 1] = '\r';
-				memmove(string + i, string + i + 1, len - i);
+				shift = 1;
 				break;
 			}
+			if (shift) {
+				memmove(string + i, string + i + shift, len - i);
+			}
 		}
 	}
 	return len;