home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.3 / 7.3.1059 < prev    next >
Encoding:
Internet Message Format  |  2013-05-29  |  9.4 KB

  1. To: vim_dev@googlegroups.com
  2. Subject: Patch 7.3.1059
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.3.1059
  11. Problem:    Python: Using fixed size buffers.
  12. Solution:   Python patch 18: Use python's own formatter. (ZyX)
  13. Files:        src/if_py_both.h, src/if_python3.c, src/if_python.c
  14.  
  15.  
  16. *** ../vim-7.3.1058/src/if_py_both.h    2013-05-30 12:26:52.000000000 +0200
  17. --- src/if_py_both.h    2013-05-30 12:38:22.000000000 +0200
  18. ***************
  19. *** 2006,2029 ****
  20.       static PyObject *
  21.   TabPageRepr(TabPageObject *self)
  22.   {
  23. -     static char repr[100];
  24.       if (self->tab == INVALID_TABPAGE_VALUE)
  25. !     {
  26. !     vim_snprintf(repr, 100, _("<tabpage object (deleted) at %p>"), (self));
  27. !     return PyString_FromString(repr);
  28. !     }
  29.       else
  30.       {
  31.       int    t = get_tab_number(self->tab);
  32.   
  33.       if (t == 0)
  34. !         vim_snprintf(repr, 100, _("<tabpage object (unknown) at %p>"),
  35. !                                       (self));
  36.       else
  37. !         vim_snprintf(repr, 100, _("<tabpage %d>"), t - 1);
  38. !     return PyString_FromString(repr);
  39.       }
  40.   }
  41.   
  42. --- 2006,2022 ----
  43.       static PyObject *
  44.   TabPageRepr(TabPageObject *self)
  45.   {
  46.       if (self->tab == INVALID_TABPAGE_VALUE)
  47. !     return PyString_FromFormat("<tabpage object (deleted) at %p>", (self));
  48.       else
  49.       {
  50.       int    t = get_tab_number(self->tab);
  51.   
  52.       if (t == 0)
  53. !         return PyString_FromFormat("<tabpage object (unknown) at %p>",
  54. !                     (self));
  55.       else
  56. !         return PyString_FromFormat("<tabpage %d>", t - 1);
  57.       }
  58.   }
  59.   
  60. ***************
  61. *** 2344,2367 ****
  62.       static PyObject *
  63.   WindowRepr(WindowObject *self)
  64.   {
  65. -     static char repr[100];
  66.       if (self->win == INVALID_WINDOW_VALUE)
  67. !     {
  68. !     vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
  69. !     return PyString_FromString(repr);
  70. !     }
  71.       else
  72.       {
  73.       int    w = get_win_number(self->win, firstwin);
  74.   
  75.       if (w == 0)
  76. !         vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
  77.                                         (self));
  78.       else
  79. !         vim_snprintf(repr, 100, _("<window %d>"), w - 1);
  80. !     return PyString_FromString(repr);
  81.       }
  82.   }
  83.   
  84. --- 2337,2353 ----
  85.       static PyObject *
  86.   WindowRepr(WindowObject *self)
  87.   {
  88.       if (self->win == INVALID_WINDOW_VALUE)
  89. !     return PyString_FromFormat("<window object (deleted) at %p>", (self));
  90.       else
  91.       {
  92.       int    w = get_win_number(self->win, firstwin);
  93.   
  94.       if (w == 0)
  95. !         return PyString_FromFormat("<window object (unknown) at %p>",
  96.                                         (self));
  97.       else
  98. !         return PyString_FromFormat("<window %d>", w - 1);
  99.       }
  100.   }
  101.   
  102. ***************
  103. *** 3281,3311 ****
  104.       static PyObject *
  105.   RangeRepr(RangeObject *self)
  106.   {
  107. -     static char repr[100];
  108.       if (self->buf->buf == INVALID_BUFFER_VALUE)
  109. !     {
  110. !     vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
  111. !                                       (self));
  112. !     return PyString_FromString(repr);
  113. !     }
  114.       else
  115.       {
  116.       char *name = (char *)self->buf->buf->b_fname;
  117. -     int len;
  118.   
  119.       if (name == NULL)
  120.           name = "";
  121. -     len = (int)strlen(name);
  122. -     if (len > 45)
  123. -         name = name + (45 - len);
  124. -     vim_snprintf(repr, 100, "<range %s%s (%d:%d)>",
  125. -         len > 45 ? "..." : "", name,
  126. -         self->start, self->end);
  127.   
  128. !     return PyString_FromString(repr);
  129.       }
  130.   }
  131.   
  132. --- 3267,3284 ----
  133.       static PyObject *
  134.   RangeRepr(RangeObject *self)
  135.   {
  136.       if (self->buf->buf == INVALID_BUFFER_VALUE)
  137. !     return PyString_FromFormat("<range object (for deleted buffer) at %p>",
  138. !                     (self));
  139.       else
  140.       {
  141.       char *name = (char *)self->buf->buf->b_fname;
  142.   
  143.       if (name == NULL)
  144.           name = "";
  145.   
  146. !     return PyString_FromFormat("<range %s (%d:%d)>",
  147. !                     name, self->start, self->end);
  148.       }
  149.   }
  150.   
  151. ***************
  152. *** 3534,3561 ****
  153.       static PyObject *
  154.   BufferRepr(BufferObject *self)
  155.   {
  156. -     static char repr[100];
  157.       if (self->buf == INVALID_BUFFER_VALUE)
  158. !     {
  159. !     vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
  160. !     return PyString_FromString(repr);
  161. !     }
  162.       else
  163.       {
  164. !     char *name = (char *)self->buf->b_fname;
  165. !     PyInt len;
  166.   
  167.       if (name == NULL)
  168.           name = "";
  169. -     len = strlen(name);
  170. -     if (len > 35)
  171. -         name = name + (35 - len);
  172. -     vim_snprintf(repr, 100, "<buffer %s%s>", len > 35 ? "..." : "", name);
  173.   
  174. !     return PyString_FromString(repr);
  175.       }
  176.   }
  177.   
  178. --- 3507,3522 ----
  179.       static PyObject *
  180.   BufferRepr(BufferObject *self)
  181.   {
  182.       if (self->buf == INVALID_BUFFER_VALUE)
  183. !     return PyString_FromFormat("<buffer object (deleted) at %p>", self);
  184.       else
  185.       {
  186. !     char    *name = (char *)self->buf->b_fname;
  187.   
  188.       if (name == NULL)
  189.           name = "";
  190.   
  191. !     return PyString_FromFormat("<buffer %s>", name);
  192.       }
  193.   }
  194.   
  195. *** ../vim-7.3.1058/src/if_python3.c    2013-05-29 22:36:06.000000000 +0200
  196. --- src/if_python3.c    2013-05-30 12:39:25.000000000 +0200
  197. ***************
  198. *** 90,95 ****
  199. --- 90,96 ----
  200.   #define PyString_AsString(obj) PyBytes_AsString(obj)
  201.   #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
  202.   #define PyString_FromString(repr) PyUnicode_FromString(repr)
  203. + #define PyString_FromFormat PyUnicode_FromFormat
  204.   #define PyString_AsStringAndSize(obj, buffer, len) PyBytes_AsStringAndSize(obj, buffer, len)
  205.   #define PyInt_Check(obj) PyLong_Check(obj)
  206.   #define PyInt_FromLong(i) PyLong_FromLong(i)
  207. ***************
  208. *** 230,235 ****
  209. --- 231,246 ----
  210.   # define PyType_GenericNew py3_PyType_GenericNew
  211.   # undef PyUnicode_FromString
  212.   # define PyUnicode_FromString py3_PyUnicode_FromString
  213. + # ifndef PyUnicode_FromFormat
  214. + #  define PyUnicode_FromFormat py3_PyUnicode_FromFormat
  215. + # else
  216. + #  define Py_UNICODE_USE_UCS_FUNCTIONS
  217. + #  ifdef Py_UNICODE_WIDE
  218. + #   define PyUnicodeUCS4_FromFormat py3_PyUnicodeUCS4_FromFormat
  219. + #  else
  220. + #   define PyUnicodeUCS2_FromFormat py3_PyUnicodeUCS2_FromFormat
  221. + #  endif
  222. + # endif
  223.   # undef PyUnicode_Decode
  224.   # define PyUnicode_Decode py3_PyUnicode_Decode
  225.   # define PyType_IsSubtype py3_PyType_IsSubtype
  226. ***************
  227. *** 293,298 ****
  228. --- 304,318 ----
  229.   static int (*py3_PyType_Ready)(PyTypeObject *type);
  230.   static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
  231.   static PyObject* (*py3_PyUnicode_FromString)(const char *u);
  232. + # ifndef Py_UNICODE_USE_UCS_FUNCTIONS
  233. + static PyObject* (*py3_PyUnicode_FromFormat)(const char *u, ...);
  234. + # else
  235. + #  ifdef Py_UNICODE_WIDE
  236. + static PyObject* (*py3_PyUnicodeUCS4_FromFormat)(const char *u, ...);
  237. + #  else
  238. + static PyObject* (*py3_PyUnicodeUCS2_FromFormat)(const char *u, ...);
  239. + #  endif
  240. + # endif
  241.   static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size,
  242.       const char *encoding, const char *errors);
  243.   static long (*py3_PyLong_AsLong)(PyObject *);
  244. ***************
  245. *** 458,463 ****
  246. --- 478,492 ----
  247.   # else
  248.       {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
  249.   # endif
  250. + # ifndef Py_UNICODE_USE_UCS_FUNCTIONS
  251. +     {"PyUnicode_FromFormat", (PYTHON_PROC*)&py3_PyUnicode_FromFormat},
  252. + # else
  253. + #  ifdef Py_UNICODE_WIDE
  254. +     {"PyUnicodeUCS4_FromFormat", (PYTHON_PROC*)&py3_PyUnicodeUCS4_FromFormat},
  255. + #  else
  256. +     {"PyUnicodeUCS2_FromFormat", (PYTHON_PROC*)&py3_PyUnicodeUCS2_FromFormat},
  257. + #  endif
  258. + # endif
  259.       {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
  260.       {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize},
  261.       {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString},
  262. *** ../vim-7.3.1058/src/if_python.c    2013-05-29 22:36:06.000000000 +0200
  263. --- src/if_python.c    2013-05-30 12:38:22.000000000 +0200
  264. ***************
  265. *** 212,217 ****
  266. --- 212,218 ----
  267.   # define PyString_AsString dll_PyString_AsString
  268.   # define PyString_AsStringAndSize dll_PyString_AsStringAndSize
  269.   # define PyString_FromString dll_PyString_FromString
  270. + # define PyString_FromFormat dll_PyString_FromFormat
  271.   # define PyString_FromStringAndSize dll_PyString_FromStringAndSize
  272.   # define PyString_Size dll_PyString_Size
  273.   # define PyString_Type (*dll_PyString_Type)
  274. ***************
  275. *** 340,345 ****
  276. --- 341,347 ----
  277.   static char*(*dll_PyString_AsString)(PyObject *);
  278.   static int(*dll_PyString_AsStringAndSize)(PyObject *, char **, int *);
  279.   static PyObject*(*dll_PyString_FromString)(const char *);
  280. + static PyObject*(*dll_PyString_FromFormat)(const char *, ...);
  281.   static PyObject*(*dll_PyString_FromStringAndSize)(const char *, PyInt);
  282.   static PyInt(*dll_PyString_Size)(PyObject *);
  283.   static PyTypeObject* dll_PyString_Type;
  284. ***************
  285. *** 499,504 ****
  286. --- 501,507 ----
  287.       {"PyString_AsString", (PYTHON_PROC*)&dll_PyString_AsString},
  288.       {"PyString_AsStringAndSize", (PYTHON_PROC*)&dll_PyString_AsStringAndSize},
  289.       {"PyString_FromString", (PYTHON_PROC*)&dll_PyString_FromString},
  290. +     {"PyString_FromFormat", (PYTHON_PROC*)&dll_PyString_FromFormat},
  291.       {"PyString_FromStringAndSize", (PYTHON_PROC*)&dll_PyString_FromStringAndSize},
  292.       {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
  293.       {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type},
  294. *** ../vim-7.3.1058/src/version.c    2013-05-30 12:35:48.000000000 +0200
  295. --- src/version.c    2013-05-30 12:39:51.000000000 +0200
  296. ***************
  297. *** 730,731 ****
  298. --- 730,733 ----
  299.   {   /* Add new patch number below this line */
  300. + /**/
  301. +     1059,
  302.   /**/
  303.  
  304. -- 
  305. How To Keep A Healthy Level Of Insanity:
  306. 2. Page yourself over the intercom. Don't disguise your voice.
  307.  
  308.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  309. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  310. \\\  an exciting new programming language -- http://www.Zimbu.org        ///
  311.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  312.