Mercurial > pidgin
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) |