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

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
2003年4月12日 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 }
 };

AltStyle によって変換されたページ (->オリジナル) /