[Python-checkins] python/nondist/sandbox/csv _csv.c,1.27,1.28

andrewmcnamara@users.sourceforge.net andrewmcnamara@users.sourceforge.net
Mon, 10 Feb 2003 02:41:11 -0800


Update of /cvsroot/python/python/nondist/sandbox/csv
In directory sc8-pr-cvs1:/tmp/cvs-serv20704

Modified Files:
	_csv.c 
Log Message:
Picked up a couple of module bugs while using test coverage tools, improved
test coverage slightly.


Index: _csv.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/csv/_csv.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** _csv.c	10 Feb 2003 09:41:28 -0000	1.27
--- _csv.c	10 Feb 2003 10:41:08 -0000	1.28
***************
*** 117,120 ****
--- 117,131 ----
  }
  
+ static int
+ check_delattr(PyObject *v)
+ {
+ 	if (v == NULL) {
+ 		PyErr_SetString(PyExc_TypeError, 
+                                 "Cannot delete attribute");
+ 		return -1;
+         }
+         return 0;
+ }
+ 
  static PyObject *
  get_string(PyObject *str)
***************
*** 127,135 ****
  set_string(PyObject **str, PyObject *v)
  {
! 	if (v == NULL) {
! 		PyErr_SetString(PyExc_AttributeError, 
!                                 "Cannot delete attribute");
! 		return -1;
!         }
          if (!PyString_Check(v) && !PyUnicode_Check(v)) {
                  PyErr_BadArgument();
--- 138,143 ----
  set_string(PyObject **str, PyObject *v)
  {
!         if (check_delattr(v) < 0)
!                 return -1;
          if (!PyString_Check(v) && !PyUnicode_Check(v)) {
                  PyErr_BadArgument();
***************
*** 156,164 ****
  set_None_as_nullchar(char * addr, PyObject *v)
  {
! 	if (v == NULL) {
! 		PyErr_SetString(PyExc_AttributeError, 
!                                 "Cannot delete attribute");
! 		return -1;
!         }
          if (v == Py_None)
                  *addr = '\0';
--- 164,169 ----
  set_None_as_nullchar(char * addr, PyObject *v)
  {
!         if (check_delattr(v) < 0)
!                 return -1;
          if (v == Py_None)
                  *addr = '\0';
***************
*** 208,211 ****
--- 213,218 ----
          StyleDesc *qs = quote_styles;
  
+         if (check_delattr(v) < 0)
+                 return -1;
          if (!PyInt_Check(v)) {
                  PyErr_BadArgument();
***************
*** 1182,1186 ****
          if (!PyArg_ParseTuple(args, "OO", &name_obj, &dialect_obj))
                  return NULL;
!         if (!PyString_Check(name_obj) && PyUnicode_Check(name_obj)) {
                  PyErr_SetString(PyExc_TypeError, 
                                  "dialect name must be a string or unicode");
--- 1189,1193 ----
          if (!PyArg_ParseTuple(args, "OO", &name_obj, &dialect_obj))
                  return NULL;
!         if (!PyString_Check(name_obj) && !PyUnicode_Check(name_obj)) {
                  PyErr_SetString(PyExc_TypeError, 
                                  "dialect name must be a string or unicode");