# HG changeset patch
# User ZyX <[email protected]>
# Date 1370677291 -14400
# Sat Jun 08 11:41:31 2013 +0400
# Branch python-path
# Node ID 5af09dbe636d979f376b6bebc3c043d7cc89aed4
# Parent 99c9dd23883f4503603cd45db133d9e3306eb8f3
Use macro PyList_SET_ITEM in place of PyList_SetItem:
1. It is faster.
2. It is what it was designed for: populating a newly allocated empty list.
diff -r 99c9dd23883f -r 5af09dbe636d src/if_py_both.h
--- a/src/if_py_both.h Sat Jun 08 23:30:04 2013 +0200
+++ b/src/if_py_both.h Sat Jun 08 11:41:31 2013 +0400
@@ -375,8 +375,10 @@
static int
PythonIO_Init_io(void)
{
- PySys_SetObject("stdout", (PyObject *)(void *)&Output);
- PySys_SetObject("stderr", (PyObject *)(void *)&Error);
+ if (PySys_SetObject("stdout", (PyObject *)(void *)&Output))
+ return -1;
+ if (PySys_SetObject("stderr", (PyObject *)(void *)&Error))
+ return -1;
if (PyErr_Occurred())
{
@@ -1319,12 +1321,7 @@
Py_DECREF(r);
return NULL;
}
- if (PyList_SetItem(r, i, newObj))
- {
- Py_DECREF(r);
- Py_DECREF(newObj);
- return NULL;
- }
+ PyList_SET_ITEM(r, i, newObj);
--todo;
++i;
}
@@ -1808,12 +1805,7 @@
return NULL;
}
- if ((PyList_SetItem(list, ((reversed)?(n-i-1):(i)), item)))
- {
- Py_DECREF(item);
- Py_DECREF(list);
- return NULL;
- }
+ PyList_SET_ITEM(list, ((reversed)?(n-i-1):(i)), item);
}
return list;
@@ -3164,13 +3156,7 @@
return NULL;
}
- /* Set the list item */
- if (PyList_SetItem(list, i, str))
- {
- Py_DECREF(str);
- Py_DECREF(list);
- return NULL;
- }
+ PyList_SET_ITEM(list, i, str);
}
/* The ownership of the Python list is passed to the caller (ie,
@@ -5366,8 +5352,12 @@
static int
populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
{
- int i;
- PyObject *os;
+ int i;
+ PyObject *other_module;
+ PyObject *path_hooks;
+ PyObject *path;
+ PyObject *pathObject;
+ PyObject *path_hook;
for (i = 0; i < (int)(sizeof(numeric_constants)
/ sizeof(struct numeric_constant));
@@ -5395,24 +5385,24 @@
ADD_CHECKED_OBJECT(m, "options",
OptionsNew(SREQ_GLOBAL, NULL, dummy_check, NULL));
- if (!(os = PyImport_ImportModule("os")))
+ if (!(other_module = PyImport_ImportModule("os")))
return -1;
- ADD_OBJECT(m, "os", os);
-
- if (!(py_getcwd = PyObject_GetAttrString(os, "getcwd")))
+ 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(os, "chdir")))
+ if (!(py_chdir = PyObject_GetAttrString(other_module, "chdir")))
return -1;
ADD_OBJECT(m, "_chdir", py_chdir);
- if (PyObject_SetAttrString(os, "chdir", get_attr(m, "chdir")))
+ if (PyObject_SetAttrString(other_module, "chdir", get_attr(m, "chdir")))
return -1;
- if ((py_fchdir = PyObject_GetAttrString(os, "fchdir")))
+ if ((py_fchdir = PyObject_GetAttrString(other_module, "fchdir")))
{
ADD_OBJECT(m, "_fchdir", py_fchdir);
- if (PyObject_SetAttrString(os, "fchdir", get_attr(m, "fchdir")))
+ if (PyObject_SetAttrString(other_module,"fchdir",get_attr(m,"fchdir")))
return -1;
}
else
--
--
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.
*** /tmp/extdiff.ptPHbt/vim.99c9dd23883f/src/if_py_both.h 2013-06-09 13:17:50.916754228 +0400
--- vim.5af09dbe636d/src/if_py_both.h 2013-06-09 13:17:50.924754150 +0400
***************
*** 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,5363 ----
static int
populate_module(PyObject *m, object_adder add_object, attr_getter get_attr)
{
! int i;
! PyObject *other_module;
! PyObject *path_hooks;
! PyObject *path;
! PyObject *pathObject;
! PyObject *path_hook;
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
--- 5385,5408 ----
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