Patch 7.3.1161
Problem:    Python: PyList_SetItem() is inefficient.
Solution:   Use PyList_SET_ITEM() (ZyX)
Files:      src/if_py_both.h


*** ../vim-7.3.1160/src/if_py_both.h    2013-06-05 20:34:07.000000000 +0200
--- src/if_py_both.h    2013-06-10 20:37:50.000000000 +0200
***************
*** 375,382 ****
      static int
  PythonIO_Init_io(void)
  {
!     PySys_SetObject("stdout", (PyObject *)(void *)&Output);
!     PySys_SetObject("stderr", (PyObject *)(void *)&Error);
  
      if (PyErr_Occurred())
      {
--- 375,384 ----
      static int
  PythonIO_Init_io(void)
  {
!     if (PySys_SetObject("stdout", (PyObject *)(void *)&Output))
!       return -1;
!     if (PySys_SetObject("stderr", (PyObject *)(void *)&Error))
!       return -1;
  
      if (PyErr_Occurred())
      {
***************
*** 1319,1330 ****
                Py_DECREF(r);
                return NULL;
            }
!           if (PyList_SetItem(r, i, newObj))
!           {
!               Py_DECREF(r);
!               Py_DECREF(newObj);
!               return NULL;
!           }
            --todo;
            ++i;
        }
--- 1321,1327 ----
                Py_DECREF(r);
                return NULL;
            }
!           PyList_SET_ITEM(r, i, newObj);
            --todo;
            ++i;
        }
***************
*** 1808,1819 ****
            return NULL;
        }
  
!       if ((PyList_SetItem(list, ((reversed)?(n-i-1):(i)), item)))
!       {
!           Py_DECREF(item);
!           Py_DECREF(list);
!           return NULL;
!       }
      }
  
      return list;
--- 1805,1811 ----
            return NULL;
        }
  
!       PyList_SET_ITEM(list, ((reversed)?(n-i-1):(i)), item);
      }
  
      return list;
***************
*** 3164,3176 ****
            return NULL;
        }
  
!       /* Set the list item */
!       if (PyList_SetItem(list, i, str))
!       {
!           Py_DECREF(str);
!           Py_DECREF(list);
!           return NULL;
!       }
      }
  
      /* The ownership of the Python list is passed to the caller (ie,
--- 3156,3162 ----
            return NULL;
        }
  
!       PyList_SET_ITEM(list, i, str);
      }
  
      /* The ownership of the Python list is passed to the caller (ie,
***************
*** 5366,5373 ****
      static int
  populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
  {
!     int i;
!     PyObject  *os;
  
      for (i = 0; i < (int)(sizeof(numeric_constants)
                                           / sizeof(struct numeric_constant));
--- 5352,5359 ----
      static int
  populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
  {
!     int               i;
!     PyObject  *other_module;
  
      for (i = 0; i < (int)(sizeof(numeric_constants)
                                           / sizeof(struct numeric_constant));
***************
*** 5395,5418 ****
      ADD_CHECKED_OBJECT(m, "options",
            OptionsNew(SREQ_GLOBAL, NULL, dummy_check, NULL));
  
!     if (!(os = PyImport_ImportModule("os")))
        return -1;
!     ADD_OBJECT(m, "os", os);
  
!     if (!(py_getcwd = PyObject_GetAttrString(os, "getcwd")))
        return -1;
      ADD_OBJECT(m, "_getcwd", py_getcwd)
  
!     if (!(py_chdir = PyObject_GetAttrString(os, "chdir")))
        return -1;
      ADD_OBJECT(m, "_chdir", py_chdir);
!     if (PyObject_SetAttrString(os, "chdir", get_attr(m, "chdir")))
        return -1;
  
!     if ((py_fchdir = PyObject_GetAttrString(os, "fchdir")))
      {
        ADD_OBJECT(m, "_fchdir", py_fchdir);
!       if (PyObject_SetAttrString(os, "fchdir", get_attr(m, "fchdir")))
            return -1;
      }
      else
--- 5381,5404 ----
      ADD_CHECKED_OBJECT(m, "options",
            OptionsNew(SREQ_GLOBAL, NULL, dummy_check, NULL));
  
!     if (!(other_module = PyImport_ImportModule("os")))
        return -1;
!     ADD_OBJECT(m, "os", other_module);
  
!     if (!(py_getcwd = PyObject_GetAttrString(other_module, "getcwd")))
        return -1;
      ADD_OBJECT(m, "_getcwd", py_getcwd)
  
!     if (!(py_chdir = PyObject_GetAttrString(other_module, "chdir")))
        return -1;
      ADD_OBJECT(m, "_chdir", py_chdir);
!     if (PyObject_SetAttrString(other_module, "chdir", get_attr(m, "chdir")))
        return -1;
  
!     if ((py_fchdir = PyObject_GetAttrString(other_module, "fchdir")))
      {
        ADD_OBJECT(m, "_fchdir", py_fchdir);
!       if (PyObject_SetAttrString(other_module,"fchdir",get_attr(m,"fchdir")))
            return -1;
      }
      else
*** ../vim-7.3.1160/src/version.c       2013-06-10 20:25:05.000000000 +0200
--- src/version.c       2013-06-10 20:37:02.000000000 +0200
***************
*** 730,731 ****
--- 730,733 ----
  {   /* Add new patch number below this line */
+ /**/
+     1161,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
136. You decide to stay in a low-paying job teaching just for the
     free Internet access.

 /// Bram Moolenaar -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Raspunde prin e-mail lui