Hi
After analyzing the source code make 4.0 figured out that the problem in the 
function find_char_unquote (read.c).
static char *
find_char_unquote (char * string, int map)
{
  unsigned int string_len = 0 ;
  char * p = string;
  / * Always stop on NUL. * /
  map | = MAP_NUL;
  while ( 1)
    {
      while (! STOP_SET (* p, map))
        + + p;
      if (* p == '\ 0' )
        break;
        
        ...
The problem in the macro STOP_SET (makeint.h)
# define STOP_SET (_v, _m) ANY_SET (stopchar_map [(int) (_v)], (_m))
Conversion to int is not correct.
Characters with codes greater than 0x7f ( in particular in Cyrillic UTF- 8 ) 
into a large negative number.
Therefore appeal to non-existent memory, because stopchar_map equal size 
(UCHAR_MAX +1) (main.c)
I replaced the
# define STOP_SET (_v, _m) ANY_SET (stopchar_map [(unsigned char) (_v)], (_m))
Thereafter, all the works.

Reply via email to