WINDOWS_LEAN_AND_MEAN: There is no such symbol, although a very few
MSDN sample programs use it, apparently in error. The correct name
is WIN32_LEAN_AND_MEAN. After switching to the correct name, in two
cases more was needed because the code actually relied on things that
disappear when WIN32_LEAN_AND_MEAN is defined.
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 80c2767..5ed3eaf 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -26,7 +26,7 @@
#endif
#if defined(MS_WINDOWS)
-#define WINDOWS_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 163263f..4d9c93d 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -217,7 +217,7 @@
#include <io.h>
#include <process.h>
#include "osdefs.h"
-#define WINDOWS_LEAN_AND_MEAN
+/* We don't want WIN32_LEAN_AND_MEAN here -- we need ShellExecute(). */
#include <windows.h>
#define popen _popen
#define pclose _pclose
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index a42502b..0b9bab8 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -12,7 +12,7 @@
#define fileno _fileno
/* can simulate truncate with Win32 API functions; see file_truncate */
#define HAVE_FTRUNCATE
-#define WINDOWS_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
diff --git a/PC/w9xpopen.c b/PC/w9xpopen.c
index 8c063ac..95fc277 100644
--- a/PC/w9xpopen.c
+++ b/PC/w9xpopen.c
@@ -14,9 +14,10 @@
* AKA solution to the problem described in KB: Q150956.
*/
-#define WINDOWS_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
+#include <stdlib.h> /* for malloc and its friends */
const char *usage =
"This program is used by Python's os.popen function\n"