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;