fixed memory leaks
This commit is contained in:
54
Makefile
54
Makefile
@@ -218,24 +218,24 @@ distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = ${SHELL} /home/ziggi/projects/jcomp/missing aclocal
|
||||
ACLOCAL = ${SHELL} /home/ziggi/Projects/jcomp/missing aclocal
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
APP_CACHEDIR = /home/ziggi/projects/jcomp/cache
|
||||
APP_CONFIGDIR = /home/ziggi/projects/jcomp/
|
||||
APP_DATABASEDIR = /home/ziggi/projects/jcomp/data
|
||||
APP_LIBDIR = /home/ziggi/projects/jcomp/lib
|
||||
APP_LOGDIR = /home/ziggi/projects/jcomp/log
|
||||
APP_RUNDIR = /home/ziggi/projects/jcomp/run
|
||||
APP_CACHEDIR = /home/ziggi/Projects/jcomp/cache
|
||||
APP_CONFIGDIR = /home/ziggi/Projects/jcomp/
|
||||
APP_DATABASEDIR = /home/ziggi/Projects/jcomp/data
|
||||
APP_LIBDIR = /home/ziggi/Projects/jcomp/lib
|
||||
APP_LOGDIR = /home/ziggi/Projects/jcomp/log
|
||||
APP_RUNDIR = /home/ziggi/Projects/jcomp/run
|
||||
APP_USER = ziggi
|
||||
AUTOCONF = ${SHELL} /home/ziggi/projects/jcomp/missing autoconf
|
||||
AUTOHEADER = ${SHELL} /home/ziggi/projects/jcomp/missing autoheader
|
||||
AUTOMAKE = ${SHELL} /home/ziggi/projects/jcomp/missing automake
|
||||
AUTOCONF = ${SHELL} /home/ziggi/Projects/jcomp/missing autoconf
|
||||
AUTOHEADER = ${SHELL} /home/ziggi/Projects/jcomp/missing autoheader
|
||||
AUTOMAKE = ${SHELL} /home/ziggi/Projects/jcomp/missing automake
|
||||
AWK = gawk
|
||||
CC = clang
|
||||
CCDEPMODE = depmode=none
|
||||
CFLAGS = -g -O2
|
||||
CP = /bin/cp
|
||||
CP = /usr/local/bin/gcp
|
||||
CPPFLAGS =
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
@@ -254,7 +254,7 @@ LDFLAGS =
|
||||
LIBOBJS =
|
||||
LIBS =
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/ziggi/projects/jcomp/missing makeinfo
|
||||
MAKEINFO = ${SHELL} /home/ziggi/Projects/jcomp/missing makeinfo
|
||||
MKDIR_P = /usr/local/bin/gmkdir -p
|
||||
OBJEXT = o
|
||||
PACKAGE = cworker
|
||||
@@ -268,24 +268,25 @@ PATH_SEPARATOR = :
|
||||
SET_MAKE =
|
||||
SHELL = /bin/sh
|
||||
STRIP =
|
||||
VALGRIND = /usr/local/bin/valgrind
|
||||
VERSION = 0.0.1
|
||||
abs_builddir = /home/ziggi/projects/jcomp
|
||||
abs_srcdir = /home/ziggi/projects/jcomp
|
||||
abs_top_builddir = /home/ziggi/projects/jcomp
|
||||
abs_top_srcdir = /home/ziggi/projects/jcomp
|
||||
abs_builddir = /home/ziggi/Projects/jcomp
|
||||
abs_srcdir = /home/ziggi/Projects/jcomp
|
||||
abs_top_builddir = /home/ziggi/Projects/jcomp
|
||||
abs_top_srcdir = /home/ziggi/Projects/jcomp
|
||||
ac_ct_CC = clang
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = $${TAR-tar} chof - "$$tardir"
|
||||
am__untar = $${TAR-tar} xf -
|
||||
app_cachedir = /home/ziggi/projects/jcomp/cache
|
||||
app_configdir = /home/ziggi/projects/jcomp/
|
||||
app_databasedir = /home/ziggi/projects/jcomp/data
|
||||
app_libdir = /home/ziggi/projects/jcomp/lib
|
||||
app_logdir = /home/ziggi/projects/jcomp/log
|
||||
app_cachedir = /home/ziggi/Projects/jcomp/cache
|
||||
app_configdir = /home/ziggi/Projects/jcomp/
|
||||
app_databasedir = /home/ziggi/Projects/jcomp/data
|
||||
app_libdir = /home/ziggi/Projects/jcomp/lib
|
||||
app_logdir = /home/ziggi/Projects/jcomp/log
|
||||
app_name = cworker
|
||||
app_rundir = /home/ziggi/projects/jcomp/run
|
||||
app_rundir = /home/ziggi/Projects/jcomp/run
|
||||
app_user = ziggi
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = amd64-unknown-freebsd12.4
|
||||
@@ -307,7 +308,7 @@ host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = ${SHELL} /home/ziggi/projects/jcomp/install-sh
|
||||
install_sh = ${SHELL} /home/ziggi/Projects/jcomp/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
@@ -353,6 +354,7 @@ common_SOURCES = \
|
||||
rcache.c \
|
||||
rcache.h
|
||||
|
||||
#VALGRIND_OPT = --tool=memcheck
|
||||
bin_TESTS = \
|
||||
cflexer_test \
|
||||
cfparser_test \
|
||||
@@ -875,9 +877,9 @@ run: $(sbin_PROGRAMS)
|
||||
|
||||
test: $(bin_TESTS)
|
||||
@for test in $(bin_TESTS); do \
|
||||
echo === Test $${test} ==; \
|
||||
./$${test}; \
|
||||
echo === Done $${test} ==; \
|
||||
echo ======= Test $${test} ======; \
|
||||
$(VALGRIND) $(VALGRIND_OPT) ./$${test}; \
|
||||
echo ====== Done $${test} ======; \
|
||||
done
|
||||
|
||||
clean-local:
|
||||
|
||||
10
Makefile.am
10
Makefile.am
@@ -37,11 +37,15 @@ common_SOURCES = \
|
||||
run: $(sbin_PROGRAMS)
|
||||
./cworker
|
||||
|
||||
if HAVE_VALGRIND
|
||||
VALGRIND_OPT = --tool=memcheck
|
||||
endif
|
||||
|
||||
test: $(bin_TESTS)
|
||||
@for test in $(bin_TESTS); do \
|
||||
echo === Test $${test} ==; \
|
||||
./$${test}; \
|
||||
echo === Done $${test} ==; \
|
||||
echo ======= Test $${test} ======; \
|
||||
$(VALGRIND) $(VALGRIND_OPT) ./$${test}; \
|
||||
echo ====== Done $${test} ======; \
|
||||
done
|
||||
|
||||
bin_TESTS = \
|
||||
|
||||
@@ -268,6 +268,7 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VALGRIND = @VALGRIND@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
@@ -353,6 +354,7 @@ common_SOURCES = \
|
||||
rcache.c \
|
||||
rcache.h
|
||||
|
||||
@HAVE_VALGRIND_TRUE@VALGRIND_OPT = --tool=memcheck
|
||||
bin_TESTS = \
|
||||
cflexer_test \
|
||||
cfparser_test \
|
||||
@@ -875,9 +877,9 @@ run: $(sbin_PROGRAMS)
|
||||
|
||||
test: $(bin_TESTS)
|
||||
@for test in $(bin_TESTS); do \
|
||||
echo === Test $${test} ==; \
|
||||
./$${test}; \
|
||||
echo === Done $${test} ==; \
|
||||
echo ======= Test $${test} ======; \
|
||||
$(VALGRIND) $(VALGRIND_OPT) ./$${test}; \
|
||||
echo ====== Done $${test} ======; \
|
||||
done
|
||||
|
||||
clean-local:
|
||||
|
||||
@@ -21,12 +21,11 @@ int main(void) {
|
||||
MASSERT(fd > 0);
|
||||
|
||||
rcache_t cache;
|
||||
rcache_init(&cache, fd);
|
||||
|
||||
cflexer_t lexer;
|
||||
cflexer_init(&lexer, &cache);
|
||||
|
||||
cfparser_t parser;
|
||||
|
||||
rcache_init(&cache, fd);
|
||||
cflexer_init(&lexer, &cache);
|
||||
cfparser_init(&parser, &lexer);
|
||||
|
||||
if (cfparser_parse(&parser)) {
|
||||
@@ -35,12 +34,14 @@ int main(void) {
|
||||
}
|
||||
|
||||
int64_t id = 0;
|
||||
cfparser_bind(&parser, CFVALTYPE_INT, "id", (void *)&id);
|
||||
char* name = "";
|
||||
|
||||
cfparser_bind(&parser, CFVALTYPE_INT, "id", (void *)&id);
|
||||
cfparser_bind(&parser, CFVALTYPE_STR, "name", (void *)&name);
|
||||
|
||||
cfparser_destroy(&parser);
|
||||
cflexer_destroy(&lexer);
|
||||
rcache_destroy(&cache);
|
||||
|
||||
MASSERT(id == -123);
|
||||
MASSERT(strcmp(name, "qwerty\"567") == 0);
|
||||
|
||||
@@ -20,19 +20,15 @@ int main(void) {
|
||||
int argc = 3;
|
||||
|
||||
cllexer_t lexer;
|
||||
|
||||
cllexer_init(&lexer);
|
||||
|
||||
clparser_t parser;
|
||||
|
||||
cllexer_init(&lexer);
|
||||
clparser_init(&parser, &lexer);
|
||||
|
||||
int id = 0;
|
||||
|
||||
clparser_bind(&parser, CLTYPE_INT, "id", (void *)&id);
|
||||
|
||||
char* name = "";
|
||||
|
||||
clparser_bind(&parser, CLTYPE_INT, "id", (void *)&id);
|
||||
clparser_bind(&parser, CLTYPE_STR, "name", (void *)&name);
|
||||
|
||||
if (clparser_parse(&parser, &argv[1], argc - 1) < 0) {
|
||||
@@ -45,5 +41,8 @@ int main(void) {
|
||||
clparser_destroy(&parser);
|
||||
cllexer_destroy(&lexer);
|
||||
|
||||
free(name);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
6
config.h
6
config.h
@@ -2,8 +2,8 @@
|
||||
#ifndef CONFIG_H_QWER
|
||||
#define CONFIG_H_QWER
|
||||
|
||||
static const char *srv_runpath = "/home/ziggi/projects/jcomp/run/cworker.pid";
|
||||
static const char *srv_logpath = "/home/ziggi/projects/jcomp/log/cworker.log";
|
||||
static const char *srv_configpath = "/home/ziggi/projects/jcomp//cworker.conf";
|
||||
static const char *srv_runpath = "/home/ziggi/Projects/jcomp/run/cworker.pid";
|
||||
static const char *srv_logpath = "/home/ziggi/Projects/jcomp/log/cworker.log";
|
||||
static const char *srv_configpath = "/home/ziggi/Projects/jcomp//cworker.conf";
|
||||
|
||||
#endif
|
||||
|
||||
@@ -430,7 +430,7 @@ Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
This config.status script is free software; the Free Software Foundation
|
||||
gives unlimited permission to copy, distribute and modify it."
|
||||
|
||||
ac_pwd='/home/ziggi/projects/jcomp'
|
||||
ac_pwd='/home/ziggi/Projects/jcomp'
|
||||
srcdir='.'
|
||||
INSTALL='/usr/bin/install -c'
|
||||
MKDIR_P='/usr/local/bin/gmkdir -p'
|
||||
@@ -612,27 +612,27 @@ S["am__EXEEXT_FALSE"]=""
|
||||
S["am__EXEEXT_TRUE"]="#"
|
||||
S["LTLIBOBJS"]=""
|
||||
S["app_name"]="cworker"
|
||||
S["app_cachedir"]="/home/ziggi/projects/jcomp/cache"
|
||||
S["APP_CACHEDIR"]="/home/ziggi/projects/jcomp/cache"
|
||||
S["app_databasedir"]="/home/ziggi/projects/jcomp/data"
|
||||
S["APP_DATABASEDIR"]="/home/ziggi/projects/jcomp/data"
|
||||
S["app_cachedir"]="/home/ziggi/Projects/jcomp/cache"
|
||||
S["APP_CACHEDIR"]="/home/ziggi/Projects/jcomp/cache"
|
||||
S["app_databasedir"]="/home/ziggi/Projects/jcomp/data"
|
||||
S["APP_DATABASEDIR"]="/home/ziggi/Projects/jcomp/data"
|
||||
S["app_user"]="ziggi"
|
||||
S["APP_USER"]="ziggi"
|
||||
S["app_libdir"]="/home/ziggi/projects/jcomp/lib"
|
||||
S["APP_LIBDIR"]="/home/ziggi/projects/jcomp/lib"
|
||||
S["app_rundir"]="/home/ziggi/projects/jcomp/run"
|
||||
S["APP_RUNDIR"]="/home/ziggi/projects/jcomp/run"
|
||||
S["app_logdir"]="/home/ziggi/projects/jcomp/log"
|
||||
S["APP_LOGDIR"]="/home/ziggi/projects/jcomp/log"
|
||||
S["app_configdir"]="/home/ziggi/projects/jcomp/"
|
||||
S["APP_CONFIGDIR"]="/home/ziggi/projects/jcomp/"
|
||||
S["app_libdir"]="/home/ziggi/Projects/jcomp/lib"
|
||||
S["APP_LIBDIR"]="/home/ziggi/Projects/jcomp/lib"
|
||||
S["app_rundir"]="/home/ziggi/Projects/jcomp/run"
|
||||
S["APP_RUNDIR"]="/home/ziggi/Projects/jcomp/run"
|
||||
S["app_logdir"]="/home/ziggi/Projects/jcomp/log"
|
||||
S["APP_LOGDIR"]="/home/ziggi/Projects/jcomp/log"
|
||||
S["app_configdir"]="/home/ziggi/Projects/jcomp/"
|
||||
S["APP_CONFIGDIR"]="/home/ziggi/Projects/jcomp/"
|
||||
S["SYSTEMD_FALSE"]=""
|
||||
S["SYSTEMD_TRUE"]="#"
|
||||
S["LINUX_OS_FALSE"]=""
|
||||
S["LINUX_OS_TRUE"]="#"
|
||||
S["FREEBSD_OS_FALSE"]="#"
|
||||
S["FREEBSD_OS_TRUE"]=""
|
||||
S["CP"]="/bin/cp"
|
||||
S["CP"]="/usr/local/bin/gcp"
|
||||
S["HAVE_CP"]="true"
|
||||
S["LIBOBJS"]=""
|
||||
S["host_os"]="freebsd12.4"
|
||||
@@ -643,6 +643,9 @@ S["build_os"]="freebsd12.4"
|
||||
S["build_vendor"]="unknown"
|
||||
S["build_cpu"]="amd64"
|
||||
S["build"]="amd64-unknown-freebsd12.4"
|
||||
S["HAVE_VALGRIND_FALSE"]=""
|
||||
S["HAVE_VALGRIND_TRUE"]="#"
|
||||
S["VALGRIND"]="/usr/local/bin/valgrind"
|
||||
S["am__fastdepCC_FALSE"]=""
|
||||
S["am__fastdepCC_TRUE"]="#"
|
||||
S["CCDEPMODE"]="depmode=none"
|
||||
@@ -673,12 +676,12 @@ S["mkdir_p"]="$(MKDIR_P)"
|
||||
S["MKDIR_P"]="/usr/local/bin/gmkdir -p"
|
||||
S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
|
||||
S["STRIP"]=""
|
||||
S["install_sh"]="${SHELL} /home/ziggi/projects/jcomp/install-sh"
|
||||
S["MAKEINFO"]="${SHELL} /home/ziggi/projects/jcomp/missing makeinfo"
|
||||
S["AUTOHEADER"]="${SHELL} /home/ziggi/projects/jcomp/missing autoheader"
|
||||
S["AUTOMAKE"]="${SHELL} /home/ziggi/projects/jcomp/missing automake"
|
||||
S["AUTOCONF"]="${SHELL} /home/ziggi/projects/jcomp/missing autoconf"
|
||||
S["ACLOCAL"]="${SHELL} /home/ziggi/projects/jcomp/missing aclocal"
|
||||
S["install_sh"]="${SHELL} /home/ziggi/Projects/jcomp/install-sh"
|
||||
S["MAKEINFO"]="${SHELL} /home/ziggi/Projects/jcomp/missing makeinfo"
|
||||
S["AUTOHEADER"]="${SHELL} /home/ziggi/Projects/jcomp/missing autoheader"
|
||||
S["AUTOMAKE"]="${SHELL} /home/ziggi/Projects/jcomp/missing automake"
|
||||
S["AUTOCONF"]="${SHELL} /home/ziggi/Projects/jcomp/missing autoconf"
|
||||
S["ACLOCAL"]="${SHELL} /home/ziggi/Projects/jcomp/missing aclocal"
|
||||
S["VERSION"]="0.0.1"
|
||||
S["PACKAGE"]="cworker"
|
||||
S["CYGPATH_W"]="echo"
|
||||
@@ -810,13 +813,13 @@ D["HAVE_MEMSET"]=" 1"
|
||||
D["HAVE_MKDIR"]=" 1"
|
||||
D["HAVE_SETLOCALE"]=" 1"
|
||||
D["HAVE_SOCKET"]=" 1"
|
||||
D["APP_CONFIGDIR"]=" \"/home/ziggi/projects/jcomp/\""
|
||||
D["APP_LOGDIR"]=" \"/home/ziggi/projects/jcomp/log\""
|
||||
D["APP_RUNDIR"]=" \"/home/ziggi/projects/jcomp/run\""
|
||||
D["APP_LIBDIR"]=" \"/home/ziggi/projects/jcomp/lib\""
|
||||
D["APP_CONFIGDIR"]=" \"/home/ziggi/Projects/jcomp/\""
|
||||
D["APP_LOGDIR"]=" \"/home/ziggi/Projects/jcomp/log\""
|
||||
D["APP_RUNDIR"]=" \"/home/ziggi/Projects/jcomp/run\""
|
||||
D["APP_LIBDIR"]=" \"/home/ziggi/Projects/jcomp/lib\""
|
||||
D["APP_USER"]=" \"ziggi\""
|
||||
D["APP_DATABASEDIR"]=" \"/home/ziggi/projects/jcomp/data\""
|
||||
D["APP_CACHEDIR"]=" \"/home/ziggi/projects/jcomp/cache\""
|
||||
D["APP_DATABASEDIR"]=" \"/home/ziggi/Projects/jcomp/data\""
|
||||
D["APP_CACHEDIR"]=" \"/home/ziggi/Projects/jcomp/cache\""
|
||||
for (key in D) D_is_set[key] = 1
|
||||
FS = ""
|
||||
}
|
||||
|
||||
@@ -19,6 +19,11 @@ AC_TYPE_PID_T
|
||||
AC_TYPE_SSIZE_T
|
||||
AC_STRUCT_TIMEZONE
|
||||
|
||||
AC_PATH_PROG([VALGRIND],[valgrind true])
|
||||
AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" = "xvalgrind"])
|
||||
|
||||
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_FORK
|
||||
AC_FUNC_MALLOC
|
||||
@@ -49,7 +54,7 @@ AC_CHECK_PROG(HAVE_CP, cp, true, false, /bin /usr/local/bin /usr/bin)
|
||||
if test "x$HAVE_CP" = "xfalse"; then
|
||||
AC_MSG_ERROR([Requested program cp not found])
|
||||
fi
|
||||
AC_PATH_PROG([CP],[cp cp])
|
||||
AC_PATH_PROG([CP],[gcp cp])
|
||||
AC_PROG_INSTALL
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
|
||||
12
defines.h
12
defines.h
@@ -2,22 +2,22 @@
|
||||
/* defines.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* location of cache dir */
|
||||
#define APP_CACHEDIR "/home/ziggi/projects/jcomp/cache"
|
||||
#define APP_CACHEDIR "/home/ziggi/Projects/jcomp/cache"
|
||||
|
||||
/* location of configuration files for ${PACKAGE} */
|
||||
#define APP_CONFIGDIR "/home/ziggi/projects/jcomp/"
|
||||
#define APP_CONFIGDIR "/home/ziggi/Projects/jcomp/"
|
||||
|
||||
/* location of database dir */
|
||||
#define APP_DATABASEDIR "/home/ziggi/projects/jcomp/data"
|
||||
#define APP_DATABASEDIR "/home/ziggi/Projects/jcomp/data"
|
||||
|
||||
/* location of libs */
|
||||
#define APP_LIBDIR "/home/ziggi/projects/jcomp/lib"
|
||||
#define APP_LIBDIR "/home/ziggi/Projects/jcomp/lib"
|
||||
|
||||
/* location of ${PACKAGE} logdir */
|
||||
#define APP_LOGDIR "/home/ziggi/projects/jcomp/log"
|
||||
#define APP_LOGDIR "/home/ziggi/Projects/jcomp/log"
|
||||
|
||||
/* location of pid file */
|
||||
#define APP_RUNDIR "/home/ziggi/projects/jcomp/run"
|
||||
#define APP_RUNDIR "/home/ziggi/Projects/jcomp/run"
|
||||
|
||||
/* effective user */
|
||||
#define APP_USER "ziggi"
|
||||
|
||||
@@ -99,6 +99,7 @@ int jparser_parse(jparser_t * parser) {
|
||||
kv->type = JVALTYPE_STR;
|
||||
kv->str = val;
|
||||
}
|
||||
free(key);
|
||||
parser->kvalsize++;
|
||||
pos++;
|
||||
break;
|
||||
@@ -140,5 +141,10 @@ int jparser_bind(jparser_t* parser, int type, char* key, void* ref) {
|
||||
}
|
||||
|
||||
void jparser_destroy(jparser_t * parser) {
|
||||
for (int i = 0; i < parser->kvalsize; i++) {
|
||||
if (parser->kvalarr[i].type == JVALTYPE_STR) {
|
||||
free(parser->kvalarr[i].str);
|
||||
}
|
||||
}
|
||||
free(parser->kvalarr);
|
||||
}
|
||||
|
||||
@@ -22,16 +22,14 @@ int main(void) {
|
||||
|
||||
MASSERT(fd > 0);
|
||||
|
||||
|
||||
|
||||
rcache_t cache;
|
||||
|
||||
rcache_init(&cache, fd);
|
||||
|
||||
jlexer_t lexer;
|
||||
|
||||
jlexer_init(&lexer, &cache);
|
||||
|
||||
jparser_t parser;
|
||||
|
||||
rcache_init(&cache, fd);
|
||||
jlexer_init(&lexer, &cache);
|
||||
jparser_init(&parser, &lexer);
|
||||
|
||||
if (jparser_parse(&parser) < 0) {
|
||||
@@ -58,6 +56,7 @@ int main(void) {
|
||||
jparser_destroy(&parser);
|
||||
jlexer_destroy(&lexer);
|
||||
rcache_destroy(&cache);
|
||||
free(name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user