In tcsetattr(), first initialize the mode structure by calling
tcgetattr().  This seems to be the only correct way to cope with
platform-specific structure members...
diff --git a/Modules/termios.c b/Modules/termios.c
index 55295a8..d7afeae 100644
--- a/Modules/termios.c
+++ b/Modules/termios.c
@@ -139,6 +139,9 @@
 		return NULL;
 	}
 
+	/* Get the old mode, in case there are any hidden fields... */
+	if (tcgetattr(fd, &mode) == -1)
+		return PyErr_SetFromErrno(TermiosError);
 	mode.c_iflag = (tcflag_t) PyInt_AsLong(PyList_GetItem(term, 0));
 	mode.c_oflag = (tcflag_t) PyInt_AsLong(PyList_GetItem(term, 1));
 	mode.c_cflag = (tcflag_t) PyInt_AsLong(PyList_GetItem(term, 2));