diff options
author | night199uk <night199uk@hermitcrabslab.com> | 2018-10-18 23:19:47 +0200 |
---|---|---|
committer | Cyrill Gorcunov <gorcunov@gmail.com> | 2018-10-19 01:00:11 +0300 |
commit | fdb1a1b15130d858d51916cca7e09a2566c4b69f (patch) | |
tree | bc9a909a12e64bebee76f573822e3353015ffab0 | |
parent | e1bd3bc7b497d58efc1c7a5c56dbc591d5be880f (diff) | |
download | nasm-fdb1a1b15130d858d51916cca7e09a2566c4b69f.tar.gz |
preproc: Make the preprocessor use nasm_catfile for include
All include paths to nasm must already have a trailing separator
prefix which is uncommon among tools. Change to using nasm_catfile
which gives a more normal behaviour.
https://bugzilla.nasm.us/show_bug.cgi?id=3392205
Signed-off-by: night199uk <night199uk@hermitcrabslab.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
-rw-r--r-- | asm/preproc.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/asm/preproc.c b/asm/preproc.c index cdf03bc1..0174c9ab 100644 --- a/asm/preproc.c +++ b/asm/preproc.c @@ -1515,19 +1515,18 @@ static FILE *inc_fopen_search(const char *file, StrList **slpath, FILE *fp; char *prefix = ""; const IncPath *ip = ipath; - int len = strlen(file); - size_t prefix_len = 0; + int len; StrList *sl; - size_t path_len; + char *sp; bool found; while (1) { - path_len = prefix_len + len + 1; - - sl = nasm_malloc(path_len + sizeof sl->next); - memcpy(sl->str, prefix, prefix_len); - memcpy(sl->str+prefix_len, file, len+1); + sp = nasm_catfile(prefix, file); + len = strlen(sp) + 1; + sl = nasm_malloc(len + sizeof sl->next); + memcpy(sl->str, sp, len); sl->next = NULL; + nasm_free(sp); if (omode == INC_PROBE) { fp = NULL; @@ -1547,7 +1546,6 @@ static FILE *inc_fopen_search(const char *file, StrList **slpath, return NULL; prefix = ip->path; - prefix_len = strlen(prefix); ip = ip->next; } } |