@@ -499,18 +499,22 @@ static inline void gb_modpoly_clear(gb_modpoly_t modgbs){
499499 free (modgbs -> modpolys [i ]-> cf_32 [j ]);
500500 mpz_clear (modgbs -> modpolys [i ]-> cf_zz [j ]);
501501 }
502+
502503 for (uint32_t j = 0 ; j < 2 * modgbs -> modpolys [i ]-> len ; j ++ ){
503504 mpz_clear (modgbs -> modpolys [i ]-> cf_qq [j ]);
504505 }
506+
505507 mpz_clear (modgbs -> modpolys [i ]-> lm );
506508 free (modgbs -> modpolys [i ]-> cf_32 );
507509 free (modgbs -> modpolys [i ]-> cf_zz );
508510 free (modgbs -> modpolys [i ]-> cf_qq );
511+ free (modgbs -> hm [i ]);
509512 }
513+
510514 free (modgbs -> lmps );
511515 free (modgbs -> hm );
512- //free_hash_table(&( modgbs->bht) );
513- free_shared_hash_data ( modgbs -> bht );
516+ free ( modgbs -> cf_64 );
517+ full_free_hash_table ( & modgbs -> bht );
514518 free (modgbs -> modpolys );
515519}
516520
@@ -786,6 +790,7 @@ static int32_t gb_modular_trace_learning(gb_modpoly_t modgbs,
786790 else {
787791 gb_modpoly_init (modgbs , 2 , lens , bs , bht -> nv - st -> nev , num_gb [0 ], leadmons [0 ], st );
788792 }
793+ free (lens );
789794 modpgbs_set (modgbs , bs , bht , fc , start , st -> nev );
790795 int is_empty = 0 ;
791796 if (bs -> lml == 1 ){
@@ -1756,8 +1761,6 @@ gb_modpoly_t *groebner_qq(
17561761 int32_t nr_vars = gens -> nvars ;
17571762 int32_t nr_gens = gens -> ngens ;
17581763 int reduce_gb = 1 ;
1759- int32_t nr_nf = 0 ;
1760- const uint32_t prime_start = pow (2 , 30 );
17611764
17621765 /* timings */
17631766 double ct0 , ct1 , rt0 , rt1 ;
@@ -1778,7 +1781,7 @@ gb_modpoly_t *groebner_qq(
17781781 nr_vars , nr_gens , 0 /* # normal forms */ , ht_size ,
17791782 nr_threads , max_nr_pairs , reset_ht , la_option , use_signatures ,
17801783 reduce_gb , pbm_file , truncate_lifting , info_level );
1781-
1784+
17821785 /* all input generators are invalid */
17831786 if (success == -1 ) {
17841787 return NULL ;
@@ -1808,7 +1811,8 @@ gb_modpoly_t *groebner_qq(
18081811
18091812 /* free and clean up */
18101813 free_mstrace (msd , md );
1811-
1814+ free_basis_without_hash_table (& bs );
1815+ free_trace (& md -> tr );
18121816 free (md );
18131817 md = NULL ;
18141818
@@ -1975,14 +1979,17 @@ int64_t export_groebner_qq(
19751979
19761980 /* free and clean up */
19771981 free_mstrace (msd , md );
1982+ free_basis_without_hash_table (& bs );
1983+ free_trace (& md -> tr );
19781984 free (md );
19791985 md = NULL ;
19801986
19811987 int64_t nterms = export_results_from_groebner_qq (bld , blen , bexp ,
19821988 bcf , mallocp , elim_block_len , (* modgbsp ));
19831989
1984- gb_modpoly_clear ((* modgbsp ));
1985-
1990+ gb_modpoly_clear (* modgbsp );
1991+ free (modgbsp );
1992+
19861993 return nterms ;
19871994
19881995}
0 commit comments