[Python-checkins] CVS: python/dist/src/Parser parsetok.c,2.27,2.28

Guido van Rossum gvanrossum@users.sourceforge.net
2001年10月20日 07:27:58 -0700


Update of /cvsroot/python/python/dist/src/Parser
In directory usw-pr-cvs1:/tmp/cvs-serv5547
Modified Files:
	parsetok.c 
Log Message:
Patch from SF bug #472956: UMR when there is a syntax error (Neal Norwitz)
 perrdetail.token is unitialized when there is a syntax 
 error in a file. 
Index: parsetok.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Parser/parsetok.c,v
retrieving revision 2.27
retrieving revision 2.28
diff -C2 -d -r2.27 -r2.28
*** parsetok.c	2001年07月17日 16:53:11	2.27
--- parsetok.c	2001年10月20日 14:27:56	2.28
***************
*** 15,18 ****
--- 15,19 ----
 /* Forward */
 static node *parsetok(struct tok_state *, grammar *, int, perrdetail *, int);
+ static void initerr(perrdetail *err_ret);
 
 /* Parse input coming from a string. Return error code, print some errors. */
***************
*** 29,39 ****
 	struct tok_state *tok;
 
! 	err_ret->error = E_OK;
! 	err_ret->filename = NULL;
! 	err_ret->lineno = 0;
! 	err_ret->offset = 0;
! 	err_ret->text = NULL;
! 	err_ret->token = -1;
! 	err_ret->expected = -1;
 
 	if ((tok = PyTokenizer_FromString(s)) == NULL) {
--- 30,34 ----
 	struct tok_state *tok;
 
! 	initerr(err_ret);
 
 	if ((tok = PyTokenizer_FromString(s)) == NULL) {
***************
*** 69,77 ****
 	struct tok_state *tok;
 
! 	err_ret->error = E_OK;
! 	err_ret->filename = filename;
! 	err_ret->lineno = 0;
! 	err_ret->offset = 0;
! 	err_ret->text = NULL;
 
 	if ((tok = PyTokenizer_FromFile(fp, ps1, ps2)) == NULL) {
--- 64,68 ----
 	struct tok_state *tok;
 
! 	initerr(err_ret);
 
 	if ((tok = PyTokenizer_FromFile(fp, ps1, ps2)) == NULL) {
***************
*** 185,187 ****
--- 176,190 ----
 
 	return n;
+ }
+ 
+ static void
+ initerr(perrdetail *err_ret)
+ {
+ 	err_ret->error = E_OK;
+ 	err_ret->filename = NULL;
+ 	err_ret->lineno = 0;
+ 	err_ret->offset = 0;
+ 	err_ret->text = NULL;
+ 	err_ret->token = -1;
+ 	err_ret->expected = -1;
 }

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