diff -u --recursive bogl-0.1.18.orig/bogl-term.c bogl-0.1.18/bogl-term.c --- bogl-0.1.18.orig/bogl-term.c 2003-11-04 20:38:22.000000000 -0800 +++ bogl-0.1.18/bogl-term.c 2009-09-26 10:41:22.000000000 -0700 @@ -579,25 +579,29 @@ if (wc == 'm') { /* setab=\E[4%p1%dm, setaf=\E[3%p1%dm */ - if (term->arg[0] == 4 || term->arg[0] == 24) - term->ul = term->arg[0] == 4; - else if (30 <= term->arg[0] && term->arg[0] < 38) - term->fg = term->arg[0] - 30; - else if (40 <= term->arg[0] && term->arg[0] < 48) - term->bg = term->arg[0] - 40; - else if (term->arg[0] == 39) - term->fg = term->def_fg; - else if (term->arg[0] == 49) - term->bg = term->def_bg; - else if (term->arg[0] == 7) - term->rev = 1; - else if (term->arg[0] == 27) - term->rev = 0; - else if (term->arg[0] == 0) + for (i = 0; i < term->state; i++) { - term->rev = 0; - term->fg = term->def_fg; - term->bg = term->def_bg; + if (term->arg[i] == 4 || term->arg[i] == 24) + term->ul = term->arg[i] == 4; + else if (30 <= term->arg[i] && term->arg[i] < 38) + term->fg = term->arg[i] - 30; + else if (40 <= term->arg[i] && term->arg[i] < 48) + term->bg = term->arg[i] - 40; + else if (term->arg[i] == 39) + term->fg = term->def_fg; + else if (term->arg[i] == 49) + term->bg = term->def_bg; + else if (term->arg[i] == 7) + term->rev = 1; + else if (term->arg[i] == 27) + term->rev = 0; + else if (term->arg[i] == 0) + { + term->rev = 0; + term->ul = 0; + term->fg = term->def_fg; + term->bg = term->def_bg; + } } term->state = 0; diff -u --recursive bogl-0.1.18.orig/bogl-term.h bogl-0.1.18/bogl-term.h --- bogl-0.1.18.orig/bogl-term.h 2003-11-04 19:01:47.000000000 -0800 +++ bogl-0.1.18/bogl-term.h 2009-09-26 10:41:22.000000000 -0700 @@ -16,7 +16,7 @@ int state; int cur_visible; int xp, yp; - int arg[2]; + int arg[11]; mbstate_t ps; wchar_t *screen; /* character in cell, or 0 */ int *screenfg, *screenbg, *screenul; /* colours in cell */