mirror of https://github.com/xzeldon/htop.git
Fix segfault in BarMeterMode_draw() for small terminal widths
This commit is contained in:
parent
aa167adb90
commit
717758409e
|
@ -6,6 +6,8 @@ What's new in version 0.9.1
|
||||||
* Meters update in every screen (no longer halting while on Setup, etc.)
|
* Meters update in every screen (no longer halting while on Setup, etc.)
|
||||||
* BUGFIX: Support larger numbers for process times.
|
* BUGFIX: Support larger numbers for process times.
|
||||||
(thanks to Tristan Nakagawa for the report.)
|
(thanks to Tristan Nakagawa for the report.)
|
||||||
|
* BUGFIX: Segfault in BarMeterMode_draw() for small terminal widths
|
||||||
|
(patch by Sebastian Pipping)
|
||||||
|
|
||||||
What's new in version 0.9
|
What's new in version 0.9
|
||||||
|
|
||||||
|
|
10
Meter.c
10
Meter.c
|
@ -264,13 +264,19 @@ static void BarMeterMode_draw(Meter* this, int x, int y, int w) {
|
||||||
|
|
||||||
w--;
|
w--;
|
||||||
x++;
|
x++;
|
||||||
char bar[w];
|
|
||||||
|
if (w < 1) {
|
||||||
|
attrset(CRT_colors[RESET_COLOR]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
char bar[w + 1];
|
||||||
|
|
||||||
int blockSizes[10];
|
int blockSizes[10];
|
||||||
for (int i = 0; i < w; i++)
|
for (int i = 0; i < w; i++)
|
||||||
bar[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...
|
// First draw in the bar[] buffer...
|
||||||
double total = 0.0;
|
double total = 0.0;
|
||||||
|
|
Loading…
Reference in New Issue