diff --git a/src/bignum.c b/src/bignum.c index d11ee13b057ad7cc084291bf0d07194bc4f62bb4..bc890d6d7f23425de96211c05b563c68a618dc9a 100644 --- a/src/bignum.c +++ b/src/bignum.c @@ -2,7 +2,7 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: bignum.c,v 1.29 2003/01/13 14:42:06 grubba Exp $ +|| $Id: bignum.c,v 1.30 2003/01/27 08:16:53 mirar Exp $ */ #include "global.h" @@ -47,7 +47,24 @@ PMOD_EXPORT void convert_stack_top_to_bignum(void) apply_svalue(&auto_bignum_program, 1); if(sp[-1].type != T_OBJECT) - Pike_error("Gmp.mpz conversion failed.\n"); + { + if (auto_bignum_program.type!=T_PROGRAM) + { + /* for some reason, Gmp isn't loaded */ + push_text("Gmp"); + push_int(0); + SAFE_APPLY_MASTER("resolv",2); + pop_stack(); + + if (auto_bignum_program.type!=T_PROGRAM) + Pike_error("Gmp.mpz conversion failed (failed to load Gmp?).\n"); + + apply_svalue(&auto_bignum_program, 1); + } + + if(sp[-1].type != T_OBJECT) + Pike_error("Gmp.mpz conversion failed (unknown error).\n"); + } } PMOD_EXPORT void convert_stack_top_with_base_to_bignum(void)