diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-12-29 23:04:25 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-12-29 23:04:25 +0100 |
commit | 1a47ae32cdc19b0fd5a82e19fe5fddf45db1a506 (patch) | |
tree | 8f5dc27f3eeea927ad3ca8de42fe0df06a041dd5 /src/testing.c | |
parent | 257a396879ff67a0482841a39237f30a8e1e27c5 (diff) | |
download | vim-git-1a47ae32cdc19b0fd5a82e19fe5fddf45db1a506.tar.gz |
patch 8.2.0056: execution stack is incomplete and inefficientv8.2.0056
Problem: Execution stack is incomplete and inefficient.
Solution: Introduce a proper execution stack and use it instead of
sourcing_name/sourcing_lnum. Create a string only when used.
Diffstat (limited to 'src/testing.c')
-rw-r--r-- | src/testing.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/testing.c b/src/testing.c index 569a57c8e..3e6ba8e03 100644 --- a/src/testing.c +++ b/src/testing.c @@ -21,22 +21,24 @@ static void prepare_assert_error(garray_T *gap) { - char buf[NUMBUFLEN]; + char buf[NUMBUFLEN]; + char_u *sname = estack_sfile(); ga_init2(gap, 1, 100); - if (sourcing_name != NULL) + if (sname != NULL) { - ga_concat(gap, sourcing_name); - if (sourcing_lnum > 0) + ga_concat(gap, sname); + if (SOURCING_LNUM > 0) ga_concat(gap, (char_u *)" "); } - if (sourcing_lnum > 0) + if (SOURCING_LNUM > 0) { - sprintf(buf, "line %ld", (long)sourcing_lnum); + sprintf(buf, "line %ld", (long)SOURCING_LNUM); ga_concat(gap, (char_u *)buf); } - if (sourcing_name != NULL || sourcing_lnum > 0) + if (sname != NULL || SOURCING_LNUM > 0) ga_concat(gap, (char_u *)": "); + vim_free(sname); } /* |