939 |
|
static void |
940 |
|
passinp(void) /* pass beginning to current position */ |
941 |
|
{ |
942 |
< |
if (!passive | (ipb.beg == NULL)) { |
943 |
< |
advinp(); |
942 |
> |
if (!passive) { |
943 |
> |
advinp(); /* mistake to call us */ |
944 |
|
return; |
945 |
|
} |
946 |
+ |
if (ipb.beg == NULL) /* buffer overflowed a bit */ |
947 |
+ |
ipb.beg = ipb.end; |
948 |
|
while (ipb.beg != ipb.pos) { /* transfer buffer unaltered */ |
949 |
|
putchar(*ipb.beg); |
950 |
|
if (++ipb.beg >= &inpbuf[INBSIZ]) |
956 |
|
static void |
957 |
|
skipinp(void) /* rewind position and advance 1 */ |
958 |
|
{ |
959 |
< |
if (ipb.beg == NULL) /* full */ |
959 |
> |
if (ipb.beg == NULL) /* overflow - can't fully rewind */ |
960 |
|
ipb.beg = ipb.end; |
961 |
|
ipb.pos = ipb.beg; |
962 |
|
ipb.chr = *ipb.pos; |