chiark
/
gitweb
/
~ianmdlvl
/
adns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
+ * Many memory leaks fixed.
[adns.git]
/
src
/
setup.c
diff --git
a/src/setup.c
b/src/setup.c
index ba80f14a66a1dceda08929efc80f795eeb0e1982..e19a70536b2753a62debb6268492010e8c9b0551 100644
(file)
--- a/
src/setup.c
+++ b/
src/setup.c
@@
-62,6
+62,11
@@
static void addserver(adns_state ads, struct in_addr addr) {
ads->nservers++;
}
ads->nservers++;
}
+static void freesearchlist(adns_state ads) {
+ if (ads->nsearchlist) free(*ads->searchlist);
+ free(ads->searchlist);
+}
+
static void saveerr(adns_state ads, int en) {
if (!ads->configerrno) ads->configerrno= en;
}
static void saveerr(adns_state ads, int en) {
if (!ads->configerrno) ads->configerrno= en;
}
@@
-133,7
+138,7
@@
static void ccf_search(adns_state ads, const char *fn, int lno, const char *buf)
*newchars++ = 0;
}
*newchars++ = 0;
}
- free
(ads->searchlist
);
+ free
searchlist(ads
);
ads->nsearchlist= count;
ads->searchlist= newptrs;
}
ads->nsearchlist= count;
ads->searchlist= newptrs;
}
@@
-517,7
+522,7
@@
static void init_abort(adns_state ads) {
free(ads);
}
free(ads);
}
-int adns_init(adns_state *ads_r,
int
flags, FILE *diagfile) {
+int adns_init(adns_state *ads_r,
adns_initflags
flags, FILE *diagfile) {
adns_state ads;
const char *res_options, *adns_res_options;
int r;
adns_state ads;
const char *res_options, *adns_res_options;
int r;
@@
-557,7
+562,7
@@
int adns_init(adns_state *ads_r, int flags, FILE *diagfile) {
return 0;
}
return 0;
}
-int adns_init_strcfg(adns_state *ads_r,
int
flags,
+int adns_init_strcfg(adns_state *ads_r,
adns_initflags
flags,
FILE *diagfile, const char *configtext) {
adns_state ads;
int r;
FILE *diagfile, const char *configtext) {
adns_state ads;
int r;
@@
-591,6
+596,7
@@
void adns_finish(adns_state ads) {
if (ads->tcpsocket >= 0) close(ads->tcpsocket);
adns__vbuf_free(&ads->tcpsend);
adns__vbuf_free(&ads->tcprecv);
if (ads->tcpsocket >= 0) close(ads->tcpsocket);
adns__vbuf_free(&ads->tcpsend);
adns__vbuf_free(&ads->tcprecv);
+ freesearchlist(ads);
free(ads);
}
free(ads);
}