Mercurial > vim
comparison src/userfunc.c @ 15721:e84eb23f4670 v8.1.0868
patch 8.1.0868: crash if triggering garbage collector after a function call
commit https://github.com/vim/vim/commit/889da2f2438c8168f9a25dc776360b81109bad44
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 2 14:02:30 2019 +0100
patch 8.1.0868: crash if triggering garbage collector after a function call
Problem: Crash if triggering garbage collector after a function call.
(Michael Henry)
Solution: Don't call the garbage collector right away, do it later.
(closes #3894)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 02 Feb 2019 14:15:12 +0100 |
parents | 6f1c7e9a6393 |
children | dff66c4670b1 |
comparison
equal
deleted
inserted
replaced
15720:600c2a9024a2 | 15721:e84eb23f4670 |
---|---|
677 | 677 |
678 if (++made_copy == 10000) | 678 if (++made_copy == 10000) |
679 { | 679 { |
680 // We have made a lot of copies. This can happen when | 680 // We have made a lot of copies. This can happen when |
681 // repetitively calling a function that creates a reference to | 681 // repetitively calling a function that creates a reference to |
682 // itself somehow. Call the garbage collector here to avoid using | 682 // itself somehow. Call the garbage collector soon to avoid using |
683 // too much memory. | 683 // too much memory. |
684 made_copy = 0; | 684 made_copy = 0; |
685 (void)garbage_collect(FALSE); | 685 want_garbage_collect = TRUE; |
686 } | 686 } |
687 } | 687 } |
688 } | 688 } |
689 | 689 |
690 /* | 690 /* |