]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/comp_parse.c
ncurses 6.3 - patch 20220917
[ncurses.git] / ncurses / tinfo / comp_parse.c
index 82672fa8ce2ed46693665fb320e9bbce723b527a..ff8d5657a197a8f194b684864e8d9e0a4a1e87f1 100644 (file)
@@ -48,7 +48,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: comp_parse.c,v 1.117 2022/04/30 15:57:27 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.124 2022/09/10 19:54:59 tom Exp $")
 
 static void sanity_check2(TERMTYPE2 *, bool);
 NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype2) (TERMTYPE2 *, bool) = sanity_check2;
@@ -61,7 +61,7 @@ enqueue(ENTRY * ep)
 {
     ENTRY *newp;
 
-    DEBUG(1, (T_CALLED("enqueue(ep=%p)"), ep));
+    DEBUG(2, (T_CALLED("enqueue(ep=%p)"), (void *) ep));
 
     newp = _nc_copy_entry(ep);
     if (newp == 0)
@@ -73,6 +73,7 @@ enqueue(ENTRY * ep)
     newp->next = 0;
     if (newp->last)
        newp->last->next = newp;
+    DEBUG(2, (T_RETURN("")));
 }
 
 #define NAMEBUFFER_SIZE (MAX_NAME_SIZE + 2)
@@ -220,9 +221,9 @@ _nc_read_entry_source(FILE *fp, char *buf,
     bool oldsuppress = _nc_suppress_warnings;
     int immediate = 0;
 
-    DEBUG(1,
+    DEBUG(2,
          (T_CALLED("_nc_read_entry_source(file=%p, buf=%p, literal=%d, silent=%d, hook=%p)"),
-          fp, buf, literal, silent, hook));
+          (void *) fp, buf, literal, silent, (void *) hook));
 
     if (silent)
        _nc_suppress_warnings = TRUE;   /* shut the lexer up, too */
@@ -251,8 +252,10 @@ _nc_read_entry_source(FILE *fp, char *buf,
            FreeIfNeeded(thisentry.tterm.Booleans);
            FreeIfNeeded(thisentry.tterm.Numbers);
            FreeIfNeeded(thisentry.tterm.Strings);
+           FreeIfNeeded(thisentry.tterm.str_table);
 #if NCURSES_XNAMES
            FreeIfNeeded(thisentry.tterm.ext_Names);
+           FreeIfNeeded(thisentry.tterm.ext_str_table);
 #endif
        }
     }
@@ -271,6 +274,7 @@ _nc_read_entry_source(FILE *fp, char *buf,
 #endif
 
     _nc_suppress_warnings = oldsuppress;
+    DEBUG(2, (T_RETURN("")));
 }
 
 #if 0 && NCURSES_XNAMES
@@ -409,7 +413,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
        int matchcount = 0;
 
        for_entry_list(rp) {
-           if (qp > rp
+           if (qp > rp // FIXME - pointer-comparison is wrong...
                && check_collisions(qp->tterm.term_names,
                                    rp->tterm.term_names,
                                    matchcount + 1)) {
@@ -455,8 +459,8 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
            for_entry_list(rp) {
                if (rp != qp
                    && _nc_name_match(rp->tterm.term_names, lookfor, "|")) {
-                   DEBUG(2, ("%s: resolving use=%s (in core)",
-                             child, lookfor));
+                   DEBUG(2, ("%s: resolving use=%s %p (in core)",
+                             child, lookfor, lookfor));
 
                    qp->uses[i].link = rp;
                    foundit = TRUE;
@@ -537,20 +541,22 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
 
            for_entry_list(qp) {
                if (qp->nuses > 0) {
-                   DEBUG(2, ("%s: attempting merge",
-                             _nc_first_name(qp->tterm.term_names)));
+                   DEBUG(2, ("%s: attempting merge of %d entries",
+                             _nc_first_name(qp->tterm.term_names),
+                             qp->nuses));
                    /*
                     * If any of the use entries we're looking for is
                     * incomplete, punt.  We'll catch this entry on a
                     * subsequent pass.
                     */
-                   for (i = 0; i < qp->nuses; i++)
+                   for (i = 0; i < qp->nuses; i++) {
                        if (qp->uses[i].link
                            && qp->uses[i].link->nuses) {
                            DEBUG(2, ("%s: use entry %d unresolved",
                                      _nc_first_name(qp->tterm.term_names), i));
                            goto incomplete;
                        }
+                   }
 
                    /*
                     * First, make sure there is no garbage in the
@@ -583,8 +589,10 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
                    FreeIfNeeded(qp->tterm.Booleans);
                    FreeIfNeeded(qp->tterm.Numbers);
                    FreeIfNeeded(qp->tterm.Strings);
+                   FreeIfNeeded(qp->tterm.str_table);
 #if NCURSES_XNAMES
                    FreeIfNeeded(qp->tterm.ext_Names);
+                   FreeIfNeeded(qp->tterm.ext_str_table);
 #endif
                    qp->tterm = merged.tterm;
                    _nc_wrap_entry(qp, TRUE);
@@ -745,7 +753,7 @@ sanity_check2(TERMTYPE2 *tp, bool literal)
 NCURSES_EXPORT(void)
 _nc_leaks_tic(void)
 {
-    T((T_CALLED("_nc_free_tic()")));
+    T((T_CALLED("_nc_leaks_tic()")));
     _nc_globals.leak_checking = TRUE;
     _nc_alloc_entry_leaks();
     _nc_captoinfo_leaks();
@@ -755,11 +763,13 @@ _nc_leaks_tic(void)
     _nc_codes_leaks();
 #endif
     _nc_tic_expand(0, FALSE, 0);
+    T((T_RETURN("")));
 }
 
 NCURSES_EXPORT(void)
 _nc_free_tic(int code)
 {
+    T((T_CALLED("_nc_free_tic(%d)"), code));
     _nc_leaks_tic();
     exit_terminfo(code);
 }