--- trunk/Meter.c 2011/08/26 20:52:35 229 +++ trunk/Meter.c 2011/08/26 20:55:09 230 @@ -264,13 +264,19 @@ w--; x++; - char bar[w]; + + if (w < 1) { + attrset(CRT_colors[RESET_COLOR]); + return; + } + char bar[w + 1]; int blockSizes[10]; for (int i = 0; i < w; i++) bar[i] = ' '; - sprintf(bar + (w-strlen(buffer)), "%s", buffer); + const size_t barOffset = w - MIN(strlen(buffer), w); + snprintf(bar + barOffset, w - barOffset + 1, "%s", buffer); // First draw in the bar[] buffer... double total = 0.0;