aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libstddjb/sals.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libstddjb/sals.c b/src/libstddjb/sals.c
index f6b2aa1..f3b2e08 100644
--- a/src/libstddjb/sals.c
+++ b/src/libstddjb/sals.c
@@ -12,6 +12,7 @@ int sals (char const *fn, stralloc *sa, size_t *x)
int n = 0 ;
size_t sabase = sa->len ;
size_t maxlen = 0 ;
+ int wasnull = !sa->s ;
DIR *dir = opendir(fn) ;
if (!dir) return -1 ;
for (;;)
@@ -36,6 +37,7 @@ int sals (char const *fn, stralloc *sa, size_t *x)
err:
dir_close(dir) ;
- sa->len = sabase ;
+ if (wasnull) stralloc_free(sa) ;
+ else sa->len = sabase ;
return -1 ;
}