comparison finch/libgnt/gntmenu.c @ 18447:8fc91e437981

Possible crash fix.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Fri, 06 Jul 2007 06:14:31 +0000
parents daf41b214ffb
children da550279d390 7a5025b8698c
comparison
equal deleted inserted replaced
18446:197ac83893a5 18447:8fc91e437981
114 menu_tree_add(menu, it, item); 114 menu_tree_add(menu, it, item);
115 } 115 }
116 } 116 }
117 } 117 }
118 118
119 #define GET_VAL(ch) ((ch >= '0' && ch <= '9') ? (ch - '0') : (ch >= 'a' && ch <= 'z') ? (10 + ch - 'a') : ch) 119 #define GET_VAL(ch) ((ch >= '0' && ch <= '9') ? (ch - '0') : (ch >= 'a' && ch <= 'z') ? (10 + ch - 'a') : 36)
120 120
121 static void 121 static void
122 assign_triggers(GntMenu *menu) 122 assign_triggers(GntMenu *menu)
123 { 123 {
124 GList *iter; 124 GList *iter;
125 gboolean bools[36]; 125 gboolean bools[37];
126 126
127 memset(bools, 0, sizeof(bools)); 127 memset(bools, 0, sizeof(bools));
128 bools[36] = 1;
129
128 for (iter = menu->list; iter; iter = iter->next) { 130 for (iter = menu->list; iter; iter = iter->next) {
129 GntMenuItem *item = iter->data; 131 GntMenuItem *item = iter->data;
130 char trigger = gnt_menuitem_get_trigger(item); 132 char trigger = tolower(gnt_menuitem_get_trigger(item));
131 if (trigger == '\0' || trigger == ' ') 133 if (trigger == '\0' || trigger == ' ')
132 continue; 134 continue;
133 bools[(int)GET_VAL(trigger)] = 1; 135 bools[(int)GET_VAL(trigger)] = 1;
134 } 136 }
135 137
139 const char *text = item->text; 141 const char *text = item->text;
140 if (trigger != '\0') 142 if (trigger != '\0')
141 continue; 143 continue;
142 while (*text) { 144 while (*text) {
143 char ch = tolower(*text++); 145 char ch = tolower(*text++);
144 if (bools[(int)GET_VAL(ch)]) 146 if (ch == ' ' || bools[(int)GET_VAL(ch)])
145 continue; 147 continue;
146 trigger = ch; 148 trigger = ch;
147 break; 149 break;
148 } 150 }
149 if (trigger == 0) 151 if (trigger == 0)