Hi, i discover a bug in dwgspec.
follow the bug and solution:

bug:
bit_read_TV(Bit_Chain * dat)
{
  unsigned int i;
  unsigned int length;
  unsigned char *chain;

  length = bit_read_BS(dat);
  chain = (unsigned char *) malloc(length + 1);
  for (i = 0; i < length; i++)
    {
      chain[i] = bit_read_RC(dat);
      if (chain[i] == 0)
chain[i] = '*';//<-----------end of strings are switched by *, so text are not displayed correctly
      else if (!isprint (chain[i]))
chain[i] = '~';//<-----------characters like é,ç,etc.... are switched by ~, so text are not displayed correctly
    }
  chain[i] = '\0';

  return (chain);
}



possible solution:

 bit_read_TV(Bit_Chain * dat)
{
  unsigned int i;
  unsigned int length;
  unsigned char *chain;

  length = bit_read_BS(dat);
  chain = (unsigned char *) malloc(length + 1);
  for (i = 0; i < length; i++)
    {
      chain[i] = bit_read_RC(dat);
    }
  chain[i] = '\0';

  return (chain);
}


regards
Nei






Reply via email to