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/message.c b/src/message.c
index da81fa0..387a142 100644
--- a/src/message.c
+++ b/src/message.c
@@ -2588,16 +2588,19 @@
int n = (int)(s - p);
buf = alloc(n + 3);
- memcpy(buf, p, n);
- if (!info_message)
- buf[n++] = CAR;
- buf[n++] = NL;
- buf[n++] = NUL;
- if (info_message) // informative message, not an error
- mch_msg((char *)buf);
- else
- mch_errmsg((char *)buf);
- vim_free(buf);
+ if (buf != NULL)
+ {
+ memcpy(buf, p, n);
+ if (!info_message)
+ buf[n++] = CAR;
+ buf[n++] = NL;
+ buf[n++] = NUL;
+ if (info_message) // informative message, not an error
+ mch_msg((char *)buf);
+ else
+ mch_errmsg((char *)buf);
+ vim_free(buf);
+ }
p = s + 1;
}
}