summaryrefslogtreecommitdiff
path: root/randclr.c
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2000-04-01 15:58:46 +0200
committerLinus Nordberg <linus@nordberg.se>2000-04-01 15:58:46 +0200
commit3513f4430fc55c130f48a5685c3599584eda158f (patch)
tree46613df3b578294f20790c0c6e298bbdcc2bd377 /randclr.c
parent08ec05a317350fdf8f618b0efddc415a772e5f2e (diff)
downloadgmp-3513f4430fc55c130f48a5685c3599584eda158f.tar.gz
(gmp_rand_clear): Don't use free().
Disable BBS algorithm. Set `gmp_errno' on error.
Diffstat (limited to 'randclr.c')
-rw-r--r--randclr.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/randclr.c b/randclr.c
index b8c0a19dd..52e789069 100644
--- a/randclr.c
+++ b/randclr.c
@@ -1,6 +1,6 @@
/* gmp_rand_clear (state) -- Clear and deallocate random state STATE.
-Copyright (C) 1999 Free Software Foundation, Inc.
+Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -19,8 +19,8 @@ along with the GNU MP Library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include <stdlib.h> /* FIXME: For free(). */
#include "gmp.h"
+#include "gmp-impl.h"
void
#if __STDC__
@@ -36,12 +36,19 @@ gmp_rand_clear (s)
{
case GMP_RAND_ALG_LC:
mpz_clear (s->data.lc->a);
- mpz_clear (s->data.lc->m);
- free (s->data.lc);
+ if (s->data.lc->m2exp == 0)
+ mpz_clear (s->data.lc->m);
+ (*_mp_free_func) (s->data.lc, sizeof (*s->data.lc));
break;
+
+#if 0
case GMP_RAND_ALG_BBS:
mpz_clear (s->data.bbs->bi);
- free (s->data.bbs);
+ (*_mp_free_func) (s->data.bbs, sizeof (*s->data.bbs));
break;
+#endif /* 0 */
+
+ default:
+ gmp_errno |= GMP_ERROR_UNSUPPORTED_ARGUMENT;
}
}