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;
 }