Branch: Tag:

2003-02-14

2003-02-14 19:19:57 by Martin Stjernholm <mast@lysator.liu.se>

Fixed stack bug in push_int64 for large negative integers.

Rev: src/bignum.c:1.33

2:   || 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.32 2003/01/27 10:18:25 mirar Exp $ + || $Id: bignum.c,v 1.33 2003/02/14 19:19:57 mast Exp $   */      #include "global.h"
46:   {    apply_svalue(&auto_bignum_program, 1);    -  if(sp[-1].type != T_OBJECT) +  if(sp[-1].type != T_OBJECT) {    if (auto_bignum_program.type!=T_PROGRAM)    Pike_error("Gmp.mpz conversion failed (Gmp.bignum not loaded).\n");    else    Pike_error("Gmp.mpz conversion failed (unknown error).\n");    } -  + }      PMOD_EXPORT void convert_stack_top_with_base_to_bignum(void)   {    apply_svalue(&auto_bignum_program, 2);    -  if(sp[-1].type != T_OBJECT) +  if(sp[-1].type != T_OBJECT) {    if (auto_bignum_program.type!=T_PROGRAM)    Pike_error("Gmp.mpz conversion failed (Gmp.bignum not loaded).\n");    else    Pike_error("Gmp.mpz conversion failed (unknown error).\n");    } -  + }      int is_bignum_object(struct object *o)   {
151:    apply_svalue(&auto_bignum_program, 2);       -  if(neg) +  if(neg) {    apply_low(sp[-1].u.object,FIND_LFUN(sp[-1].u.object->prog,LFUN_COMPL),0); -  +  stack_pop_n_elems_keep_top(1);    }    } -  + }      /* This routines can be optimized quite drastically. */   #define BIGNUM_INT64_MASK 0xffffff