mirror of
				https://github.com/python/cpython.git
				synced 2025-11-01 06:01:29 +00:00 
			
		
		
		
	Remove the buffer API from PyUnicode as specified by PEP 3137. Also,
fix the error message of the 't' format unit, in getargs.c, so that it asks for bytes, instead of string.
This commit is contained in:
		
							parent
							
								
									659e7f44e2
								
							
						
					
					
						commit
						70a237179f
					
				
					 4 changed files with 13 additions and 17 deletions
				
			
		|  | @ -1674,6 +1674,15 @@ getstring(PyObject* string, Py_ssize_t* p_length, int* p_charsize) | |||
|     void* ptr; | ||||
|     Py_buffer view; | ||||
| 
 | ||||
|     /* Unicode objects do not support the buffer API. So, get the data
 | ||||
|        directly instead. */ | ||||
|     if (PyUnicode_Check(string)) { | ||||
|         ptr = (void *)PyUnicode_AS_DATA(string); | ||||
|         *p_length = PyUnicode_GET_SIZE(string); | ||||
|         *p_charsize = sizeof(Py_UNICODE); | ||||
|         return ptr; | ||||
|     } | ||||
| 
 | ||||
|     /* get pointer to string buffer */ | ||||
|     view.len = -1; | ||||
|     buffer = Py_Type(string)->tp_as_buffer; | ||||
|  |  | |||
|  | @ -2135,7 +2135,8 @@ posix_listdir(PyObject *self, PyObject *args) | |||
|     FILEFINDBUF3   ep; | ||||
|     APIRET rc; | ||||
| 
 | ||||
|     if (!PyArg_ParseTuple(args, "t#:listdir", &name, &len)) | ||||
|     if (!PyArg_ParseTuple(args, "et#:listdir",  | ||||
|                           Py_FileSystemDefaultEncoding, &name, &len)) | ||||
|         return NULL; | ||||
|     if (len >= MAX_PATH) { | ||||
| 		PyErr_SetString(PyExc_ValueError, "path too long"); | ||||
|  |  | |||
|  | @ -8113,15 +8113,6 @@ static PyMappingMethods unicode_as_mapping = { | |||
| }; | ||||
| 
 | ||||
| 
 | ||||
| static int | ||||
| unicode_buffer_getbuffer(PyUnicodeObject *self, Py_buffer *view, int flags) | ||||
| { | ||||
| 
 | ||||
|     return PyBuffer_FillInfo(view, (void *)self->str, | ||||
|                              PyUnicode_GET_DATA_SIZE(self), 1, flags); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* Helpers for PyUnicode_Format() */ | ||||
| 
 | ||||
| static PyObject * | ||||
|  | @ -8815,11 +8806,6 @@ PyObject *PyUnicode_Format(PyObject *format, | |||
|     return NULL; | ||||
| } | ||||
| 
 | ||||
| static PyBufferProcs unicode_as_buffer = { | ||||
|     (getbufferproc) unicode_buffer_getbuffer, | ||||
|     NULL, | ||||
| }; | ||||
| 
 | ||||
| static PyObject * | ||||
| unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds); | ||||
| 
 | ||||
|  | @ -8903,7 +8889,7 @@ PyTypeObject PyUnicode_Type = { | |||
|     (reprfunc) unicode_str,	 	/* tp_str */ | ||||
|     PyObject_GenericGetAttr, 		/* tp_getattro */ | ||||
|     0,			 		/* tp_setattro */ | ||||
|     &unicode_as_buffer,			/* tp_as_buffer */ | ||||
|     0, 					/* tp_as_buffer */ | ||||
|     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |  | ||||
|         Py_TPFLAGS_UNICODE_SUBCLASS,	/* tp_flags */ | ||||
|     unicode_doc,			/* tp_doc */ | ||||
|  |  | |||
|  | @ -1252,7 +1252,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
| 				arg, msgbuf, bufsize); | ||||
| 		if (pb == NULL || pb->bf_getbuffer == NULL) | ||||
| 			return converterr( | ||||
| 				"string or read-only character buffer", | ||||
| 				"bytes or read-only character buffer", | ||||
| 				arg, msgbuf, bufsize); | ||||
| 
 | ||||
| 		if ((*pb->bf_getbuffer)(arg, &view, PyBUF_SIMPLE) != 0)  | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alexandre Vassalotti
						Alexandre Vassalotti