Date: Wed, 05 Jun 1996 14:16:39 +0200 (MET DST) From: Hans-Bernhard Broeker Subject: doscan.c: the next problem fixed In-reply-to: <199606030816.SAA18391@janus.cat.csiro.au> To: cjd AT cat DOT csiro DOT au (Cameron Davidson) Cc: djgpp-workers AT delorie DOT com Message-id: <01I5JWDX4VMQ0013CA@mail.rwth-aachen.de> Content-type: text Content-transfer-encoding: 7BIT Hello, djgpp-workers, and who else cares! Cameron Davidson told me he had problems with scan formats containing "%*s" formats: the scan unconditionally failed after processing this format, after applying the patch I had sent him. That patch was the same one I also finally put into the bug tracker as an updated solution for bug # 68 (my first patch was incorrect, as Alexander Lukyanov has told me). That patch is functionally identical to the one Alexander sent to djgpp-workers sometime near the first of April. This new patch was now proven to be slightly incorrect as well. That scanf() family turns out to be a neverending story, doesn't it? :-( The reason for this bug is that we fixed the other bugs a bit too good, it seems. DJ's original version (as of V2.final) didn't exhibit this bug because it was hidden behind the other ones: for ptr==0, the return value of _innum was ignored completely, but now it is respected properly. But for ptr==0, both _instr and _innum always returned 'failure', even if the matching process worked flawlessly. I changed that (see patch for details, it is relative to my patched version from bug 68). Surprisingly enough, this bug would have never gone by unnoticed the last time Alex and I looked at doscan.c, if only I had ever used this changed version in a complete library rebuild (including the utilities), because this bug breaks mkdoc completely (generated libc2.tex lacks all the references)! Maybe I should re-check my checking methods :-) If you find yet another bug, please tell me (or Alexander Lukyanov, or someone else who can fix it), for yet another chapter to be added to this tale. If this is all nonsense in your opinion, tell me as well. Hans-Bernhard Br"oker (new adress! ---> broeker AT physik DOT rwth-aachen DOT de ) --- dosc_hbb.c Thu Apr 11 10:40:50 1996 +++ doscan.c Tue Jun 4 23:26:18 1996 @@ -234,8 +234,10 @@ } else *eofptr = 1; nchars--; - if (ptr==NULL || np==numbuf || (negflg && np==numbuf+1) ) /* gene dykes*/ + if (np==numbuf || (negflg && np==numbuf+1) ) /* gene dykes*/ return(0); + if (ptr==0) /* HBB: shouldn't report 'failed' just because ptr==0 */ + return(1); *np++ = 0; switch((scale<<4) | size) { @@ -315,7 +317,7 @@ *ptr++ = '\0'; return(1); } - return(0); + return(ptr==0); /* HBB: shouldn't report 'failed' just because ptr==0 */ } static const char *