diff --git a/7.3.1059 b/7.3.1059
new file mode 100644
index 0000000..61b158e
--- /dev/null
+++ b/7.3.1059
@@ -0,0 +1,321 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.1059
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.1059
+Problem:    Python: Using fixed size buffers.
+Solution:   Python patch 18: Use python's own formatter. (ZyX)
+Files:	    src/if_py_both.h, src/if_python3.c, src/if_python.c
+
+
+*** ../vim-7.3.1058/src/if_py_both.h	2013-05-30 12:26:52.000000000 +0200
+--- src/if_py_both.h	2013-05-30 12:38:22.000000000 +0200
+***************
+*** 2006,2029 ****
+      static PyObject *
+  TabPageRepr(TabPageObject *self)
+  {
+-     static char repr[100];
+- 
+      if (self->tab == INVALID_TABPAGE_VALUE)
+!     {
+! 	vim_snprintf(repr, 100, _("<tabpage object (deleted) at %p>"), (self));
+! 	return PyString_FromString(repr);
+!     }
+      else
+      {
+  	int	t = get_tab_number(self->tab);
+  
+  	if (t == 0)
+! 	    vim_snprintf(repr, 100, _("<tabpage object (unknown) at %p>"),
+! 								      (self));
+  	else
+! 	    vim_snprintf(repr, 100, _("<tabpage %d>"), t - 1);
+! 
+! 	return PyString_FromString(repr);
+      }
+  }
+  
+--- 2006,2022 ----
+      static PyObject *
+  TabPageRepr(TabPageObject *self)
+  {
+      if (self->tab == INVALID_TABPAGE_VALUE)
+! 	return PyString_FromFormat("<tabpage object (deleted) at %p>", (self));
+      else
+      {
+  	int	t = get_tab_number(self->tab);
+  
+  	if (t == 0)
+! 	    return PyString_FromFormat("<tabpage object (unknown) at %p>",
+! 					(self));
+  	else
+! 	    return PyString_FromFormat("<tabpage %d>", t - 1);
+      }
+  }
+  
+***************
+*** 2344,2367 ****
+      static PyObject *
+  WindowRepr(WindowObject *self)
+  {
+-     static char repr[100];
+- 
+      if (self->win == INVALID_WINDOW_VALUE)
+!     {
+! 	vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
+! 	return PyString_FromString(repr);
+!     }
+      else
+      {
+  	int	w = get_win_number(self->win, firstwin);
+  
+  	if (w == 0)
+! 	    vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
+  								      (self));
+  	else
+! 	    vim_snprintf(repr, 100, _("<window %d>"), w - 1);
+! 
+! 	return PyString_FromString(repr);
+      }
+  }
+  
+--- 2337,2353 ----
+      static PyObject *
+  WindowRepr(WindowObject *self)
+  {
+      if (self->win == INVALID_WINDOW_VALUE)
+! 	return PyString_FromFormat("<window object (deleted) at %p>", (self));
+      else
+      {
+  	int	w = get_win_number(self->win, firstwin);
+  
+  	if (w == 0)
+! 	    return PyString_FromFormat("<window object (unknown) at %p>",
+  								      (self));
+  	else
+! 	    return PyString_FromFormat("<window %d>", w - 1);
+      }
+  }
+  
+***************
+*** 3281,3311 ****
+      static PyObject *
+  RangeRepr(RangeObject *self)
+  {
+-     static char repr[100];
+- 
+      if (self->buf->buf == INVALID_BUFFER_VALUE)
+!     {
+! 	vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
+! 								      (self));
+! 	return PyString_FromString(repr);
+!     }
+      else
+      {
+  	char *name = (char *)self->buf->buf->b_fname;
+- 	int len;
+  
+  	if (name == NULL)
+  	    name = "";
+- 	len = (int)strlen(name);
+- 
+- 	if (len > 45)
+- 	    name = name + (45 - len);
+- 
+- 	vim_snprintf(repr, 100, "<range %s%s (%d:%d)>",
+- 		len > 45 ? "..." : "", name,
+- 		self->start, self->end);
+  
+! 	return PyString_FromString(repr);
+      }
+  }
+  
+--- 3267,3284 ----
+      static PyObject *
+  RangeRepr(RangeObject *self)
+  {
+      if (self->buf->buf == INVALID_BUFFER_VALUE)
+! 	return PyString_FromFormat("<range object (for deleted buffer) at %p>",
+! 				    (self));
+      else
+      {
+  	char *name = (char *)self->buf->buf->b_fname;
+  
+  	if (name == NULL)
+  	    name = "";
+  
+! 	return PyString_FromFormat("<range %s (%d:%d)>",
+! 				    name, self->start, self->end);
+      }
+  }
+  
+***************
+*** 3534,3561 ****
+      static PyObject *
+  BufferRepr(BufferObject *self)
+  {
+-     static char repr[100];
+- 
+      if (self->buf == INVALID_BUFFER_VALUE)
+!     {
+! 	vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
+! 	return PyString_FromString(repr);
+!     }
+      else
+      {
+! 	char *name = (char *)self->buf->b_fname;
+! 	PyInt len;
+  
+  	if (name == NULL)
+  	    name = "";
+- 	len = strlen(name);
+- 
+- 	if (len > 35)
+- 	    name = name + (35 - len);
+- 
+- 	vim_snprintf(repr, 100, "<buffer %s%s>", len > 35 ? "..." : "", name);
+  
+! 	return PyString_FromString(repr);
+      }
+  }
+  
+--- 3507,3522 ----
+      static PyObject *
+  BufferRepr(BufferObject *self)
+  {
+      if (self->buf == INVALID_BUFFER_VALUE)
+! 	return PyString_FromFormat("<buffer object (deleted) at %p>", self);
+      else
+      {
+! 	char	*name = (char *)self->buf->b_fname;
+  
+  	if (name == NULL)
+  	    name = "";
+  
+! 	return PyString_FromFormat("<buffer %s>", name);
+      }
+  }
+  
+*** ../vim-7.3.1058/src/if_python3.c	2013-05-29 22:36:06.000000000 +0200
+--- src/if_python3.c	2013-05-30 12:39:25.000000000 +0200
+***************
+*** 90,95 ****
+--- 90,96 ----
+  #define PyString_AsString(obj) PyBytes_AsString(obj)
+  #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
++ #define PyString_FromFormat PyUnicode_FromFormat
+  #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len)
+  #define PyInt_Check(obj) PyLong_Check(obj)
+  #define PyInt_FromLong(i) PyLong_FromLong(i)
+***************
+*** 230,235 ****
+--- 231,246 ----
+  # define PyType_GenericNew py3_PyType_GenericNew
+  # undef PyUnicode_FromString
+  # define PyUnicode_FromString py3_PyUnicode_FromString
++ # ifndef PyUnicode_FromFormat
++ #  define PyUnicode_FromFormat py3_PyUnicode_FromFormat
++ # else
++ #  define Py_UNICODE_USE_UCS_FUNCTIONS
++ #  ifdef Py_UNICODE_WIDE
++ #   define PyUnicodeUCS4_FromFormat py3_PyUnicodeUCS4_FromFormat
++ #  else
++ #   define PyUnicodeUCS2_FromFormat py3_PyUnicodeUCS2_FromFormat
++ #  endif
++ # endif
+  # undef PyUnicode_Decode
+  # define PyUnicode_Decode py3_PyUnicode_Decode
+  # define PyType_IsSubtype py3_PyType_IsSubtype
+***************
+*** 293,298 ****
+--- 304,318 ----
+  static int (*py3_PyType_Ready)(PyTypeObject *type);
+  static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+  static PyObject* (*py3_PyUnicode_FromString)(const char *u);
++ # ifndef Py_UNICODE_USE_UCS_FUNCTIONS
++ static PyObject* (*py3_PyUnicode_FromFormat)(const char *u, ...);
++ # else
++ #  ifdef Py_UNICODE_WIDE
++ static PyObject* (*py3_PyUnicodeUCS4_FromFormat)(const char *u, ...);
++ #  else
++ static PyObject* (*py3_PyUnicodeUCS2_FromFormat)(const char *u, ...);
++ #  endif
++ # endif
+  static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size,
+  	const char *encoding, const char *errors);
+  static long (*py3_PyLong_AsLong)(PyObject *);
+***************
+*** 458,463 ****
+--- 478,492 ----
+  # else
+      {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
+  # endif
++ # ifndef Py_UNICODE_USE_UCS_FUNCTIONS
++     {"PyUnicode_FromFormat", (PYTHON_PROC*)&py3_PyUnicode_FromFormat},
++ # else
++ #  ifdef Py_UNICODE_WIDE
++     {"PyUnicodeUCS4_FromFormat", (PYTHON_PROC*)&py3_PyUnicodeUCS4_FromFormat},
++ #  else
++     {"PyUnicodeUCS2_FromFormat", (PYTHON_PROC*)&py3_PyUnicodeUCS2_FromFormat},
++ #  endif
++ # endif
+      {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
+      {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize},
+      {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString},
+*** ../vim-7.3.1058/src/if_python.c	2013-05-29 22:36:06.000000000 +0200
+--- src/if_python.c	2013-05-30 12:38:22.000000000 +0200
+***************
+*** 212,217 ****
+--- 212,218 ----
+  # define PyString_AsString dll_PyString_AsString
+  # define PyString_AsStringAndSize dll_PyString_AsStringAndSize
+  # define PyString_FromString dll_PyString_FromString
++ # define PyString_FromFormat dll_PyString_FromFormat
+  # define PyString_FromStringAndSize dll_PyString_FromStringAndSize
+  # define PyString_Size dll_PyString_Size
+  # define PyString_Type (*dll_PyString_Type)
+***************
+*** 340,345 ****
+--- 341,347 ----
+  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_FromFormat)(const char *, ...);
+  static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
+  static PyInt(*dll_PyString_Size)(PyObject *);
+  static PyTypeObject* dll_PyString_Type;
+***************
+*** 499,504 ****
+--- 501,507 ----
+      {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString},
+      {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize},
+      {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString},
++     {"PyString_FromFormat", (PYTHON_PROC*)&dll_PyString_FromFormat},
+      {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize},
+      {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
+      {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type},
+*** ../vim-7.3.1058/src/version.c	2013-05-30 12:35:48.000000000 +0200
+--- src/version.c	2013-05-30 12:39:51.000000000 +0200
+***************
+*** 730,731 ****
+--- 730,733 ----
+  {   /* Add new patch number below this line */
++ /**/
++     1059,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+2. Page yourself over the intercom. Don't disguise your voice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///