diff options
author | KO Myung-Hun <komh@chollian.net> | 2014-12-09 20:46:11 +0000 |
---|---|---|
committer | Gary V. Vaughan <gary@gnu.org> | 2014-12-09 20:46:11 +0000 |
commit | bef10ccba44e1689551324d68926444fce39b455 (patch) | |
tree | f5c5337317836118cc14090e61d7dc455563ba66 | |
parent | fa1b673a452f5c7874cb5dd2610b5238cedc4d65 (diff) | |
download | m4-bef10ccba44e1689551324d68926444fce39b455.tar.gz |
libm4: fix path_truncate() regressions on OS/2.
* m4/path.c (m4_path_search): Ensure that a null-terminator is
appended. Re-calculate a length of path after path_truncate().
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
-rw-r--r-- | m4/path.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -162,8 +162,6 @@ path_truncate (char *path) return path; } -#else -# define path_truncate(path) (path) #endif @@ -226,7 +224,11 @@ m4_path_search (m4 *context, const char *filename, const char **suffixes) size_t mem = strlen (filename); /* Try appending each of the suffixes we were given. */ - filepath = path_truncate (strncpy (xmalloc (mem + max_suffix_len +1), filename, mem)); + filepath = strncpy (xmalloc (mem + max_suffix_len +1), filename, mem +1); +#if FILE_TRUNCATE + filepath = path_truncate (filepath); + mem = strlen (filepath); /* recalculate length after truncation */ +#endif for (i = 0; suffixes && suffixes[i]; ++i) { strcpy (filepath + mem, suffixes[i]); @@ -267,9 +269,13 @@ m4_path_search (m4 *context, const char *filename, const char **suffixes) /* Capture errno only when searching `.'. */ e = errno; - filepath = path_truncate (strncpy (xmalloc (mem + max_suffix_len +1), pathname, mem)); + filepath = strncpy (xmalloc (mem + max_suffix_len +1), pathname, mem +1); free (pathname); - +#if FILE_TRUNCATE + filepath = path_truncate (filepath); + mem = strlen (filepath); /* recalculate length after truncation */ +#endif + for (i = 0; suffixes && suffixes[i]; ++i) { strcpy (filepath + mem, suffixes[i]); |