From b22e008d68e36719f3c6a808f8d8adc905da7250 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Fri, 14 Sep 2018 15:31:16 -0400 Subject: Apply consecutive formatting codes at once Fixes the failing splits test. --- format.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/format.c b/format.c index 8120165..a2aaf4b 100644 --- a/format.c +++ b/format.c @@ -97,13 +97,16 @@ bool formatParse(struct Format *format, const wchar_t *split) { } const wchar_t *init = format->str; - switch (format->str[0]) { - break; case IRCBold: format->str++; format->bold ^= true; - break; case IRCItalic: format->str++; format->italic ^= true; - break; case IRCUnderline: format->str++; format->underline ^= true; - break; case IRCReverse: format->str++; format->reverse ^= true; - break; case IRCColor: format->str++; parseColor(format); - break; case IRCReset: format->str++; formatReset(format); + for (bool done = false; !done;) { + switch (format->str[0]) { + break; case IRCBold: format->str++; format->bold ^= true; + break; case IRCItalic: format->str++; format->italic ^= true; + break; case IRCUnderline: format->str++; format->underline ^= true; + break; case IRCReverse: format->str++; format->reverse ^= true; + break; case IRCColor: format->str++; parseColor(format); + break; case IRCReset: format->str++; formatReset(format); + break; default: done = true; + } } format->split = (split >= init && split <= format->str); @@ -170,8 +173,10 @@ int main() { assert(testColor(L"\00399,99a", IRCDefault, IRCDefault, 6)); assert(testSplits(L"ab")); + assert(testSplits(L"\002")); assert(testSplits(L"\002ab")); assert(testSplits(L"a\002b")); + assert(testSplits(L"\002\003")); assert(testSplits(L"a\002\003b")); assert(testSplits(L"a\0031b")); assert(testSplits(L"a\00312b")); -- cgit 1.4.1