clock2020-02-24

Vimをvalgrind付きでビルドして、メモリリークを検出する

$ vim src/testdir/Makefile
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index bcf2f8c37..cb9af4887 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -18,7 +18,7 @@ REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice = "e"' > /dev/null
 #   The output goes into a file "valgrind.testN"
 #   Vim should be compiled with EXITFREE to avoid false warnings.
 #   This will make testing about 10 times as slow.
-# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=25 --log-file=valgrind.$*
+VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=25 --log-file=valgrind.$*
 
 default: nongui
 
$ make clean  # 必要に応じて
$ make -j4 -e CFLAGS='-g3 -O0 -Wall'
$ cd src/testdir
$ make test_template_string  # 実行したいテストを実行する。多分だけど ../vim を実際に操作してもいい
$ cat valgrind.test_template_string

結果

==46735== Memcheck, a memory error detector
==46735== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==46735== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==46735== Command: ../vim -f -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim test_template_string.vim --cmd au\ SwapExists\ *\ let\ v:swapchoice\ =\ "e"
==46735== Parent PID: 46734
==46735== 
==46735== 
==46735== HEAP SUMMARY:
==46735==     in use at exit: 621,592 bytes in 2,184 blocks
==46735==   total heap usage: 7,098 allocs, 4,914 frees, 2,528,440 bytes allocated
==46735== 
==46735== 3 bytes in 1 blocks are possibly lost in loss record 114 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23A680: concat_str (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18960F: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18C1DC: get_template_string_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x189E6B: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 6 bytes in 1 blocks are possibly lost in loss record 145 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C971: vim_strsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x269DC3: get_option_value (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18B318: get_option_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x189E29: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 14 bytes in 1 blocks are possibly lost in loss record 216 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C971: vim_strsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18E7E2: get_env_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x189E8A: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE79A: source_startup_scripts (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAAD5: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 15 bytes in 3 blocks are possibly lost in loss record 219 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C971: vim_strsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34BDA1: one_function_arg (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34C116: get_function_args (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3512F6: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 28 bytes in 1 blocks are possibly lost in loss record 282 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A76AA: set_var_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18732E: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188193: next_for_item (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1CAF43: ex_while (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 31 bytes in 1 blocks are possibly lost in loss record 287 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A76AA: set_var_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18732E: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A3321: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35402D: ex_call (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 32 bytes in 1 blocks are possibly lost in loss record 311 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A76AA: set_var_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18732E: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A3321: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE79A: source_startup_scripts (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAAD5: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 33 bytes in 1 blocks are possibly lost in loss record 313 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C971: vim_strsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1904C7: copy_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A6747: get_var_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18A042: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35402D: ex_call (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 35 bytes in 1 blocks are possibly lost in loss record 315 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A76AA: set_var_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18732E: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A3321: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE79A: source_startup_scripts (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAAD5: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 37 bytes in 2 blocks are possibly lost in loss record 319 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18BE47: get_lit_string_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x189D58: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 39 bytes in 1 blocks are possibly lost in loss record 320 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23A680: concat_str (in /path/to/vim/template-string/src/vim)
==46735==    by 0x187C38: tv_op (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1872D3: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A3321: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35402D: ex_call (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 48 bytes in 1 blocks are possibly lost in loss record 379 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C73B: alloc_clear (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34C7ED: get_lambda_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x189DE6: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35402D: ex_call (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x190F27: ex_execute (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 72 bytes in 3 blocks are possibly lost in loss record 435 of 639
==46735==    at 0x48386AF: malloc (vg_replace_malloc.c:308)
==46735==    by 0x483ADE7: realloc (vg_replace_malloc.c:836)
==46735==    by 0x23D9FD: ga_grow (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34BD69: one_function_arg (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34C116: get_function_args (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3512F6: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 75 bytes in 3 blocks are possibly lost in loss record 437 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A76AA: set_var_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18732E: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A3321: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35402D: ex_call (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x190F27: ex_execute (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34E9F6: call_user_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34F063: call_user_func_check (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FB4B: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 99 bytes in 3 blocks are possibly lost in loss record 464 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C9B8: vim_strnsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1C8B33: eval_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x19685F: f_expand (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1940AA: call_internal_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34FBBF: call_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x34CF61: get_func_tv (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188819: eval_func (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18A013: eval7 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18995E: eval6 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1893E1: eval5 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188F2E: eval4 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188D80: eval3 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x188BD9: eval2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1889F1: eval1 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18890D: eval0 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A32B7: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 558 bytes in 17 blocks are possibly lost in loss record 545 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A76AA: set_var_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x18732E: set_var_lval (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A48D8: ex_let_one (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A33B9: ex_let_vars (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A3321: ex_let_const (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1A2EB4: ex_let (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 560 bytes in 2 blocks are possibly lost in loss record 546 of 639
==46735==    at 0x483AD7B: realloc (vg_replace_malloc.c:836)
==46735==    by 0x23D9FD: ga_grow (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35267D: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 749 bytes in 2 blocks are possibly lost in loss record 558 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C73B: alloc_clear (in /path/to/vim/template-string/src/vim)
==46735==    by 0x352C65: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 1,352 bytes in 4 blocks are possibly lost in loss record 578 of 639
==46735==    at 0x483AD7B: realloc (vg_replace_malloc.c:836)
==46735==    by 0x23D9FD: ga_grow (in /path/to/vim/template-string/src/vim)
==46735==    by 0x35267D: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 1,425 bytes in 4 blocks are possibly lost in loss record 584 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C73B: alloc_clear (in /path/to/vim/template-string/src/vim)
==46735==    by 0x352C65: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 1,676 bytes in 68 blocks are possibly lost in loss record 592 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C971: vim_strsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x352694: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== 3,363 bytes in 122 blocks are possibly lost in loss record 604 of 639
==46735==    at 0x483877F: malloc (vg_replace_malloc.c:309)
==46735==    by 0x23C82D: lalloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C6D8: alloc (in /path/to/vim/template-string/src/vim)
==46735==    by 0x23C971: vim_strsave (in /path/to/vim/template-string/src/vim)
==46735==    by 0x352694: ex_function (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1CDE: do_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D10C5: cmd_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x2D1111: ex_source (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BE521: do_one_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BB840: do_cmdline (in /path/to/vim/template-string/src/vim)
==46735==    by 0x1BADCE: do_cmdline_cmd (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AE5D8: exe_commands (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AB164: vim_main2 (in /path/to/vim/template-string/src/vim)
==46735==    by 0x3AAADA: main (in /path/to/vim/template-string/src/vim)
==46735== 
==46735== LEAK SUMMARY:
==46735==    definitely lost: 0 bytes in 0 blocks
==46735==    indirectly lost: 0 bytes in 0 blocks
==46735==      possibly lost: 10,250 bytes in 243 blocks
==46735==    still reachable: 611,342 bytes in 1,941 blocks
==46735==         suppressed: 0 bytes in 0 blocks
==46735== Reachable blocks (those to which a pointer was found) are not shown.
==46735== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==46735== 
==46735== For lists of detected and suppressed errors, rerun with: -s
==46735== ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 0 from 0)

ここでdefinitely lostが0でないようなら、 X bytes in X blocks are definitely lost in loss record X of X

clock2019-07-14

VimをSanitizer付きでビルドして、メモリリークを検出する

 vim-jpでichizokさんに指南をいただきました。 ありがとうございます 😎

$ cd /path/to/vim
$ SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
$ ASAN_OPTIONS="print_stacktrace=1 log_path=asan"
$ make

Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && make first
make[1]: Entering directory '/path/to/vim/template-string/src'
ccache gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g3 -O0 -Wall  -g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer      -o obj
ects/eval.o eval.c
make[2]: Entering directory '/path/to/vim/template-string/src/po'
make[2]: Nothing to be done for 'first'.

.
.
.

$ cd src/testdir
$ make test_template_string

rm -f test_template_string.res test.log messages
make -f Makefile test_template_string.res
make[1]: Entering directory '/path/to/vim/src/testdir'
make[1]: *** [Makefile:162: test_template_string.res] Error 1
make[1]: Leaving directory '/path/to/vim/src/testdir'
make: *** [Makefile:76: test_template_string] Error 2

$ ls asan.*
asan.12870

$ cat asan.12870

結果

clock2019-06-26

Vimのソース内で自作した関数の結果を確認する

 Vimにコントリビュートしたいけど、 「char_u*って? typval_Tってなんじゃい? eval1? :h expr1

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。