summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2016-10-31 22:01:07 +0200
committerArnold D. Robbins <arnold@skeeve.com>2016-10-31 22:01:07 +0200
commit8b53f112695811f94286e38ebc9aedff53262ae7 (patch)
treed228956db17996346f78fcfa44c6449cb08bdd6e
parent98c0170d6c4280b36129186cc4b75da6e31bc91b (diff)
parenta4d313ca20a63d28b7a2020e6897f4e3e04dae6e (diff)
downloadgawk-8b53f112695811f94286e38ebc9aedff53262ae7.tar.gz
Merge branch 'master' into feature/fixtype
-rw-r--r--ChangeLog8
-rw-r--r--README_d/ChangeLog5
-rw-r--r--README_d/README.aix9
-rw-r--r--README_d/README.zLinux2
-rw-r--r--awkgram.c7
-rw-r--r--awkgram.y7
-rw-r--r--io.c5
7 files changed, 38 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index e8ee59de..c8cd56e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-10-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix valgrind issues.
+
+ * io.c (init_awkpath): Need to allocate max_path+3 pointers.
+ * awkgram.y (make_profile_number): Need to add STRCUR flag and
+ set n->stfmt to STFMT_UNUSED. See the comment in the code.
+
2016-10-26 Arnold D. Robbins <arnold@skeeve.com>
* io.c (init_awkpath): Set max path len for leading separator.
diff --git a/README_d/ChangeLog b/README_d/ChangeLog
index f87e7a29..496195f9 100644
--- a/README_d/ChangeLog
+++ b/README_d/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-31 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README.aix: New file.
+ * README.zLinux: Typo fix.
+
2016-08-25 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.4: Release tar ball made.
diff --git a/README_d/README.aix b/README_d/README.aix
new file mode 100644
index 00000000..eb686fe6
--- /dev/null
+++ b/README_d/README.aix
@@ -0,0 +1,9 @@
+Mon Oct 31 21:54:05 IST 2016
+============================
+
+To compile gawk 4.1.4 correctly with IBM's xlc compiler, you need to
+use the -qalias=noansi command line option. Otherwise the compiler
+makes incorrect optimizations and the resulting binary core dumps
+on many tests.
+
+Thanks to Tony Reix (tony.reix@atos.net) for the info.
diff --git a/README_d/README.zLinux b/README_d/README.zLinux
index 2ff18fff..e9dbcb60 100644
--- a/README_d/README.zLinux
+++ b/README_d/README.zLinux
@@ -6,7 +6,7 @@ before compiling:
1. Run configure.
2. Edit the top-level Makefile and extension/Makefile and change -O2 to -O1.
-3. Run `make && make' check as usual.
+3. Run `make && make check' as usual.
If you don't change the optimization level, the testext test will fail.
diff --git a/awkgram.c b/awkgram.c
index 0ad0fac8..78839fe9 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -8619,7 +8619,12 @@ make_profile_number(double d, const char *str, size_t len)
n->stptr = estrdup(str, len + 1);
n->stptr[len] = '\0';
n->stlen = len;
- n->flags |= NUMCONSTSTR;
+ // Set STRCUR and n->stfmt for use when profiling
+ // (i.e., actually running the program) so that
+ // force_string() on this item will work ok.
+ // Thanks and a tip of the hatlo to valgrind.
+ n->flags |= (NUMCONSTSTR|STRCUR);
+ n->stfmt = STFMT_UNUSED;
}
return n;
diff --git a/awkgram.y b/awkgram.y
index a36e1792..4ed1e78b 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -6242,7 +6242,12 @@ make_profile_number(double d, const char *str, size_t len)
n->stptr = estrdup(str, len + 1);
n->stptr[len] = '\0';
n->stlen = len;
- n->flags |= NUMCONSTSTR;
+ // Set STRCUR and n->stfmt for use when profiling
+ // (i.e., actually running the program) so that
+ // force_string() on this item will work ok.
+ // Thanks and a tip of the hatlo to valgrind.
+ n->flags |= (NUMCONSTSTR|STRCUR);
+ n->stfmt = STFMT_UNUSED;
}
return n;
diff --git a/io.c b/io.c
index f67df9d6..354420b1 100644
--- a/io.c
+++ b/io.c
@@ -2741,8 +2741,9 @@ init_awkpath(path_info *pi)
if (*p == envsep)
max_path++;
- emalloc(pi->awkpath, char **, (max_path + 1) * sizeof(char *), "init_awkpath");
- memset(pi->awkpath, 0, (max_path + 1) * sizeof(char *));
+ // +3 --> 2 for null entries at front and end of path, 1 for NULL end of list
+ emalloc(pi->awkpath, char **, (max_path + 3) * sizeof(char *), "init_awkpath");
+ memset(pi->awkpath, 0, (max_path + 3) * sizeof(char *));
start = path;
i = 0;