Commit Diff


commit - f91a2b483b4be113fca62a06cd1c43795052af81
commit + 8331683470d6461305fa990d167c7f9b3be031e2
blob - 8fe2c6de3560c3d5226e2d23a8e6dd5b3abb381f
blob + 4f087d68637fa1841d7e7bedb7c5e2c6b3f5ad99
--- tog/tog.c
+++ tog/tog.c
@@ -1239,7 +1239,7 @@ expand_tab(char **ptr, const char *src)
 
 	*ptr = NULL;
 	n = len = strlen(src);
-	dst = malloc((n + 1) * sizeof(char));
+	dst = malloc(n + 1);
 	if (dst == NULL)
 		return got_error_from_errno("malloc");
 
@@ -1248,11 +1248,15 @@ expand_tab(char **ptr, const char *src)
 
 		if (c == '\t') {
 			size_t nb = TABSIZE - sz % TABSIZE;
+			char *p = realloc(dst, n + nb);
+			if (p == NULL) {
+				free(dst);
+				return got_error_from_errno("realloc");
+
+			}
+			dst = p;
 			n += nb;
-			dst = reallocarray(dst, n, sizeof(char));
-			if (dst == NULL)
-				return got_error_from_errno("reallocarray");
-			memcpy(dst + sz, "        ", nb);
+			memset(dst + sz, ' ', nb);
 			sz += nb;
 		} else
 			dst[sz++] = src[idx];