summaryrefslogtreecommitdiff
path: root/lib/tests/t_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tests/t_api.c')
-rw-r--r--lib/tests/t_api.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/tests/t_api.c b/lib/tests/t_api.c
index 40113751..26406315 100644
--- a/lib/tests/t_api.c
+++ b/lib/tests/t_api.c
@@ -514,12 +514,12 @@ t_fgetbs(FILE *fp) {
int c;
size_t n;
size_t size;
- char *buf;
+ char *buf, *old;
char *p;
- n = 0;
- size = T_BUFSIZ;
- buf = (char *) malloc(T_BUFSIZ * sizeof(char));
+ n = 0;
+ size = T_BUFSIZ;
+ old = buf = (char *) malloc(T_BUFSIZ * sizeof(char));
if (buf != NULL) {
p = buf;
@@ -535,7 +535,8 @@ t_fgetbs(FILE *fp) {
buf = (char *)realloc(buf,
size * sizeof(char));
if (buf == NULL)
- break;
+ goto err;
+ old = buf;
p = buf + n;
}
}
@@ -546,7 +547,10 @@ t_fgetbs(FILE *fp) {
}
return (buf);
} else {
- fprintf(stderr, "malloc failed %d", errno);
+ err:
+ if (old != NULL)
+ free(old);
+ fprintf(stderr, "malloc/realloc failed %d", errno);
return(NULL);
}
}