fix marshal uninitialized variable warnings (#4114)
GCC says:
../cpython/Python/marshal.c: In function ‘PyMarshal_WriteLongToFile’:
../cpython/Python/marshal.c:70:35: warning: ‘wf.ptr’ may be used uninitialized in this function [-Wmaybe-uninitialized]
else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \
^~
../cpython/Python/marshal.c:70:47: warning: ‘wf.end’ may be used uninitialized in this function [-Wmaybe-uninitialized]
else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \
^~
../cpython/Python/marshal.c:77:10: warning: ‘wf.str’ may be used uninitialized in this function [-Wmaybe-uninitialized]
if (p->str == NULL)
~^~~~~
This isn't a real problem because if the file pointer is not NULL, the
string-related fields are never touched. But, it doesn't hurt to set the unused
fields to NULL.
diff --git a/Python/marshal.c b/Python/marshal.c
index e1a84d0..f55599b 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -465,6 +465,9 @@
{
WFILE wf;
wf.fp = fp;
+ wf.str = NULL;
+ wf.ptr = NULL;
+ wf.end = NULL;
wf.error = WFERR_OK;
wf.depth = 0;
wf.strings = NULL;
@@ -477,6 +480,9 @@
{
WFILE wf;
wf.fp = fp;
+ wf.str = NULL;
+ wf.ptr = NULL;
+ wf.end = NULL;
wf.error = WFERR_OK;
wf.depth = 0;
wf.strings = (version > 0) ? PyDict_New() : NULL;