erl_arith.c

Tony Rogvall tony@REDACTED
Tue Nov 30 10:29:44 CET 1999


Hi there!

I have found a potential problem in erl_arith.c. I found it while
working on a libbeam.so for building standalone apps. (I modified the
sae stuff to link with a shared object, this makes it possible to write
small "real" executable as well)

The problem:

in erl_arith.c the tmp_big_buff is declared as

static Eterm tmp_big_buff[4];

and is used for temporary bignums, but on what address do you find
tmp_big_buff????

this buffer MUST be safe_allocated!

Solution:

in erl_arith.c

static Eterm* tmp_big_buff;

void init_arith()
{
      tmp_big_buff = (Eterm*) safe_alloc(sizeof(Eterm)*4);
}

in beam_emu (or some other place)

void init_emulator()
{
    ....

    init_arith();
    ....
}

and some declaration in global.h

I did not want to send a patch since this must be given some thought?

/Tony





More information about the erlang-questions mailing list