[Python-checkins] CVS: python/dist/src/Modules pyexpat.c,2.8,2.9

A.M. Kuchling python-dev@python.org
Tue, 11 Jul 2000 17:53:44 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv19519

Modified Files:
	pyexpat.c 
Log Message:
Patch #100854 from jhylton: eliminate compiler warnings in pyexpat:
	The first two warnings seem harmless enough,
	but the last one looks like a potential bug: an
	uninitialized int is returned on error. (I also
	ended up reformatting some of the code,
	because it was hard to read.) 


Index: pyexpat.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/pyexpat.c,v
retrieving revision 2.8
retrieving revision 2.9
diff -C2 -r2.8 -r2.9
*** pyexpat.c	2000/07/04 23:51:31	2.8
--- pyexpat.c	2000/07/12 00:53:41	2.9
***************
*** 71,102 ****
  /* Convert an array of attributes and their values into a Python dict */
  
! static PyObject *conv_atts_using_string( XML_Char **atts){
! 	PyObject *attrs_obj=NULL;
! 	XML_Char **attrs_p, **attrs_k;
  	int attrs_len;
  	PyObject *rv;
  
! 	if( (attrs_obj = PyDict_New()) == NULL ) 
  		goto finally;
! 	for(attrs_len=0, attrs_p = atts; 
! 	    *attrs_p;
! 	    attrs_p++, attrs_len++) {
! 		if (attrs_len%2) {
! 			rv=PyString_FromString(*attrs_p);  
  			if (! rv) {
  				Py_DECREF(attrs_obj);
! 				attrs_obj=NULL;
  				goto finally;
  			}
! 			if (PyDict_SetItemString(
! 			       attrs_obj,
! 			       (char*)*attrs_k, rv) < 0){
  				Py_DECREF(attrs_obj);
! 				attrs_obj=NULL;
  				goto finally;
  			}
  			Py_DECREF(rv);
  		}
! 		else attrs_k=attrs_p;
  	}
  	finally:
--- 71,103 ----
  /* Convert an array of attributes and their values into a Python dict */
  
! static PyObject *conv_atts_using_string(XML_Char **atts)
! {
! 	PyObject *attrs_obj = NULL;
! 	XML_Char **attrs_p, **attrs_k = NULL;
  	int attrs_len;
  	PyObject *rv;
  
! 	if ((attrs_obj = PyDict_New()) == NULL) 
  		goto finally;
! 	for (attrs_len = 0, attrs_p = atts; 
! 	     *attrs_p;
! 	     attrs_p++, attrs_len++) {
! 		if (attrs_len % 2) {
! 			rv = PyString_FromString(*attrs_p);  
  			if (! rv) {
  				Py_DECREF(attrs_obj);
! 				attrs_obj = NULL;
  				goto finally;
  			}
! 			if (PyDict_SetItemString(attrs_obj,
! 						 (char*)*attrs_k, rv) < 0) {
  				Py_DECREF(attrs_obj);
! 				attrs_obj = NULL;
  				goto finally;
  			}
  			Py_DECREF(rv);
  		}
! 		else 
! 			attrs_k = attrs_p;
  	}
  	finally:
***************
*** 107,111 ****
  static PyObject *conv_atts_using_unicode( XML_Char **atts){
          PyObject *attrs_obj=NULL;
!         XML_Char **attrs_p, **attrs_k;
          int attrs_len;
  
--- 108,112 ----
  static PyObject *conv_atts_using_unicode( XML_Char **atts){
          PyObject *attrs_obj=NULL;
!         XML_Char **attrs_p, **attrs_k = NULL;
          int attrs_len;
  
***************
*** 446,454 ****
  	PyObject *bytes=NULL;
  	PyObject *str=NULL;
! 	int len;
  
  	UNLESS(bytes = PyInt_FromLong(buf_size)) {
  		if (!PyErr_Occurred())
! 		PyErr_SetNone(PyExc_EOFError);
  		goto finally;
  	}
--- 447,455 ----
  	PyObject *bytes=NULL;
  	PyObject *str=NULL;
! 	int len = 0;
  
  	UNLESS(bytes = PyInt_FromLong(buf_size)) {
  		if (!PyErr_Occurred())
! 			PyErr_SetNone(PyExc_EOFError);
  		goto finally;
  	}
***************
*** 468,474 ****
  		goto finally;
  
! 	len=PyString_GET_SIZE( str );
! 	strncpy( buf, PyString_AsString(str), len );
! 	Py_XDECREF( str );
  finally:
  	return len;
--- 469,475 ----
  		goto finally;
  
! 	len = PyString_GET_SIZE(str);
! 	strncpy(buf, PyString_AsString(str), len);
! 	Py_XDECREF(str);
  finally:
  	return len;