summaryrefslogtreecommitdiff
path: root/src/attr_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/attr_file.c')
-rw-r--r--src/attr_file.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/attr_file.c b/src/attr_file.c
index f6eaad69d..4303c7667 100644
--- a/src/attr_file.c
+++ b/src/attr_file.c
@@ -363,8 +363,18 @@ int git_attr_fnmatch__parse(
*base = git__next_line(pattern);
return GIT_ENOMEM;
} else {
- /* remove '\' that might have be used for internal whitespace */
- spec->length = git__removechar(spec->pattern, '\\');
+ /* strip '\' that might have be used for internal whitespace */
+ char *to = spec->pattern;
+ for (scan = spec->pattern; *scan; to++, scan++) {
+ if (*scan == '\\')
+ scan++; /* skip '\' but include next char */
+ if (to != scan)
+ *to = *scan;
+ }
+ if (to != scan) {
+ *to = '\0';
+ spec->length = (to - spec->pattern);
+ }
}
return GIT_SUCCESS;