]> de.git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - correct.c
Got rid of all the memleaks. We can now merge with master.
[xonotic/gmqcc.git] / correct.c
index 0c1fc88a348c87f656d3ec145a1beb18cefcb101..e32678e754e3770ebb5d142d06a9fc7c0a283ec4 100644 (file)
--- a/correct.c
+++ b/correct.c
@@ -342,7 +342,7 @@ void correct_add(ht table, size_t ***size, const char *ident) {
     }
 }
 
-char *correct_correct(ht table, const char *ident) {
+char *correct_str(ht table, const char *ident) {
     char **e1;
     char **e2;
     char  *e1ident;
@@ -356,11 +356,11 @@ char *correct_correct(ht table, const char *ident) {
     if (correct_find(table, ident))
         return found;
 
-    mem_d(found);
     if ((e1rows = correct_size(ident))) {
         e1      = correct_edit(ident);
 
         if ((e1ident = correct_maximum(table, e1, e1rows))) {
+            mem_d(found);
             found = util_strdup(e1ident);
             correct_cleanup(e1, e1rows);
             return found;
@@ -368,8 +368,10 @@ char *correct_correct(ht table, const char *ident) {
     }
 
     e2 = correct_known(table, e1, e1rows, &e2rows);
-    if (e2rows && ((e2ident = correct_maximum(table, e2, e2rows))))
+    if (e2rows && ((e2ident = correct_maximum(table, e2, e2rows)))) {
+        mem_d(found);
         found = util_strdup(e2ident);
+    }
     
     correct_cleanup(e1, e1rows);
     correct_cleanup(e2, e2rows);
@@ -385,37 +387,3 @@ void correct_del(ht dictonary, size_t **data) {
     vec_free(data);
     util_htdel(dictonary);
 }
-
-int main() {
-    opts.debug = true;
-    opts.memchk = true;
-    con_init();
-
-    ht       t = util_htnew(1024);
-    size_t **d = NULL;
-
-    correct_add(t, &d, "hellobain");
-    correct_add(t, &d, "ellor");
-    correct_add(t, &d, "world");
-
-    printf("found identifiers: (2)\n");
-    printf(" 1: hellobain\n");
-    printf(" 2: ellor\n");
-    printf(" 3: world\n");
-
-    char *b = correct_correct(t, "rld");
-    char *a = correct_correct(t, "ello");
-    char *c = correct_correct(t, "helbain");
-
-    printf("invalid identifier: `%s` (did you mean: `%s`?)\n", "ello", a);
-    printf("invalid identifier: `%s` (did you mean: `%s`?)\n", "rld", b);
-    printf("invalid identifier: `%s` (did you mean: `%s`?)\n", "helbain", c);
-
-    correct_del(t, d);
-    mem_d(b);
-    mem_d(a);
-    mem_d(c);
-
-    /*util_meminfo();*/
-
-}