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)
diff --git a/src/buffer.c b/src/buffer.c
index 78801a8..f9686a7 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -181,14 +181,19 @@
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