mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	When raising a SyntaxError, make a best-effort attempt to set the
filename and lineno attributes, but do not mask the SyntaxError if we fail. This is part of what is needed to close SoruceForge bug #110628 (Jitterbug PR#278).
This commit is contained in:
		
							parent
							
								
									1aba577093
								
							
						
					
					
						commit
						83cb797380
					
				
					 1 changed files with 19 additions and 1 deletions
				
			
		|  | @ -20,6 +20,7 @@ redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. | |||
| #include "compile.h" | ||||
| #include "eval.h" | ||||
| #include "marshal.h" | ||||
| #include "osdefs.h"			/* SEP */ | ||||
| 
 | ||||
| #ifdef HAVE_UNISTD_H | ||||
| #include <unistd.h> | ||||
|  | @ -1003,9 +1004,26 @@ err_input(perrdetail *err) | |||
| 		break; | ||||
| 	} | ||||
| 	w = Py_BuildValue("(sO)", msg, v); | ||||
| 	Py_XDECREF(v); | ||||
| 	PyErr_SetObject(errtype, w); | ||||
| 	Py_XDECREF(w); | ||||
| 
 | ||||
| 	if (v != NULL) { | ||||
| 		PyObject *exc, *tb; | ||||
| 
 | ||||
| 		PyErr_Fetch(&errtype, &exc, &tb); | ||||
| 		PyErr_NormalizeException(&errtype, &exc, &tb); | ||||
| 		if (PyObject_SetAttrString(exc, "filename", | ||||
| 					   PyTuple_GET_ITEM(v, 0))) | ||||
| 			PyErr_Clear(); | ||||
| 		if (PyObject_SetAttrString(exc, "lineno", | ||||
| 					   PyTuple_GET_ITEM(v, 1))) | ||||
| 			PyErr_Clear(); | ||||
| 		if (PyObject_SetAttrString(exc, "offset", | ||||
| 					   PyTuple_GET_ITEM(v, 2))) | ||||
| 			PyErr_Clear(); | ||||
| 		Py_DECREF(v); | ||||
| 		PyErr_Restore(errtype, exc, tb); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* Print fatal error message and abort */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fred Drake
						Fred Drake