Bug in erl_interface 3.3.0 (with fix)

Kent Boortz kent@REDACTED
Fri Apr 5 18:40:23 CEST 2002


Hans Nilsson <hans@REDACTED> writes:
> In encode_term.c in erl_interface 3.3.0 (open source erlang R8B-0) there 
> is a bug in the function ei_x_encode_term.
> 
> 32c32
> <     if (!x_fix_buff(x, i))
> ---
> >     if (!x_fix_buff(x, (i+erl_term_len(t))    ))
> 
> 
> With this patch it will calculate the size of the needed area before
> checking the area size.

Thank you for the patch. I can't find the reason why this function
does not follow the safer coding pattern of the ei_x_encode_*
functions in "ei_x_encode.c", i.e. why it was not written like

  int ei_x_encode_term(ei_x_buff* x, void* t)
  {
      int i = x->index;
      ei_encode_term(NULL, &i, t);
      if (!x_fix_buff(x, i))
          return -1;
      return ei_encode_term(x->buff, &x->index, t);
  }

kent



More information about the erlang-questions mailing list