diff options
| author | Manuel Novoa III <mjn3@codepoet.org> | 2001-03-23 02:32:39 +0000 | 
|---|---|---|
| committer | Manuel Novoa III <mjn3@codepoet.org> | 2001-03-23 02:32:39 +0000 | 
| commit | 8625fbfe454b90a1a6f24e365cb0fff672414cff (patch) | |
| tree | a0ae6b320d490b0b8eb3f1baa339ad60fab9b4f8 /libc/stdio | |
| parent | fec38619dc00c09d59ce092c7a2fa09d83ff22e1 (diff) | |
| download | uClibc-alpine-8625fbfe454b90a1a6f24e365cb0fff672414cff.tar.bz2 uClibc-alpine-8625fbfe454b90a1a6f24e365cb0fff672414cff.tar.xz  | |
Bug fix from Peter Kjellerstedt <Peter.Kjellerstedt@axis.com>.
Diffstat (limited to 'libc/stdio')
| -rw-r--r-- | libc/stdio/scanf.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/libc/stdio/scanf.c b/libc/stdio/scanf.c index 0f1843a4d..a8f9f0ed0 100644 --- a/libc/stdio/scanf.c +++ b/libc/stdio/scanf.c @@ -139,6 +139,7 @@ struct scan_cookie {  	FILE *fp;  	int nread;  	int width; +	int width_flag;  	int ungot_char;  	int ungot_flag;  }; @@ -166,6 +167,7 @@ static void init_scan_cookie(struct scan_cookie *sc, FILE *fp)  {  	sc->fp = fp;  	sc->nread = 0; +	sc->width_flag = 0;  	sc->ungot_flag = 0;  	if ((sc->ungot_char = getc(fp)) > 0) { /* not EOF or EOS */  		sc->ungot_flag = 1; @@ -182,6 +184,7 @@ static int scan_getc_nw(struct scan_cookie *sc)  	if (sc->ungot_char > 0) {  		++sc->nread;  	} +	sc->width_flag = 0;  	return sc->ungot_char;  } @@ -190,6 +193,7 @@ static int scan_getc(struct scan_cookie *sc)  	if (sc->ungot_flag == 0) {  		sc->ungot_char = getc(sc->fp);  	} +	sc->width_flag = 1;  	if (--sc->width < 0) {  		sc->ungot_flag = 1;  		return 0; @@ -207,6 +211,9 @@ static void scan_ungetc(struct scan_cookie *sc)  		assert(sc->width < 0);  		return;  	} +	if (sc->width_flag) { +		++sc->width; +	}  	sc->ungot_flag = 1;  	if (sc->ungot_char > 0) {	/* not EOF or EOS */  		--sc->nread;  | 
