[Python-checkins] python/dist/src/Modules _csv.c,1.7,1.8

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
Sat, 12 Apr 2003 12:17:17 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv16070

Modified Files:
	_csv.c 
Log Message:
tighten up string checks
make csv_{get,unregister}_dialect METH_O functions to avoid PyArg_ParseTuple


Index: _csv.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_csv.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** _csv.c	12 Apr 2003 18:57:52 -0000	1.7
--- _csv.c	12 Apr 2003 19:17:14 -0000	1.8
***************
*** 188,193 ****
                  return -1;
          }
!         else
!              *addr = PyString_AsString(v)[0];
          return 0;
  }
--- 188,197 ----
                  return -1;
          }
!         else {
! 		char *s = PyString_AsString(v);
! 		if (s == NULL)
! 			return -1;
! 		*addr = s[0];
! 	}
          return 0;
  }
***************
*** 348,352 ****
                  for (i = 0; i < PyList_GET_SIZE(dir_list); ++i) {
                          name_obj = PyList_GET_ITEM(dir_list, i);
!                         if (PyString_AsString(name_obj)[0] == '_')
                                  continue;
                          value_obj = PyObject_GetAttr(dialect, name_obj);
--- 352,359 ----
                  for (i = 0; i < PyList_GET_SIZE(dir_list); ++i) {
                          name_obj = PyList_GET_ITEM(dir_list, i);
! 			char *s = PyString_AsString(name_obj);
! 			if (s == NULL)
! 				return -1;
!                         if (s[0] == '_')
                                  continue;
                          value_obj = PyObject_GetAttr(dialect, name_obj);
***************
*** 1011,1014 ****
--- 1018,1022 ----
  
  	memmove(self->rec + self->rec_len,
+ 		/* should not be NULL */
  		PyString_AsString(self->dialect->lineterminator), 
                  terminator_len);
***************
*** 1064,1068 ****
  
  		if (PyString_Check(field)) {
! 			append_ok = join_append(self, PyString_AsString(field),
                                                  &quoted, len == 1);
  			Py_DECREF(field);
--- 1072,1077 ----
  
  		if (PyString_Check(field)) {
! 			append_ok = join_append(self,
! 						PyString_AS_STRING(field),
                                                  &quoted, len == 1);
  			Py_DECREF(field);
***************
*** 1080,1084 ****
  				return NULL;
  
! 			append_ok = join_append(self, PyString_AsString(str), 
                                                  &quoted, len == 1);
  			Py_DECREF(str);
--- 1089,1093 ----
  				return NULL;
  
! 			append_ok = join_append(self, PyString_AS_STRING(str), 
                                                  &quoted, len == 1);
  			Py_DECREF(str);
***************
*** 1292,1301 ****
  
  static PyObject *
! csv_unregister_dialect(PyObject *module, PyObject *args)
  {
-         PyObject *name_obj;
- 
-         if (!PyArg_ParseTuple(args, "O", &name_obj))
-                 return NULL;
          if (PyDict_DelItem(dialects, name_obj) < 0)
                  return PyErr_Format(error_obj, "unknown dialect");
--- 1301,1306 ----
  
  static PyObject *
! csv_unregister_dialect(PyObject *module, PyObject *name_obj)
  {
          if (PyDict_DelItem(dialects, name_obj) < 0)
                  return PyErr_Format(error_obj, "unknown dialect");
***************
*** 1305,1314 ****
  
  static PyObject *
! csv_get_dialect(PyObject *module, PyObject *args)
  {
-         PyObject *name_obj;
- 
-         if (!PyArg_ParseTuple(args, "O", &name_obj))
-                 return NULL;
          return get_dialect_from_registry(name_obj);
  }
--- 1310,1315 ----
  
  static PyObject *
! csv_get_dialect(PyObject *module, PyObject *name_obj)
  {
          return get_dialect_from_registry(name_obj);
  }
***************
*** 1430,1436 ****
              METH_VARARGS, csv_register_dialect_doc},
          { "unregister_dialect", (PyCFunction)csv_unregister_dialect, 
!             METH_VARARGS, csv_unregister_dialect_doc},
          { "get_dialect", (PyCFunction)csv_get_dialect, 
!             METH_VARARGS, csv_get_dialect_doc},
          { NULL, NULL }
  };
--- 1431,1437 ----
              METH_VARARGS, csv_register_dialect_doc},
          { "unregister_dialect", (PyCFunction)csv_unregister_dialect, 
!             METH_O, csv_unregister_dialect_doc},
          { "get_dialect", (PyCFunction)csv_get_dialect, 
!             METH_O, csv_get_dialect_doc},
          { NULL, NULL }
  };