# HG changeset patch # User Mark Doliner # Date 1248021092 0 # Node ID d1b882345f5b6e39b119e53cd56abeb220a893f4 # Parent c800bdb5ebbc99b0fa3a66f29d9d0f5e0a8124da Surround this macro in do { } while (0); so that callers don't need to remember that it needs to be surrounded in braces. I think the do-while isn't strictly necessary, as I think you can have braces where ever you want, but everytime I see someone else use this technique they always have the do-while diff -r c800bdb5ebbc -r d1b882345f5b libpurple/util.c --- a/libpurple/util.c Sun Jul 19 16:28:32 2009 +0000 +++ b/libpurple/util.c Sun Jul 19 16:31:32 2009 +0000 @@ -1409,7 +1409,8 @@ gboolean ignore; }; -#define ALLOW_TAG_ALT(x, y) if(!g_ascii_strncasecmp(c, "<" x " ", strlen("<" x " "))) { \ +#define ALLOW_TAG_ALT(x, y) do { \ + if(!g_ascii_strncasecmp(c, "<" x " ", strlen("<" x " "))) { \ const char *o = c + strlen("<" x); \ const char *p = NULL, *q = NULL, *r = NULL; \ GString *innards = g_string_new(""); \ @@ -1480,6 +1481,7 @@ c = strchr(c, '>') + 1; \ continue; \ } \ + } while (0); #define ALLOW_TAG(x) ALLOW_TAG_ALT(x, x) void purple_markup_html_to_xhtml(const char *html, char **xhtml_out, @@ -1572,9 +1574,8 @@ ALLOW_TAG("h5"); ALLOW_TAG("h6"); /* we only allow html to start the message */ - if(c == html) { + if(c == html) ALLOW_TAG("html"); - } ALLOW_TAG_ALT("i", "em"); ALLOW_TAG_ALT("italic", "em"); ALLOW_TAG("li");