From 1533d0bbd7a99c0f17eb80c8b6ca3f615db16965 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Sun, 19 Dec 2010 22:06:41 +0000 Subject: [PATCH] more fixes to PL_get_codes. --- library/dialect/swi/fli/swi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index bda9b450d..0a0d7f262 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -477,6 +477,17 @@ X_API int PL_get_chars(term_t l, char **sp, unsigned flags) if (!(flags & (CVT_FLOAT|CVT_NUMBER|CVT_ATOMIC|CVT_WRITE|CVT_WRITE_CANONICAL|CVT_ALL))) return cv_error(flags); snprintf(tmp,SWI_BUF_SIZE,"%f",FloatOfTerm(t)); +#if USE_GMP + } else if (YAP_IsBigNumTerm(t)) { + if (!(flags & (CVT_FLOAT|CVT_NUMBER|CVT_ATOMIC|CVT_WRITE|CVT_WRITE_CANONICAL|CVT_ALL))) + return cv_error(flags); + MP_INT g; + YAP_BigNumOfTerm(t, (void *)&g); + if (mpz_sizeinbase(&g,2) > SWI_BUF_SIZE-1) { + return 0; + } + mpz_get_str (tmp, 10, &g); +#endif } else { if (!(flags & (CVT_INTEGER|CVT_NUMBER|CVT_ATOMIC|CVT_WRITE|CVT_WRITE_CANONICAL|CVT_ALL))) return cv_error(flags);