gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 953f97ddd184f3


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 953f97ddd184f3dfb1ce16ee2965012965b17fac
Date: Sun, 02 Oct 2011 18:22:34 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.0-stable has been updated
       via  953f97ddd184f3dfb1ce16ee2965012965b17fac (commit)
      from  8dbfb49319c538b0682d4dbcc977ba5b811b86b0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=953f97ddd184f3dfb1ce16ee2965012965b17fac

commit 953f97ddd184f3dfb1ce16ee2965012965b17fac
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Oct 2 20:21:29 2011 +0200

    Fix RT handling if partial terminators.

diff --git a/ChangeLog b/ChangeLog
index 2d70417..6bf7901 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-10-02         Arnold D. Robbins     <address@hidden>
+
+       * io.c (rsnullscan, get_a_record): Fix the cases where terminators
+       are incomplete when RS == "". Also fix the case where the new value
+       is shorter than the old one.  Based on patch from Rogier
+       <address@hidden> as submitted by Jeroen Schot
+       <address@hidden>.
+
 2011-09-24         Arnold D. Robbins     <address@hidden>
 
        * eval.c, io.c, re.c: Fix some spelling errors. Thanks to
diff --git a/io.c b/io.c
index bece1a5..df79499 100644
--- a/io.c
+++ b/io.c
@@ -2870,8 +2870,12 @@ scan_data:
        while (*bp++ != '\n')
                continue;
 
-       if (bp >= iop->dataend) {       /* no terminator */
+       if (bp >= iop->dataend) {       /* no full terminator */
                iop->scanoff = recm->len = bp - iop->off - 1;
+               if (bp == iop->dataend) {       /* half a terminator */
+                       recm->rt_start = bp - 1;
+                       recm->rt_len = 1;
+               }
                *state = INDATA;
                return NOTERM;
        }
@@ -3042,9 +3046,10 @@ get_a_record(char **out,        /* pointer to pointer to 
data */
                        /* else
                                leave it alone */
                } else if (matchrec == rsnullscan) {
-                       if (rtval->stlen <= recm.rt_len)
+                       if (rtval->stlen >= recm.rt_len) {
                                rtval->stlen = recm.rt_len;
-                       else
+                               free_wstr(rtval);
+                       } else
                                set_RT(recm.rt_start, recm.rt_len);
                } else
                        set_RT(recm.rt_start, recm.rt_len);
diff --git a/test/ChangeLog b/test/ChangeLog
index 8c165b0..21224fd 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,10 @@
+2011-10-02         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am (rtlen, rtlen01, rtlenmb): New tests.
+       * rtlen.ok, rtlen.sh, rtlen01.ok, rtlen01.sh: New files.
+       Thanks to Rogier <address@hidden> as forwarded by
+       Jeroen Schot <address@hidden>.
+
 2011-08-10         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (beginfile2, fpat3, fwtest3): New tests.
diff --git a/test/Makefile.am b/test/Makefile.am
index 3d259af..57d4d46 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -655,6 +655,10 @@ EXTRA_DIST = \
        rswhite.awk \
        rswhite.in \
        rswhite.ok \
+       rtlen.ok \
+       rtlen.sh \
+       rtlen01.ok \
+       rtlen01.sh \
        scalar.awk \
        scalar.ok \
        sclforin.awk \
@@ -808,7 +812,8 @@ BASIC_TESTS = \
        wjposer1 zero2 zeroe0 zeroflag
 
 UNIX_TESTS = \
-       fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng
+       fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
+       space strftlng
 
 GAWK_EXT_TESTS = \
        aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
@@ -834,7 +839,7 @@ MACHINE_TESTS = double1 double2 fmtspcl intformat
 
 LOCALE_CHARSET_TESTS = \
        asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
-       mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc
+       mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
 
 # List of the tests which should be run with --lint option:
 NEED_LINT = \
@@ -1264,6 +1269,22 @@ rsstart3::
        @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+rtlen::
+       @echo $@
+       @$(srcdir)/address@hidden >_$@ || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+rtlen01::
+       @echo $@
+       @$(srcdir)/address@hidden >_$@ || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+rtlenmb::
+       @echo $@
+       @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+       $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@
+
 nondec2::
        @echo $@
        @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/address@hidden >_$@
diff --git a/test/Makefile.in b/test/Makefile.in
index 3dd318f..e5ff200 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -840,6 +840,10 @@ EXTRA_DIST = \
        rswhite.awk \
        rswhite.in \
        rswhite.ok \
+       rtlen.ok \
+       rtlen.sh \
+       rtlen01.ok \
+       rtlen01.sh \
        scalar.awk \
        scalar.ok \
        sclforin.awk \
@@ -993,7 +997,8 @@ BASIC_TESTS = \
        wjposer1 zero2 zeroe0 zeroflag
 
 UNIX_TESTS = \
-       fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng
+       fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \
+       space strftlng
 
 GAWK_EXT_TESTS = \
        aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
@@ -1016,7 +1021,7 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht
 MACHINE_TESTS = double1 double2 fmtspcl intformat
 LOCALE_CHARSET_TESTS = \
        asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
-       mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc
+       mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
 
 
 # List of the tests which should be run with --lint option:
@@ -1615,6 +1620,22 @@ rsstart3::
        @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+rtlen::
+       @echo $@
+       @$(srcdir)/address@hidden >_$@ || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+rtlen01::
+       @echo $@
+       @$(srcdir)/address@hidden >_$@ || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+rtlenmb::
+       @echo $@
+       @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+       $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@
+
 nondec2::
        @echo $@
        @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/address@hidden >_$@
diff --git a/test/rtlen.ok b/test/rtlen.ok
new file mode 100644
index 0000000..b8a484d
--- /dev/null
+++ b/test/rtlen.ok
@@ -0,0 +1,3 @@
+3
+5
+2
diff --git a/test/rtlen.sh b/test/rtlen.sh
new file mode 100755
index 0000000..4a74045
--- /dev/null
+++ b/test/rtlen.sh
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+AWK=${AWK:-../gawk}
+
+$AWK 'BEGIN {printf "0\n\n\n1\n\n\n\n\n2\n\n"; exit}' | $AWK 'BEGIN {RS=""}; 
{print length(RT)}'
diff --git a/test/rtlen01.ok b/test/rtlen01.ok
new file mode 100644
index 0000000..4539bbf
--- /dev/null
+++ b/test/rtlen01.ok
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/test/rtlen01.sh b/test/rtlen01.sh
new file mode 100755
index 0000000..72156d9
--- /dev/null
+++ b/test/rtlen01.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+AWK=${AWK:-../gawk}
+
+$AWK 'BEGIN {printf "0"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
+$AWK 'BEGIN {printf "0\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
+$AWK 'BEGIN {printf "0\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}'
+

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                        |    8 ++++++++
 io.c                             |   11 ++++++++---
 test/ChangeLog                   |    7 +++++++
 test/Makefile.am                 |   25 +++++++++++++++++++++++--
 test/Makefile.in                 |   25 +++++++++++++++++++++++--
 test/{reg/exp-eq.in => rtlen.ok} |    4 ++--
 test/rtlen.sh                    |    5 +++++
 test/{nulrsend.ok => rtlen01.ok} |    1 +
 test/rtlen01.sh                  |    8 ++++++++
 9 files changed, 85 insertions(+), 9 deletions(-)
 copy test/{reg/exp-eq.in => rtlen.ok} (66%)
 create mode 100755 test/rtlen.sh
 copy test/{nulrsend.ok => rtlen01.ok} (66%)
 create mode 100755 test/rtlen01.sh


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]