summaryrefslogtreecommitdiff
path: root/src/math
diff options
context:
space:
mode:
authorJ08nY2017-05-07 18:06:53 +0200
committerJ08nY2017-05-07 18:06:53 +0200
commit2c6bfa342ac85cd1ec5265b217d7cb33afd91e69 (patch)
tree0b3c371c7c033b713f5c8f57e774b4f56b97e41e /src/math
parent2fe84534d7cfa5a2aebd8877222871b54e7c80c5 (diff)
downloadecgen-2c6bfa342ac85cd1ec5265b217d7cb33afd91e69.tar.gz
ecgen-2c6bfa342ac85cd1ec5265b217d7cb33afd91e69.tar.zst
ecgen-2c6bfa342ac85cd1ec5265b217d7cb33afd91e69.zip
Fixed unrolls / unique generator curve generaton
- Also added some tests to catch some regressions like this early - Fixed double free in gens, also some funky stuff with gunclone and obj_free in curve_free
Diffstat (limited to 'src/math')
-rw-r--r--src/math/curve.c4
-rw-r--r--src/math/gens.c2
-rw-r--r--src/math/types.h2
3 files changed, 3 insertions, 5 deletions
diff --git a/src/math/curve.c b/src/math/curve.c
index 633cf27..969e628 100644
--- a/src/math/curve.c
+++ b/src/math/curve.c
@@ -66,6 +66,8 @@ curve_t *curve_new_clone(const curve_t *src) {
void curve_free(curve_t **curve) {
if (*curve) {
seed_free(&(*curve)->seed);
+ points_free_deep(&(*curve)->generators, (*curve)->ngens);
+ points_free_deep(&(*curve)->points, (*curve)->npoints);
if ((*curve)->curve) {
// TODO, this is possibly dangerous...
@@ -88,8 +90,6 @@ void curve_free(curve_t **curve) {
gunclone((*curve)->order);
}
- points_free_deep(&(*curve)->generators, (*curve)->ngens);
- points_free_deep(&(*curve)->points, (*curve)->npoints);
pari_free(*curve);
*curve = NULL;
}
diff --git a/src/math/gens.c b/src/math/gens.c
index 5965f9a..119c22b 100644
--- a/src/math/gens.c
+++ b/src/math/gens.c
@@ -6,8 +6,6 @@
#include "point.h"
static int gens_put(curve_t *curve, GEN generators, long len) {
- points_free_deep(&curve->generators, curve->ngens);
-
curve->generators = points_new((size_t)len);
curve->ngens = (size_t)len;
diff --git a/src/math/types.h b/src/math/types.h
index 64b9c99..ab4b224 100644
--- a/src/math/types.h
+++ b/src/math/types.h
@@ -63,7 +63,7 @@ typedef struct {
* @brief
*/
typedef enum {
- OFFSET_SEED,
+ OFFSET_SEED = 0,
OFFSET_FIELD,
OFFSET_A,
OFFSET_B,