diff src/buffer.c @ 17797:ec1717981acf v8.1.1895

patch 8.1.1895: using NULL pointer when out of memory commit https://github.com/vim/vim/commit/6f10c70b59fa4e56aa479345fb0caeaac7429bfb Author: Bram Moolenaar <Bram@vim.org> Date: Tue Aug 20 22:58:37 2019 +0200 patch 8.1.1895: using NULL pointer when out of memory Problem: Using NULL pointer when out of memory. Solution: Bail out or skip the code using the pointer. (Zu-Ming Jiang, closes #4805, closes #4843, closes #4939, closes #4844)
author Bram Moolenaar <Bram@vim.org>
date Tue, 20 Aug 2019 23:00:04 +0200
parents 0f7ae8010787
children 59f8948b7590
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -181,14 +181,19 @@ open_buffer(
 	    if (curbuf->b_ml.ml_mfp != NULL)
 		break;
 	/*
-	 * if there is no memfile at all, exit
+	 * If there is no memfile at all, exit.
 	 * This is OK, since there are no changes to lose.
 	 */
 	if (curbuf == NULL)
 	{
 	    emsg(_("E82: Cannot allocate any buffer, exiting..."));
+
+	    // Don't try to do any saving, with "curbuf" NULL almost nothing
+	    // will work.
+	    v_dying = 2;
 	    getout(2);
 	}
+
 	emsg(_("E83: Cannot allocate buffer, using other one..."));
 	enter_buffer(curbuf);
 #ifdef FEAT_SYN_HL