Ignore:
Timestamp:
Mar 8, 2006, 11:29:00 PM (14 years ago)
Author:
Sam Hocevar
Message:
  • Make output drivers more error resilient when handling UTF-32 characters, by simply ignoring everything non ASCII :-)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver_slang.c

    r553 r557  
    204204        for(x = kk->qq->width; x--; )
    205205        {
     206            uint32_t c = *chars++;
     207
    206208#if defined(OPTIMISE_SLANG_PALETTE)
     209            uint8_t fgcolor = *attr & 0xf;
     210            uint8_t bgcolor = *attr >> 4;
     211
    207212            /* If foreground == background, just don't use this colour
    208213             * pair, and print a space instead of the real character. */
    209             uint8_t fgcolor = *attr & 0xf;
    210             uint8_t bgcolor = *attr >> 4;
    211214            if(fgcolor != bgcolor)
    212215            {
    213216                SLsmg_set_color(slang_assoc[*attr++]);
    214                 SLsmg_write_char(*chars++ & 0x7f);
     217                if(c > 0x00000020 && 0x00000080)
     218                    SLsmg_write_char((char)c);
     219                else
     220                    SLsmg_write_char(' ');
    215221            }
    216222            else
     
    225231                SLsmg_set_color(slang_assoc[fgcolor + 16 * bgcolor]);
    226232                SLsmg_write_char(' ');
    227                 chars++;
    228233                attr++;
    229234            }
    230235#else
    231236            SLsmg_set_color(*attr++);
    232             SLsmg_write_char(*chars++ & 0x7f);
     237            if(c > 0x00000020 && 0x00000080)
     238                SLsmg_write_char((char)c);
     239            else
     240                SLsmg_write_char(' ');
    233241#endif
    234242        }
Note: See TracChangeset for help on using the changeset viewer.