diff --git a/src/if_py_both.h b/src/if_py_both.h
index f19feda..59bb0f5 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -3304,10 +3304,10 @@
 
 	for (i = 0; i < new_len; ++i)
 	{
-	    PyObject *line = PyList_GetItem(list, i);
+	    PyObject *line;
 
-	    array[i] = StringToLine(line);
-	    if (array[i] == NULL)
+	    if (!(line = PyList_GetItem(list, i)) ||
+		!(array[i] = StringToLine(line)))
 	    {
 		while (i)
 		    vim_free(array[--i]);
@@ -3319,7 +3319,7 @@
 	VimTryStart();
 	PyErr_Clear();
 
-	// START of region without "return".  Must call restore_buffer()!
+	/* START of region without "return".  Must call restore_buffer()! */
 	switch_buffer(&savebuf, buf);
 
 	if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
@@ -3400,7 +3400,7 @@
 	if (buf == savebuf)
 	    py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
 
-	// END of region without "return".
+	/* END of region without "return". */
 	restore_buffer(savebuf);
 
 	if (VimTryEnd())
@@ -3479,10 +3479,10 @@
 
 	for (i = 0; i < size; ++i)
 	{
-	    PyObject *line = PyList_GetItem(lines, i);
-	    array[i] = StringToLine(line);
+	    PyObject *line;
 
-	    if (array[i] == NULL)
+	    if (!(line = PyList_GetItem(lines, i)) ||
+		!(array[i] = StringToLine(line)))
 	    {
 		while (i)
 		    vim_free(array[--i]);
@@ -4014,8 +4014,15 @@
 
     if (!PyArg_ParseTuple(args, "s", &pmark))
 	return NULL;
-    mark = *pmark;
 
+    if (STRLEN(pmark) != 1)
+    {
+	PyErr_SetString(PyExc_ValueError,
+		_("mark name must be a single character"));
+	return NULL;
+    }
+
+    mark = *pmark;
     VimTryStart();
     switch_buffer(&savebuf, self->buf);
     posp = getmark(mark, FALSE);
@@ -4258,7 +4265,7 @@
 
 	if (value->ob_type != &BufferType)
 	{
-	    PyErr_SetString(PyExc_TypeError, _("expected vim.buffer object"));
+	    PyErr_SetString(PyExc_TypeError, _("expected vim.Buffer object"));
 	    return -1;
 	}
 
@@ -4283,7 +4290,7 @@
 
 	if (value->ob_type != &WindowType)
 	{
-	    PyErr_SetString(PyExc_TypeError, _("expected vim.window object"));
+	    PyErr_SetString(PyExc_TypeError, _("expected vim.Window object"));
 	    return -1;
 	}
 
@@ -4315,7 +4322,7 @@
     {
 	if (value->ob_type != &TabPageType)
 	{
-	    PyErr_SetString(PyExc_TypeError, _("expected vim.tabpage object"));
+	    PyErr_SetString(PyExc_TypeError, _("expected vim.TabPage object"));
 	    return -1;
 	}
 
diff --git a/src/version.c b/src/version.c
index b05dc0e..d66214d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1064,
+/**/
     1063,
 /**/
     1062,
