diff options
-rw-r--r-- | symbols.cpp | 8 | ||||
-rw-r--r-- | symbols.h | 9 |
2 files changed, 12 insertions, 5 deletions
diff --git a/symbols.cpp b/symbols.cpp index 8e81354..c05d153 100644 --- a/symbols.cpp +++ b/symbols.cpp @@ -51,10 +51,10 @@ SymbolList::lookup(const gchar *name, const gchar *prefix, bool case_sensitive) GList * SymbolList::get_glist(void) { - GList *list = NULL; - - while (size--) - list = g_list_prepend(list, (gchar *)entries[size].name); + if (!list) { + for (gint i = size; i; i--) + list = g_list_prepend(list, (gchar *)entries[i-1].name); + } return list; } @@ -14,9 +14,16 @@ private: const Entry *entries; gint size; + /* for auto-completions */ + GList *list; + public: SymbolList(const Entry *_entries = NULL, gint _size = 0) - : entries(_entries), size(_size) {} + : entries(_entries), size(_size), list(NULL) {} + ~SymbolList() + { + g_list_free(list); + } gint lookup(const gchar *name, const gchar *prefix = "", bool case_sensitive = false); |