diff --git a/asm/nasm.c b/asm/nasm.c index 6af92754..1e337c7b 100644 --- a/asm/nasm.c +++ b/asm/nasm.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- * * - * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * Copyright 1996-2022 The NASM Authors - All Rights Reserved * See the file AUTHORS included with the NASM distribution for * the specific copyright holders. * @@ -817,8 +817,7 @@ static char *quote_for_pmake(const char *str) } /* Convert N backslashes at the end of filename to 2N backslashes */ - if (nbs) - n += nbs; + n += nbs; os = q = nasm_malloc(n); @@ -827,10 +826,10 @@ static char *quote_for_pmake(const char *str) switch (*p) { case ' ': case '\t': - while (nbs--) - *q++ = '\\'; + q = mempset(q, '\\', nbs); *q++ = '\\'; *q++ = *p; + nbs = 0; break; case '$': *q++ = *p; @@ -852,9 +851,8 @@ static char *quote_for_pmake(const char *str) break; } } - while (nbs--) - *q++ = '\\'; + q = mempset(q, '\\', nbs); *q = '\0'; return os; diff --git a/configure.ac b/configure.ac index 04a9f648..42cd1988 100644 --- a/configure.ac +++ b/configure.ac @@ -200,6 +200,7 @@ AC_CHECK_FUNCS(strrchrnul) AC_CHECK_FUNCS(iscntrl) AC_CHECK_FUNCS(isascii) AC_CHECK_FUNCS(mempcpy) +AC_CHECK_FUNCS(mempset) AC_CHECK_FUNCS(getuid) AC_CHECK_FUNCS(getgid) diff --git a/include/compiler.h b/include/compiler.h index c5bac6e5..407c1609 100644 --- a/include/compiler.h +++ b/include/compiler.h @@ -252,6 +252,13 @@ static inline void *mempcpy(void *dst, const void *src, size_t n) } #endif +#ifndef HAVE_MEMPSET +static inline void *mempset(void *dst, int c, size_t n) +{ + return (char *)memset(dst, c, n) + n; +} +#endif + /* * Hack to support external-linkage inline functions */