summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--diff.c5
-rwxr-xr-xt/t4034-diff-words.sh2
2 files changed, 5 insertions, 2 deletions
diff --git a/diff.c b/diff.c
index 526f198059..349a61d588 100644
--- a/diff.c
+++ b/diff.c
@@ -1008,11 +1008,13 @@ static const char *userdiff_word_regex(struct diff_filespec *one)
}
static void init_diff_words_data(struct emit_callback *ecbdata,
- struct diff_options *o,
+ struct diff_options *orig_opts,
struct diff_filespec *one,
struct diff_filespec *two)
{
int i;
+ struct diff_options *o = xmalloc(sizeof(struct diff_options));
+ memcpy(o, orig_opts, sizeof(struct diff_options));
ecbdata->diff_words =
xcalloc(1, sizeof(struct diff_words_data));
@@ -1052,6 +1054,7 @@ static void free_diff_words_data(struct emit_callback *ecbdata)
{
if (ecbdata->diff_words) {
diff_words_flush(ecbdata);
+ free (ecbdata->diff_words->opt);
free (ecbdata->diff_words->minus.text.ptr);
free (ecbdata->diff_words->minus.orig);
free (ecbdata->diff_words->plus.text.ptr);
diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh
index 310ace1b5d..30d42cb3bf 100755
--- a/t/t4034-diff-words.sh
+++ b/t/t4034-diff-words.sh
@@ -365,7 +365,7 @@ test_expect_success 'setup history with two files' '
git commit -mmodified -a
'
-test_expect_failure 'wordRegex for the first file does not apply to the second' '
+test_expect_success 'wordRegex for the first file does not apply to the second' '
echo "*.tex diff=tex" >.gitattributes &&
git config diff.tex.wordRegex "[a-z]+|." &&
cat >expect <<-\EOF &&