/pidgin/main: d32f538596e3: MXit: Fix decoding of font-size chan...
Andrew Victor
andrew.victor at mxit.com
Sat Jan 26 05:41:36 EST 2013
Changeset: d32f538596e3b11a00c95ff7bb8c66959f3fdda0
Author: Andrew Victor <andrew.victor at mxit.com>
Date: 2013-01-26 12:41 +0200
Branch: release-2.x.y
URL: http://hg.pidgin.im/pidgin/main/rev/d32f538596e3
Description:
MXit: Fix decoding of font-size changes in the markup of received messages.
diffstat:
ChangeLog | 1 +
libpurple/protocols/mxit/markup.c | 84 ++++++++++++++++++--------------------
2 files changed, 41 insertions(+), 44 deletions(-)
diffs (121 lines):
diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -46,6 +46,7 @@ version 2.10.7:
still have a pending invite.
* The buddy's name was not centered vertically in the buddy-list if they
did not have a status-message or mood set.
+ * Fix decoding of font-size changes in the markup of received messages.
Yahoo!:
* Fix a double-free in profile/picture loading code. (Mihai Serban)
diff --git a/libpurple/protocols/mxit/markup.c b/libpurple/protocols/mxit/markup.c
--- a/libpurple/protocols/mxit/markup.c
+++ b/libpurple/protocols/mxit/markup.c
@@ -748,6 +748,7 @@ void mxit_parse_markup( struct RXMsgData
gboolean tag_bold = FALSE;
gboolean tag_under = FALSE;
gboolean tag_italic = FALSE;
+ int font_size = 0;
#ifdef MXIT_DEBUG_MARKUP
purple_debug_info( MXIT_PLUGIN_ID, "Markup RX (original): '%s'\n", message );
@@ -875,59 +876,54 @@ void mxit_parse_markup( struct RXMsgData
}
break;
case '.' :
- if ( !( msgflags & CP_MSG_EMOTICON ) ) {
- g_string_append_c( mx->msg, message[i] );
- break;
- }
- else if ( i + 1 >= len ) {
+ if ( i + 1 >= len ) {
/* message too short */
g_string_append_c( mx->msg, '.' );
break;
}
- switch ( message[i+1] ) {
- case '+' :
- /* increment text size */
- g_string_append( mx->msg, "<font size=\"+1\">" );
- i++;
- break;
- case '-' :
- /* decrement text size */
- g_string_append( mx->msg, "<font size=\"-1\">" );
- i++;
- break;
- case '{' :
- /* custom emoticon */
- if ( i + 2 >= len ) {
- /* message too short */
- g_string_append_c( mx->msg, '.' );
- break;
- }
+ if ( ( msgflags & CP_MSG_EMOTICON ) && ( message[i+1] == '{' ) ) {
+ /* custom emoticon */
+ if ( i + 2 >= len ) {
+ /* message too short */
+ g_string_append_c( mx->msg, '.' );
+ break;
+ }
- parse_emoticon_str( &message[i+2], tmpstr1 );
- if ( tmpstr1[0] != '\0' ) {
- mx->got_img = TRUE;
+ parse_emoticon_str( &message[i+2], tmpstr1 );
+ if ( tmpstr1[0] != '\0' ) {
+ mx->got_img = TRUE;
- if ( g_hash_table_lookup( mx->session->iimages, tmpstr1 ) ) {
- /* emoticon found in the cache, so we do not have to request it from the WAPsite */
- }
- else {
- /* request emoticon from the WAPsite */
- mx->img_count++;
- emoticon_request( mx, tmpstr1 );
- }
+ if ( g_hash_table_lookup( mx->session->iimages, tmpstr1 ) ) {
+ /* emoticon found in the cache, so we do not have to request it from the WAPsite */
+ }
+ else {
+ /* request emoticon from the WAPsite */
+ mx->img_count++;
+ emoticon_request( mx, tmpstr1 );
+ }
- g_string_append_printf( mx->msg, MXIT_II_TAG"%s>", tmpstr1 );
- i += strlen( tmpstr1 ) + 2;
- }
- else
- g_string_append_c( mx->msg, '.' );
+ g_string_append_printf( mx->msg, MXIT_II_TAG"%s>", tmpstr1 );
+ i += strlen( tmpstr1 ) + 2;
+ }
+ else
+ g_string_append_c( mx->msg, '.' );
+ }
+ else if ( ( msgflags & CP_MSG_MARKUP ) && ( message[i+1] == '+' ) ) {
+ /* increment text size */
+ font_size++;
+ g_string_append_printf( mx->msg, "<font size=\"%+i\">", font_size );
+ i++;
+ }
+ else if ( ( msgflags & CP_MSG_MARKUP ) && ( message[i+1] == '-' ) ) {
+ /* decrement text size */
+ font_size--;
+ g_string_append_printf( mx->msg, "<font size=\"%+i\">", font_size );
+ i++;
+ }
+ else
+ g_string_append_c( mx->msg, '.' );
- break;
- default :
- g_string_append_c( mx->msg, '.' );
- break;
- }
break;
case '\\' :
if ( i + 1 >= len ) {
More information about the Commits
mailing list