diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | awkgram.c | 7 | ||||
-rw-r--r-- | awkgram.y | 7 | ||||
-rw-r--r-- | io.c | 5 |
4 files changed, 23 insertions, 4 deletions
@@ -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. @@ -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; @@ -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; @@ -2742,8 +2742,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; |