patch 8.1.0587: GvimExt: realloc() failing is not handled properly
Problem: GvimExt: realloc() failing is not handled properly.
Solution: Check for NULL return. (Jan-Jaap Korpershoek, closes #3689)
diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp
index 64c5d13..62d925b 100644
--- a/src/GvimExt/gvimext.cpp
+++ b/src/GvimExt/gvimext.cpp
@@ -1024,6 +1024,8 @@
cmdlen = BUFSIZE;
cmdStrW = (wchar_t *) malloc(cmdlen * sizeof(wchar_t));
+ if (cmdStrW == NULL)
+ return;
getGvimInvocationW(cmdStrW);
if (useDiff)
@@ -1039,7 +1041,10 @@
if (len > cmdlen)
{
cmdlen = len + BUFSIZE;
- cmdStrW = (wchar_t *)realloc(cmdStrW, cmdlen * sizeof(wchar_t));
+ wchar_t *cmdStrW_new = (wchar_t *)realloc(cmdStrW, cmdlen * sizeof(wchar_t));
+ if (cmdStrW_new == NULL)
+ goto theend;
+ cmdStrW = cmdStrW_new;
}
wcscat(cmdStrW, L" \"");
wcscat(cmdStrW, m_szFileUserClickedOn);
@@ -1076,7 +1081,7 @@
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
-
+theend:
free(cmdStrW);
return NOERROR;