Changeset 7e84168


Ignore:
Timestamp:
2013-06-22T21:50:15Z (12 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
ea166fe
Parents:
2f9027c
Message:

#1067: Restore nickname truncation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • nick.c

    r2f9027c r7e84168  
    120120        while( fmt && *fmt && ret->len < MAX_NICK_LENGTH )
    121121        {
    122                 char *part = NULL, chop = '\0', *asc = NULL;
     122                char *part = NULL, chop = '\0', *asc = NULL, *s;
     123                int len = INT_MAX;
    123124               
    124125                if( *fmt != '%' )
     
    143144                                fmt += 2;
    144145                        }
     146                        else if( isdigit( *fmt ) )
     147                        {
     148                                len = 0;
     149                                /* Grab a number. */
     150                                while( isdigit( *fmt ) )
     151                                        len = len * 10 + ( *(fmt++) - '0' );
     152                        }
    145153                        else if( g_strncasecmp( fmt, "nick", 4 ) == 0 )
    146154                        {
     
    202210                                                              "UTF-8", "", NULL, NULL, NULL );
    203211               
     212                if( chop && ( s = strchr( part, chop ) ) )
     213                        len = MIN( len, s - part );
     214               
    204215                if( part )
    205                         g_string_append( ret, part );
     216                {
     217                        if( len < INT_MAX )
     218                                g_string_append_len( ret, part, len );
     219                        else
     220                                g_string_append( ret, part );
     221                }
    206222                g_free( asc );
    207223        }
Note: See TracChangeset for help on using the changeset viewer.