From 008c07e4063122e1bc86ee38a4b43c6086d6da9b Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 26 May 2011 22:14:49 +0300 Subject: Fix FPAT / NF interaction, update test suites. --- field.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'field.c') diff --git a/field.c b/field.c index 8ede8744..151fea68 100644 --- a/field.c +++ b/field.c @@ -884,8 +884,19 @@ get_field(long requested, Func_ptr *assign) * reference to the field and NF only gets set if the field * is assigned to -- this case is handled below */ - if (parse_extent >= fields_arr[0]->stptr + fields_arr[0]->stlen) + if (parse_extent == fields_arr[0]->stptr + fields_arr[0]->stlen) NF = parse_high_water; + else if (parse_field == fpat_parse_field) { + /* FPAT parsing is wierd, isolate the special cases */ + char *rec_start = fields_arr[0]->stptr; + char *rec_end = fields_arr[0]->stptr + fields_arr[0]->stlen; + + if ( parse_extent > rec_end + || (parse_extent > rec_start && parse_extent < rec_end)) + NF = parse_high_water; + else if (parse_extent == rec_start) /* could be no match for FPAT */ + NF = 0; + } if (requested == UNLIMITED - 1) /* UNLIMITED-1 means set NF */ requested = parse_high_water; } -- cgit v1.2.3