mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	Some changes in preparation of stricter rules about mixing str and bytes.
This commit is contained in:
		
							parent
							
								
									ddd25825c8
								
							
						
					
					
						commit
						a4b8d1de7c
					
				
					 2 changed files with 14 additions and 9 deletions
				
			
		|  | @ -403,18 +403,16 @@ source_as_string(PyObject *cmd) | |||
| 	char *str; | ||||
| 	Py_ssize_t size; | ||||
| 
 | ||||
| 	if (!PyObject_CheckReadBuffer(cmd) && | ||||
| 	    !PyUnicode_Check(cmd)) { | ||||
| 		PyErr_SetString(PyExc_TypeError, | ||||
| 			   "eval()/exec() arg 1 must be a string, bytes or code object"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	if (PyUnicode_Check(cmd)) { | ||||
| 		cmd = _PyUnicode_AsDefaultEncodedString(cmd, NULL); | ||||
| 		if (cmd == NULL) | ||||
| 			return NULL; | ||||
| 	} | ||||
| 	else if (!PyObject_CheckReadBuffer(cmd)) { | ||||
| 		PyErr_SetString(PyExc_TypeError, | ||||
| 		  "eval()/exec() arg 1 must be a string, bytes or code object"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	if (PyObject_AsReadBuffer(cmd, (const void **)&str, &size) < 0) { | ||||
| 		return NULL; | ||||
| 	} | ||||
|  |  | |||
|  | @ -1247,8 +1247,15 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, | |||
| 		Py_ssize_t size; | ||||
| 		if (!v) | ||||
| 			return NULL; | ||||
| 		if (PyObject_AsCharBuffer(v, &base, &size) < 0) | ||||
| 		if (PyUnicode_Check(v)) { | ||||
| 			v = _PyUnicode_AsDefaultEncodedString(v, NULL); | ||||
| 			if (v == NULL) | ||||
| 				return NULL; | ||||
| 		} | ||||
| 		if (!PyString_Check(v)) | ||||
| 			continue; | ||||
| 		base = PyString_AS_STRING(v); | ||||
| 		size = PyString_GET_SIZE(v); | ||||
| 		len = size; | ||||
| 		if (len + 2 + namelen + MAXSUFFIXSIZE >= buflen) { | ||||
| 			continue; /* Too long */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum