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:
		@@ -344,7 +344,7 @@ void bpy_text_clear_modules(int clear_all)
 | 
			
		||||
	
 | 
			
		||||
	/* looping over the dict */
 | 
			
		||||
	PyObject *key, *value;
 | 
			
		||||
	int pos= 0;
 | 
			
		||||
	Py_ssize_t pos= 0;
 | 
			
		||||
	
 | 
			
		||||
	/* new list */
 | 
			
		||||
	PyObject *list;
 | 
			
		||||
@@ -374,7 +374,7 @@ void bpy_text_clear_modules(int clear_all)
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/* 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); */
 | 
			
		||||
		key= PyList_GET_ITEM(list, pos);
 | 
			
		||||
		PyDict_DelItem(modules, key);
 | 
			
		||||
 
 | 
			
		||||
@@ -4608,7 +4608,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#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);
 | 
			
		||||
#undef DEBUG_STRING_FREE
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -983,7 +983,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
 | 
			
		||||
 | 
			
		||||
static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
 | 
			
		||||
{
 | 
			
		||||
	int len, i;
 | 
			
		||||
	Py_ssize_t len, i;
 | 
			
		||||
	PyObject *list_item, *item_1, *item_2;
 | 
			
		||||
	boxPack *box;
 | 
			
		||||
 | 
			
		||||
@@ -995,14 +995,14 @@ static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	len= PyList_Size(value);
 | 
			
		||||
	len= PyList_GET_SIZE(value);
 | 
			
		||||
 | 
			
		||||
	(*boxarray)= MEM_mallocN(len*sizeof(boxPack), "boxPack box");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	for(i= 0; i < len; 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);
 | 
			
		||||
			PyErr_SetString(PyExc_TypeError,
 | 
			
		||||
			                "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)
 | 
			
		||||
{
 | 
			
		||||
	int len, i;
 | 
			
		||||
	Py_ssize_t len, i;
 | 
			
		||||
	PyObject *list_item;
 | 
			
		||||
	boxPack *box;
 | 
			
		||||
 | 
			
		||||
	len= PyList_Size(value);
 | 
			
		||||
	len= PyList_GET_SIZE(value);
 | 
			
		||||
 | 
			
		||||
	for(i= 0; i < len; 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)
 | 
			
		||||
{
 | 
			
		||||
	float tot_width= 0.0f, tot_height= 0.0f;
 | 
			
		||||
	int len;
 | 
			
		||||
	Py_ssize_t len;
 | 
			
		||||
 | 
			
		||||
	PyObject *ret;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -507,9 +507,10 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c
 | 
			
		||||
				//PyDict_Clear(PyModule_GetDict(gameLogic));
 | 
			
		||||
				
 | 
			
		||||
				// Keep original items, means python plugins will autocomplete members
 | 
			
		||||
				int listIndex;
 | 
			
		||||
				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);
 | 
			
		||||
					if (!PySequence_Contains(gameLogic_keys, item)) {
 | 
			
		||||
						PyDict_DelItem(	PyModule_GetDict(gameLogic), item);
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
{
 | 
			
		||||
	CListValue *listval= static_cast<CListValue *>(BGE_PROXY_REF(self));
 | 
			
		||||
	int i, numitems, numitems_orig;
 | 
			
		||||
	Py_ssize_t i, numitems, numitems_orig;
 | 
			
		||||
	
 | 
			
		||||
	if (listval==NULL) {
 | 
			
		||||
		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;
 | 
			
		||||
		bool error = false;
 | 
			
		||||
		
 | 
			
		||||
		numitems = PyList_Size(other);
 | 
			
		||||
		numitems = PyList_GET_SIZE(other);
 | 
			
		||||
		
 | 
			
		||||
		/* copy the first part of the list */
 | 
			
		||||
		listval_new->Resize(numitems_orig + numitems);
 | 
			
		||||
 
 | 
			
		||||
@@ -546,8 +546,8 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj, const char *error_prefix)
 | 
			
		||||
		CListValue* listval = new CListValue();
 | 
			
		||||
		bool error = false;
 | 
			
		||||
 | 
			
		||||
		int i;
 | 
			
		||||
		int numitems = PyList_Size(pyobj);
 | 
			
		||||
		Py_ssize_t i;
 | 
			
		||||
		Py_ssize_t numitems = PyList_GET_SIZE(pyobj);
 | 
			
		||||
		for (i=0;i<numitems;i++)
 | 
			
		||||
		{
 | 
			
		||||
			PyObject* listitem = PyList_GetItem(pyobj,i); /* borrowed ref */
 | 
			
		||||
 
 | 
			
		||||
@@ -725,7 +725,7 @@ static PyObject *gLibNew(PyObject*, PyObject* args)
 | 
			
		||||
	if(idcode==ID_ME) {
 | 
			
		||||
		PyObject *ret= PyList_New(0);
 | 
			
		||||
		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));
 | 
			
		||||
			if(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);
 | 
			
		||||
	
 | 
			
		||||
//	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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1775,7 +1775,7 @@ static void restorePySysObjects(void)
 | 
			
		||||
	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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1916,7 +1916,7 @@ void KX_Scene::Render2DFilters(RAS_ICanvas* canvas)
 | 
			
		||||
 | 
			
		||||
void KX_Scene::RunDrawingCallbacks(PyObject* cb_list)
 | 
			
		||||
{
 | 
			
		||||
	int len;
 | 
			
		||||
	Py_ssize_t len;
 | 
			
		||||
 | 
			
		||||
	if (cb_list && (len=PyList_GET_SIZE(cb_list)))
 | 
			
		||||
	{
 | 
			
		||||
@@ -1925,7 +1925,7 @@ void KX_Scene::RunDrawingCallbacks(PyObject* cb_list)
 | 
			
		||||
		PyObject* ret;
 | 
			
		||||
 | 
			
		||||
		// 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);
 | 
			
		||||
			ret= PyObject_Call(func, args, NULL);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user