aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJ08nY2017-04-06 16:26:26 +0200
committerJ08nY2017-04-06 16:56:45 +0200
commitd4a152b9daf665db62e3e30ca40f3cf94a1a30af (patch)
treeec06a8e9eaa76276e5df1a5a4e5ed8cab6b12a38 /src
parent6ef98279d0a9b9dfebbe2620e50da9cbea0cbd56 (diff)
downloadecgen-d4a152b9daf665db62e3e30ca40f3cf94a1a30af.tar.gz
ecgen-d4a152b9daf665db62e3e30ca40f3cf94a1a30af.tar.zst
ecgen-d4a152b9daf665db62e3e30ca40f3cf94a1a30af.zip
Diffstat (limited to 'src')
-rw-r--r--src/Makefile8
-rw-r--r--src/invalid/invalid.c1
-rw-r--r--src/math/curve.c8
3 files changed, 13 insertions, 4 deletions
diff --git a/src/Makefile b/src/Makefile
index a149946..427d17f 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -17,7 +17,7 @@ endif
LDFLAGS = -L../lib/parson -L../lib/sha1 -L../lib/pari
INCLUDES = -I. -I../lib
-LIBS = -lrt -lpari -lparson
+LIBS = -lrt -lpthread -lparson -lsha1 -lpari
####
@@ -50,8 +50,8 @@ econvert: econvert.o $(ECONVERT_OBJ)
####
clean-all: clean
- rm ../ecgen
- rm ../econvert
+ rm -f ../ecgen
+ rm -f ../econvert
clean:
find . -type f -name '*.o' -exec rm {} +
@@ -60,4 +60,4 @@ format:
clang-format -i $(SRC)
clang-format -i $(HDR)
-.PHONY: all gp2c clean-all clean clean-gp format
+.PHONY: all clean-all clean format
diff --git a/src/invalid/invalid.c b/src/invalid/invalid.c
index 65c6c4b..f029337 100644
--- a/src/invalid/invalid.c
+++ b/src/invalid/invalid.c
@@ -185,6 +185,7 @@ static size_t invalid_curves(curve_t *curve, config_t *cfg, pari_ulong *primes,
// primes from range divided order. Thus remove it
// like it never existed.
+ obj_free(invalid->curve); //necessary to free the ellinit
avma = btop;
}
}
diff --git a/src/math/curve.c b/src/math/curve.c
index 1703f78..812dbcc 100644
--- a/src/math/curve.c
+++ b/src/math/curve.c
@@ -41,6 +41,9 @@ curve_t *curve_copy(curve_t *src, curve_t *dest) {
void curve_free(curve_t **curve) {
if (*curve) {
seed_free(&(*curve)->seed);
+ if ((*curve)->curve) {
+ obj_free((*curve)->curve);
+ }
points_free_deep(&(*curve)->generators, (*curve)->ngens);
points_free_deep(&(*curve)->points, (*curve)->npoints);
pari_free(*curve);
@@ -49,6 +52,11 @@ void curve_free(curve_t **curve) {
}
int curve_any(curve_t *curve, config_t *cfg, arg_t *args) {
+ if (curve->curve) {
+ obj_free(curve->curve);
+ curve->curve = NULL;
+ }
+
pari_sp ltop = avma;
GEN v = gen_0;
switch (typ(curve->field)) {