diff options
Diffstat (limited to 'src/insdel.c')
-rw-r--r-- | src/insdel.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/insdel.c b/src/insdel.c index 08f04d3ddca..a6f006a521d 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -29,6 +29,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include "buffer.h" #include "window.h" #include "region-cache.h" +#include "pdumper.h" static void insert_from_string_1 (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool, bool); @@ -1927,6 +1928,14 @@ prepare_to_modify_buffer_1 (ptrdiff_t start, ptrdiff_t end, if (!NILP (BVAR (current_buffer, read_only))) Fbarf_if_buffer_read_only (temp); + /* If we're about to modify a buffer the contents of which come from + a dump file, copy the contents to private storage first so we + don't take a COW fault on the buffer text and keep it around + forever. */ + if (pdumper_object_p (BEG_ADDR)) + enlarge_buffer_text (current_buffer, 0); + eassert (!pdumper_object_p (BEG_ADDR)); + run_undoable_change(); bset_redisplay (current_buffer); |