diff --git a/src/if_python.c b/src/if_python.c
index 836bf1b..385905e 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -191,6 +191,7 @@
 # define PyRun_SimpleString dll_PyRun_SimpleString
 # define PyRun_String dll_PyRun_String
 # define PyString_AsString dll_PyString_AsString
+# define PyString_AsStringAndSize dll_PyString_AsStringAndSize
 # define PyString_FromString dll_PyString_FromString
 # define PyString_FromStringAndSize dll_PyString_FromStringAndSize
 # define PyString_Size dll_PyString_Size
@@ -288,6 +289,7 @@
 static int(*dll_PyRun_SimpleString)(char *);
 static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *);
 static char*(*dll_PyString_AsString)(PyObject *);
+static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, int *);
 static PyObject*(*dll_PyString_FromString)(const char *);
 static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
 static PyInt(*dll_PyString_Size)(PyObject *);
@@ -406,6 +408,7 @@
     {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString},
     {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String},
     {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString},
+    {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize},
     {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString},
     {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize},
     {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
@@ -578,14 +581,15 @@
 static int initialised = 0;
 #define PYINITIALISED initialised
 
-/* Add conversion from PyInt? */
 #define DICTKEY_GET(err) \
     if (!PyString_Check(keyObject)) \
     { \
 	PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
 	return err; \
     } \
-    key = (char_u *) PyString_AsString(keyObject);
+    if (PyString_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \
+	return err;
+
 #define DICTKEY_UNREF
 #define DICTKEY_DECL
 
diff --git a/src/if_python3.c b/src/if_python3.c
index 57257e6..36ae8eb 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -172,6 +172,7 @@
 # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString
 # undef PyBytes_AsString
 # define PyBytes_AsString py3_PyBytes_AsString
+# define PyBytes_AsStringAndSize py3_PyBytes_AsStringAndSize
 # undef PyBytes_FromString
 # define PyBytes_FromString py3_PyBytes_FromString
 # define PyFloat_FromDouble py3_PyFloat_FromDouble
@@ -273,6 +274,7 @@
 static char* (*py3__PyUnicode_AsString)(PyObject *unicode);
 static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors);
 static char* (*py3_PyBytes_AsString)(PyObject *bytes);
+static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length);
 static PyObject* (*py3_PyBytes_FromString)(char *str);
 static PyObject* (*py3_PyFloat_FromDouble)(double num);
 static double (*py3_PyFloat_AsDouble)(PyObject *);
@@ -379,6 +381,7 @@
     {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
     {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
     {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
+    {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize},
     {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString},
     {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble},
     {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble},
@@ -544,17 +547,20 @@
 
 #define PYINITIALISED py3initialised
 
-/* Add conversion from PyInt? */
+#define DICTKEY_DECL PyObject *bytes = NULL;
+
 #define DICTKEY_GET(err) \
     if (PyBytes_Check(keyObject)) \
-	key = (char_u *) PyBytes_AsString(keyObject); \
+    { \
+	if (PyBytes_AsStringAndSize(keyObject, (char **) &key, NULL) == -1) \
+	    return err; \
+    } \
     else if (PyUnicode_Check(keyObject)) \
     { \
 	bytes = PyString_AsBytes(keyObject); \
 	if (bytes == NULL) \
 	    return err; \
-	key = (char_u *) PyBytes_AsString(bytes); \
-	if (key == NULL) \
+	if (PyBytes_AsStringAndSize(bytes, (char **) &key, NULL) == -1) \
 	    return err; \
     } \
     else \
@@ -562,12 +568,11 @@
 	PyErr_SetString(PyExc_TypeError, _("only string keys are allowed")); \
 	return err; \
     }
+
 #define DICTKEY_UNREF \
     if (bytes != NULL) \
 	Py_XDECREF(bytes);
 
-#define DICTKEY_DECL PyObject *bytes = NULL;
-
 /*
  * Include the code shared with if_python.c
  */
diff --git a/src/version.c b/src/version.c
index 0124df5..3e0ac40 100644
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    657,
+/**/
     656,
 /**/
     655,
