use Py_ssize_t rather than int when dealing with list sizes (original patch from Fedora but applied changes elsewhere too), also replace PyList_Size with PyList_GET_SIZE where typechecking is already done.

This commit is contained in:
2011-09-06 23:46:20 +00:00
parent 9baff83d72
commit 9161d3ce4b
8 changed files with 21 additions and 20 deletions

View File

@@ -344,7 +344,7 @@ void bpy_text_clear_modules(int clear_all)
/* looping over the dict */ /* looping over the dict */
PyObject *key, *value; PyObject *key, *value;
int pos= 0; Py_ssize_t pos= 0;
/* new list */ /* new list */
PyObject *list; PyObject *list;
@@ -374,7 +374,7 @@ void bpy_text_clear_modules(int clear_all)
} }
/* remove all our modules */ /* remove all our modules */
for(pos=0; pos < PyList_Size(list); pos++) { for(pos=0; pos < PyList_GET_SIZE(list); pos++) {
/* PyObject_Print(key, stderr, 0); */ /* PyObject_Print(key, stderr, 0); */
key= PyList_GET_ITEM(list, pos); key= PyList_GET_ITEM(list, pos);
PyDict_DelItem(modules, key); PyDict_DelItem(modules, key);

View File

@@ -4608,7 +4608,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
#ifdef DEBUG_STRING_FREE #ifdef DEBUG_STRING_FREE
// if(PyList_Size(string_free_ls)) printf("%.200s.%.200s(): has %d strings\n", RNA_struct_identifier(self_ptr->type), RNA_function_identifier(self_func), (int)PyList_Size(string_free_ls)); // if(PyList_GET_SIZE(string_free_ls)) printf("%.200s.%.200s(): has %d strings\n", RNA_struct_identifier(self_ptr->type), RNA_function_identifier(self_func), (int)PyList_GET_SIZE(string_free_ls));
Py_DECREF(string_free_ls); Py_DECREF(string_free_ls);
#undef DEBUG_STRING_FREE #undef DEBUG_STRING_FREE
#endif #endif

View File

@@ -983,7 +983,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray) static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
{ {
int len, i; Py_ssize_t len, i;
PyObject *list_item, *item_1, *item_2; PyObject *list_item, *item_1, *item_2;
boxPack *box; boxPack *box;
@@ -995,14 +995,14 @@ static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
return -1; return -1;
} }
len= PyList_Size(value); len= PyList_GET_SIZE(value);
(*boxarray)= MEM_mallocN(len*sizeof(boxPack), "boxPack box"); (*boxarray)= MEM_mallocN(len*sizeof(boxPack), "boxPack box");
for(i= 0; i < len; i++) { for(i= 0; i < len; i++) {
list_item= PyList_GET_ITEM(value, i); list_item= PyList_GET_ITEM(value, i);
if(!PyList_Check(list_item) || PyList_Size(list_item) < 4) { if(!PyList_Check(list_item) || PyList_GET_SIZE(list_item) < 4) {
MEM_freeN(*boxarray); MEM_freeN(*boxarray);
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"can only pack a list of [x, y, w, h]"); "can only pack a list of [x, y, w, h]");
@@ -1034,11 +1034,11 @@ static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
static void boxPack_ToPyObject(PyObject *value, boxPack **boxarray) static void boxPack_ToPyObject(PyObject *value, boxPack **boxarray)
{ {
int len, i; Py_ssize_t len, i;
PyObject *list_item; PyObject *list_item;
boxPack *box; boxPack *box;
len= PyList_Size(value); len= PyList_GET_SIZE(value);
for(i= 0; i < len; i++) { for(i= 0; i < len; i++) {
box= (*boxarray)+i; box= (*boxarray)+i;
@@ -1062,7 +1062,7 @@ PyDoc_STRVAR(M_Geometry_box_pack_2d_doc,
static PyObject *M_Geometry_box_pack_2d(PyObject *UNUSED(self), PyObject *boxlist) static PyObject *M_Geometry_box_pack_2d(PyObject *UNUSED(self), PyObject *boxlist)
{ {
float tot_width= 0.0f, tot_height= 0.0f; float tot_width= 0.0f, tot_height= 0.0f;
int len; Py_ssize_t len;
PyObject *ret; PyObject *ret;

View File

@@ -507,9 +507,10 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c
//PyDict_Clear(PyModule_GetDict(gameLogic)); //PyDict_Clear(PyModule_GetDict(gameLogic));
// Keep original items, means python plugins will autocomplete members // Keep original items, means python plugins will autocomplete members
int listIndex;
PyObject *gameLogic_keys_new = PyDict_Keys(PyModule_GetDict(gameLogic)); PyObject *gameLogic_keys_new = PyDict_Keys(PyModule_GetDict(gameLogic));
for (listIndex=0; listIndex < PyList_Size(gameLogic_keys_new); listIndex++) { const Py_ssize_t numitems= PyList_GET_SIZE(gameLogic_keys_new);
Py_ssize_t listIndex;
for (listIndex=0; listIndex < numitems; listIndex++) {
PyObject* item = PyList_GET_ITEM(gameLogic_keys_new, listIndex); PyObject* item = PyList_GET_ITEM(gameLogic_keys_new, listIndex);
if (!PySequence_Contains(gameLogic_keys, item)) { if (!PySequence_Contains(gameLogic_keys, item)) {
PyDict_DelItem( PyModule_GetDict(gameLogic), item); PyDict_DelItem( PyModule_GetDict(gameLogic), item);

View File

@@ -387,7 +387,7 @@ PyObject* listvalue_buffer_slice(PyObject* self,Py_ssize_t ilow, Py_ssize_t ihig
static PyObject *listvalue_buffer_concat(PyObject * self, PyObject * other) static PyObject *listvalue_buffer_concat(PyObject * self, PyObject * other)
{ {
CListValue *listval= static_cast<CListValue *>(BGE_PROXY_REF(self)); CListValue *listval= static_cast<CListValue *>(BGE_PROXY_REF(self));
int i, numitems, numitems_orig; Py_ssize_t i, numitems, numitems_orig;
if (listval==NULL) { if (listval==NULL) {
PyErr_SetString(PyExc_SystemError, "CList+other, "BGE_PROXY_ERROR_MSG); PyErr_SetString(PyExc_SystemError, "CList+other, "BGE_PROXY_ERROR_MSG);
@@ -408,7 +408,7 @@ static PyObject *listvalue_buffer_concat(PyObject * self, PyObject * other)
CValue* listitemval; CValue* listitemval;
bool error = false; bool error = false;
numitems = PyList_Size(other); numitems = PyList_GET_SIZE(other);
/* copy the first part of the list */ /* copy the first part of the list */
listval_new->Resize(numitems_orig + numitems); listval_new->Resize(numitems_orig + numitems);

View File

@@ -546,8 +546,8 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj, const char *error_prefix)
CListValue* listval = new CListValue(); CListValue* listval = new CListValue();
bool error = false; bool error = false;
int i; Py_ssize_t i;
int numitems = PyList_Size(pyobj); Py_ssize_t numitems = PyList_GET_SIZE(pyobj);
for (i=0;i<numitems;i++) for (i=0;i<numitems;i++)
{ {
PyObject* listitem = PyList_GetItem(pyobj,i); /* borrowed ref */ PyObject* listitem = PyList_GetItem(pyobj,i); /* borrowed ref */

View File

@@ -725,7 +725,7 @@ static PyObject *gLibNew(PyObject*, PyObject* args)
if(idcode==ID_ME) { if(idcode==ID_ME) {
PyObject *ret= PyList_New(0); PyObject *ret= PyList_New(0);
PyObject *item; PyObject *item;
for(int i= 0; i < PyList_GET_SIZE(names); i++) { for(Py_ssize_t i= 0; i < PyList_GET_SIZE(names); i++) {
name= _PyUnicode_AsString(PyList_GET_ITEM(names, i)); name= _PyUnicode_AsString(PyList_GET_ITEM(names, i));
if(name) { if(name) {
RAS_MeshObject *meshobj= kx_scene->GetSceneConverter()->ConvertMeshSpecial(kx_scene, maggie, name); RAS_MeshObject *meshobj= kx_scene->GetSceneConverter()->ConvertMeshSpecial(kx_scene, maggie, name);
@@ -1751,7 +1751,7 @@ static void initPySysObjects(Main *maggie)
initPySysObjects__append(sys_path, gp_GamePythonPath); initPySysObjects__append(sys_path, gp_GamePythonPath);
// fprintf(stderr, "\nNew Path: %d ", PyList_Size(sys_path)); // fprintf(stderr, "\nNew Path: %d ", PyList_GET_SIZE(sys_path));
// PyObject_Print(sys_path, stderr, 0); // PyObject_Print(sys_path, stderr, 0);
} }
@@ -1775,7 +1775,7 @@ static void restorePySysObjects(void)
gp_OrigPythonSysModules= NULL; gp_OrigPythonSysModules= NULL;
// fprintf(stderr, "\nRestore Path: %d ", PyList_Size(sys_path)); // fprintf(stderr, "\nRestore Path: %d ", PyList_GET_SIZE(sys_path));
// PyObject_Print(sys_path, stderr, 0); // PyObject_Print(sys_path, stderr, 0);
} }

View File

@@ -1916,7 +1916,7 @@ void KX_Scene::Render2DFilters(RAS_ICanvas* canvas)
void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) void KX_Scene::RunDrawingCallbacks(PyObject* cb_list)
{ {
int len; Py_ssize_t len;
if (cb_list && (len=PyList_GET_SIZE(cb_list))) if (cb_list && (len=PyList_GET_SIZE(cb_list)))
{ {
@@ -1925,7 +1925,7 @@ void KX_Scene::RunDrawingCallbacks(PyObject* cb_list)
PyObject* ret; PyObject* ret;
// Iterate the list and run the callbacks // Iterate the list and run the callbacks
for (int pos=0; pos < len; pos++) for (Py_ssize_t pos=0; pos < len; pos++)
{ {
func= PyList_GET_ITEM(cb_list, pos); func= PyList_GET_ITEM(cb_list, pos);
ret= PyObject_Call(func, args, NULL); ret= PyObject_Call(func, args, NULL);