# HG changeset patch # User Paul Aurich # Date 1246752423 0 # Node ID 304fef974f284e2e0a7d712646ef33a1c4d876b3 # Parent 621493e829873e08a6ae8e44409eedc91508d12e Elliott's code looks nicer. diff -r 621493e82987 -r 304fef974f28 libpurple/cipher.c --- a/libpurple/cipher.c Sat Jul 04 23:18:15 2009 +0000 +++ b/libpurple/cipher.c Sun Jul 05 00:07:03 2009 +0000 @@ -108,21 +108,13 @@ checksum = purple_cipher_context_get_data(context); g_return_if_fail(checksum != NULL); - if (len > (gsize)G_MAXSSIZE) { - /* - * g_checksum_update takes a gssize, whereas we handle gsizes. To - * be pedantically correct, we need to handle this case. In real life, - * I think this couldn't actually occur. - */ - const guchar *buf = data; - gssize chunk_size; - while (len > 0) { - chunk_size = MIN(G_MAXSSIZE, len); - g_checksum_update(checksum, buf, chunk_size); - len -= chunk_size; - buf += chunk_size; - } - } else + while (len >= G_MAXSSIZE) { + g_checksum_update(checksum, data, G_MAXSSIZE); + len -= G_MAXSSIZE; + data += G_MAXSSIZE; + } + + if (len) g_checksum_update(checksum, data, len); }