dict @ 6ed576974dec969ad2745a451a6f680a3cdbcfc4

 1diff --git a/dict/main.c b/dict/main.c
 2index 98608ccc050f069605e61e62f4af3b65775cc990..18aeb63dec53940c5354b71d584f04cc4e8682ad 100644
 3--- a/dict/main.c
 4+++ b/dict/main.c
 5@@ -72,11 +72,9 @@ }
 6 
 7 void search(char *sch, int len)
 8 {
 9-    char s[len+2];
10 
11-    sprintf(s, "%%%*s%%", len, sch);
12 
13-    LIST* l = data_select(data, s, len+2, LINES-5);
14+    LIST* l = data_select(data, sch, len, LINES-5);
15 
16     for (int y = 0; y < (LINES-5); y++) {
17         move(y, 0);
18diff --git a/lib/data.c b/lib/data.c
19index 1c1a754f5260b5e15d9f532ad9667689f74f387f..afbbbb116e04e1880add4f47bad9704411f011ca 100644
20--- a/lib/data.c
21+++ b/lib/data.c
22@@ -6,8 +6,8 @@ #include "data.h"
23 #include "../lib/util.h"
24 
25 const char *insert_into = "INSERT INTO words (LINE) VALUES($VVV);";
26-const char *select_words = "SELECT Id, Line FROM words WHERE line like $VVV LIMIT $NNN;";
27-const char *create_table =  "CREATE TABLE IF NOT EXISTS words (ID INTEGER PRIMARY KEY AUTOINCREMENT, LINE TEXT NOT NULL);";
28+const char *select_words = "SELECT Id, Line FROM words WHERE line MATCH $VVV LIMIT $NNN;";
29+const char *create_table =  "CREATE VIRTUAL TABLE IF NOT EXISTS words USING fts4 (ID INTEGER PRIMARY KEY AUTOINCREMENT, LINE TEXT NOT NULL);";
30 
31 Data* new_data(const char* con)
32 {
33diff --git a/lib/list.c b/lib/list.c
34index 52feb767f49eaf205b9926a20c946d0dd570a959..be1ac61c083c7462c3eb2d04b2c3f58080a4dea5 100644
35--- a/lib/list.c
36+++ b/lib/list.c
37@@ -36,9 +36,6 @@ }
38 
39 void list_free(LIST* list)
40 {
41-    for (unsigned int x = 0; x < list->size; x++)
42-        free(list->list[x]);
43-
44     free(list->list);
45     free(list);
46 }