1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
Found from http://sourceforge.net/tracker/?func=detail&aid=2803527&group_id=108839&atid=651633
Index: FunctionBar.c
===================================================================
--- FunctionBar.c (revision 162)
+++ FunctionBar.c (working copy)
@@ -52,12 +52,14 @@ FunctionBar* FunctionBar_new(char** func
this->functions = malloc(sizeof(char*) * 15);
this->keys = malloc(sizeof(char*) * 15);
this->events = malloc(sizeof(int) * 15);
- int i = 0;
- while (i < 15 && functions[i]) {
+ int i;
+ for (i = 0; i < 15; i++) {
+ if (functions[i] == NULL) /* We don't know the size of the array, */
+ break; /* so let's assume it is NULL terminated */
+ /* and break if we find that NULL */
this->functions[i] = String_copy(functions[i]);
this->keys[i] = String_copy(keys[i]);
this->events[i] = events[i];
- i++;
}
this->size = i;
} else {
Index: htop.c
===================================================================
--- htop.c (revision 162)
+++ htop.c (working copy)
@@ -151,7 +151,7 @@ static void showHelp(ProcessList* pl) {
clear();
}
-static char* CategoriesFunctions[10] = {" ", " ", " ", " ", " ", " ", " ", " ", " ", "Done "};
+static char* CategoriesFunctions[] = {" ", " ", " ", " ", " ", " ", " ", " ", " ", "Done ", NULL};
static void Setup_run(Settings* settings, int headerHeight) {
ScreenManager* scr = ScreenManager_new(0, headerHeight, 0, -1, HORIZONTAL, true);
@@ -190,7 +190,7 @@ static HandlerResult pickWithEnter(Panel
}
static Object* pickFromVector(Panel* panel, Panel* list, int x, int y, char** keyLabels, FunctionBar* prevBar) {
- char* fuKeys[2] = {"Enter", "Esc"};
+ char* fuKeys[] = {"Enter", "Esc", NULL};
int fuEvents[2] = {13, 27};
if (!list->eventHandler)
Panel_setEventHandler(list, pickWithEnter);
@@ -326,7 +326,7 @@ int main(int argc, char** argv) {
Panel_setRichHeader(panel, ProcessList_printHeader(pl));
char* searchFunctions[] = {"Next ", "Exit ", " Search: ", NULL};
- char* searchKeys[] = {"F3", "Esc", " "};
+ char* searchKeys[] = {"F3", "Esc", " ", NULL};
int searchEvents[] = {KEY_F(3), 27, ERR};
FunctionBar* searchBar = FunctionBar_new(searchFunctions, searchKeys, searchEvents);
@@ -656,7 +656,7 @@ int main(int argc, char** argv) {
Panel* affinityPanel = AffinityPanel_new(pl->processorCount, curr);
- char* fuFunctions[2] = {"Set ", "Cancel "};
+ char* fuFunctions[3] = {"Set ", "Cancel ", NULL};
void* set = pickFromVector(panel, affinityPanel, 15, headerHeight, fuFunctions, defaultBar);
if (set) {
unsigned long new = AffinityPanel_getAffinity(affinityPanel);
@@ -695,7 +695,7 @@ int main(int argc, char** argv) {
{
Panel* sortPanel = Panel_new(0, 0, 0, 0, LISTITEM_CLASS, true, ListItem_compare);
Panel_setHeader(sortPanel, "Sort by");
- char* fuFunctions[2] = {"Sort ", "Cancel "};
+ char* fuFunctions[] = {"Sort ", "Cancel ", NULL};
ProcessField* fields = pl->fields;
for (int i = 0; fields[i]; i++) {
char* name = String_trim(Process_fieldTitles[fields[i]]);
|