[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, num-handler, updated. 9565731d6ee1a41844
From: |
John Haque |
Subject: |
[gawk-diffs] [SCM] gawk branch, num-handler, updated. 9565731d6ee1a418444676846e860881cab78441 |
Date: |
Mon, 31 Dec 2012 10:52:53 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, num-handler has been updated
via 9565731d6ee1a418444676846e860881cab78441 (commit)
from c5a43d6d92022ff834f28563085fa9bcf0f38d85 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=9565731d6ee1a418444676846e860881cab78441
commit 9565731d6ee1a418444676846e860881cab78441
Author: John Haque <address@hidden>
Date: Mon Dec 31 04:49:29 2012 -0600
Initialize MNR, MFNR and set MALLOC flag for mpfr numbers.
diff --git a/io.c b/io.c
index 666bfde..0aa4aec 100644
--- a/io.c
+++ b/io.c
@@ -382,6 +382,7 @@ nextfile(IOBUF **curfile, bool skipping)
return 0;
}
+ (void) force_number(ARGC_node->var_value); /* make no assumptions!
*/
argc = get_number_si(ARGC_node->var_value);
for (; i < argc; i++) {
diff --git a/mpfr.c b/mpfr.c
index 83b37a1..4d4de53 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -150,7 +150,6 @@ mpfp_tofloat(const NODE *t, mpfr_ptr pf)
}
-
numbr_handler_t mpfp_hndlr = {
mpfp_init,
mpfp_version_string,
@@ -214,6 +213,8 @@ mpfp_init(bltin_t **numbr_bltins)
ROUND_MODE = mpfp_get_rounding_mode(rndmode[0]);
mpfr_set_default_rounding_mode(ROUND_MODE);
+ mpz_init(MNR);
+ mpz_init(MFNR);
do_ieee_fmt = false;
mpfr_init2(_mp1, PRECISION_MIN);
@@ -261,7 +262,7 @@ mpfp_version_string()
static unsigned long
mpfp_toulong(const NODE *n)
{
- return (n->flags & MPFN) ? mpfr_get_ui(n->qnumbr, ROUND_MODE) :
mpz_get_ui(n->qnumbr);
+ return (n->flags & MPFN) != 0 ? mpfr_get_ui(n->qnumbr, ROUND_MODE) :
mpz_get_ui(n->qnumbr);
}
/* mpfp_tolong --- conversion to long */
@@ -269,7 +270,7 @@ mpfp_toulong(const NODE *n)
static long
mpfp_tolong(const NODE *n)
{
- return (n->flags & MPFN) ? mpfr_get_si(n->qnumbr, ROUND_MODE) :
mpz_get_si(n->qnumbr);
+ return (n->flags & MPFN) != 0 ? mpfr_get_si(n->qnumbr, ROUND_MODE) :
mpz_get_si(n->qnumbr);
}
/* mpfp_todouble --- conversion to AWKNUM */
@@ -277,7 +278,7 @@ mpfp_tolong(const NODE *n)
static AWKNUM
mpfp_todouble(const NODE *n)
{
- return (n->flags & MPFN) ? mpfr_get_d(n->qnumbr, ROUND_MODE) :
mpz_get_d(n->qnumbr);
+ return (n->flags & MPFN) != 0 ? mpfr_get_d(n->qnumbr, ROUND_MODE) :
mpz_get_d(n->qnumbr);
}
/* mpfp_touintmax_t --- conversion to uintmax_t */
@@ -285,7 +286,7 @@ mpfp_todouble(const NODE *n)
static uintmax_t
mpfp_touintmax_t(const NODE *n)
{
- return (n->flags & MPFN) ? mpfr_get_uj(n->qnumbr, ROUND_MODE) \
+ return (n->flags & MPFN) != 0 ? mpfr_get_uj(n->qnumbr, ROUND_MODE) \
: (uintmax_t) mpz_get_d(n->qnumbr);
}
@@ -294,7 +295,7 @@ mpfp_touintmax_t(const NODE *n)
static int
mpfp_sgn(const NODE *n)
{
- return (n->flags & MPFN) ? mpfr_sgn(MPFR_T(n->qnumbr)) \
+ return (n->flags & MPFN) != 0 ? mpfr_sgn(MPFR_T(n->qnumbr)) \
: mpz_sgn(MPZ_T(n->qnumbr));
}
@@ -328,7 +329,7 @@ mpfp_make_node(unsigned int type)
}
r->valref = 1;
- r->flags |= (NUMBER|NUMCUR);
+ r->flags |= (MALLOC|NUMBER|NUMCUR);
r->stptr = NULL;
r->stlen = 0;
#if MBS_SUPPORT
@@ -867,6 +868,7 @@ mpfp_set_var(const NODE *var)
NR = mpz_fdiv_q_ui(MNR, r, LONG_MAX); /* MNR is
quotient */
else
FNR = mpz_fdiv_q_ui(MFNR, r, LONG_MAX);
+
if (r != val->qnumbr)
mpz_clear(mpz_val);
}
diff --git a/msg.c b/msg.c
index d61fea0..dd83759 100644
--- a/msg.c
+++ b/msg.c
@@ -90,13 +90,11 @@ err(bool isfatal, const char *s, const char *emsg, va_list
argp)
/*
- * N.B: format is awk printf format, NOT C format or any other special format
- * supported. MUST NOT throw warning in format tree. "%ld" is BAD, "%d" is Ok!
+ * fmt_number --- format a number node for use in error messages.
+ * N.B: format is awk printf format. MUST NOT throw warning in format
+ * tree. "%ld" is BAD, "%d" is Ok!
*/
-
-/* N.B: FORMAT must pass fmt_ok() used to check CONVFMT/OFMT specifier */
-
const char *
fmt_number(const char *format, const NODE *n)
{
@@ -104,7 +102,7 @@ fmt_number(const char *format, const NODE *n)
static char *num_str;
extern bool fmt_ok(const char *p);
- assert(fmt_ok(format) == true);
+ /* FIXME: %d etc -- assert(fmt_ok(format) == true); */
assert((n->flags & (NUMBER|NUMCUR)) != 0);
/* copy number so not to change state of the original including flags */
-----------------------------------------------------------------------
Summary of changes:
io.c | 1 +
mpfr.c | 16 +++++++++-------
msg.c | 10 ++++------
3 files changed, 14 insertions(+), 13 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, num-handler, updated. 9565731d6ee1a418444676846e860881cab78441,
John Haque <=