X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/180a565ffb443a3c9430bd04e7bbb1963e239412..4ef59e97312cf3e8f537643c65bc2fef057b786b:/src/output.c diff --git a/src/output.c b/src/output.c index 047fc64..c0438e6 100644 --- a/src/output.c +++ b/src/output.c @@ -25,8 +25,6 @@ #include "parse.h" #include "specstr.h" -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - size_t cdecl__advance(struct output_state *dst, size_t amount) { size_t x = MIN(amount, dst->dstlen); @@ -40,9 +38,15 @@ size_t cdecl__advance(struct output_state *dst, size_t amount) size_t cdecl__strlcpy(char *dst, const char *src, size_t dstlen) { - if (dst) - snprintf(dst, dstlen, "%s", src); - return strlen(src); + size_t srclen = strlen(src); + + if (dstlen > 0) { + memcpy(dst, src, MIN(dstlen, srclen+1)); + if (dstlen <= srclen) + dst[dstlen-1] = 0; + } + + return srclen; } size_t cdecl__emit(struct output_state *dst, const char *src)