diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-09-01 22:44:44 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-09-01 22:44:44 +0300 |
commit | fb838ec318104f66a36e59f71ffb4f9eaa9b2eaa (patch) | |
tree | 144d88026bf6a306c39a6931f309e12d998a0ba8 /builtin.c | |
parent | ba1e7ab66563efb5b597a418e2e9fb4a01998d03 (diff) | |
parent | 2783f2c7d4e52fa7accfba7b847c416d8c71cd0f (diff) | |
download | egawk-fb838ec318104f66a36e59f71ffb4f9eaa9b2eaa.tar.gz egawk-fb838ec318104f66a36e59f71ffb4f9eaa9b2eaa.tar.bz2 egawk-fb838ec318104f66a36e59f71ffb4f9eaa9b2eaa.zip |
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 'builtin.c')
-rw-r--r-- | builtin.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -1759,7 +1759,14 @@ do_substr(int nargs) else if (do_lint == DO_LINT_INVALID && ! (d_length >= 0)) lintwarn(_("substr: length %g is not >= 0"), d_length); DEREF(t1); - return dupnode(Nnull_string); + /* + * Return explicit null string instead of doing + * dupnode(Nnull_string) so that if the result + * is checked with the combination of length() + * and lint, no error is reported about using + * an uninitialized value. Same thing later, too. + */ + return make_string("", 0); } if (do_lint) { if (double_to_int(d_length) != d_length) @@ -1813,7 +1820,7 @@ do_substr(int nargs) if (do_lint && (do_lint == DO_LINT_ALL || ((indx | length) != 0))) lintwarn(_("substr: source string is zero length")); DEREF(t1); - return dupnode(Nnull_string); + return make_string("", 0); } /* get total len of input string, for following checks */ @@ -1830,7 +1837,7 @@ do_substr(int nargs) lintwarn(_("substr: start index %g is past end of string"), d_index); DEREF(t1); - return dupnode(Nnull_string); + return make_string("", 0); } if (length > src_len - indx) { if (do_lint) |