Mercurial > hg > th-libs
changeset 559:6021ef8fc341
Return proper THERR_ error codes from th_pstr_*()
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 05 Jan 2020 20:17:59 +0200 |
parents | 7b7872212afd |
children | 414755d33796 |
files | th_string.c |
diffstat | 1 files changed, 18 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/th_string.c Sun Jan 05 10:47:04 2020 +0200 +++ b/th_string.c Sun Jan 05 20:17:59 2020 +0200 @@ -450,14 +450,17 @@ assert(pdst != NULL); if (src == NULL) - return -1; + return THERR_NULLPTR; th_free(*pdst); - if ((*pdst = th_malloc(strlen(src) + 1)) == NULL) - return -2; - strcpy(*pdst, src); - return 0; + size_t slen = strlen(src); + if ((*pdst = th_malloc(slen + 1)) == NULL) + return THERR_MALLOC; + + memcpy(*pdst, src, slen + 1); + + return THERR_OK; } @@ -468,26 +471,26 @@ assert(pdst != NULL); if (src == NULL) - return -1; + return THERR_NULLPTR; if (*pdst != NULL) { - *pdst = th_realloc(*pdst, strlen(*pdst) + strlen(src) + 1); - if (*pdst == NULL) - return -1; + size_t dlen = strlen(*pdst), slen = strlen(src); + if ((*pdst = th_realloc(*pdst, dlen + slen + 1)) == NULL) + return THERR_MALLOC; - strcat(*pdst, src); + memcpy((*pdst) + dlen, src, slen + 1); } else { - *pdst = th_malloc(strlen(src) + 1); - if (*pdst == NULL) - return -1; + size_t slen = strlen(src); + if ((*pdst = th_malloc(slen + 1)) == NULL) + return THERR_MALLOC; - strcpy(*pdst, src); + memcpy(*pdst, src, slen + 1); } - return 0; + return THERR_OK; }