X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcomp_parse.c;h=ff8d5657a197a8f194b684864e8d9e0a4a1e87f1;hb=3ffedbf1016b2d7026e7543fe73e87b046fbd862;hp=82672fa8ce2ed46693665fb320e9bbce723b527a;hpb=47c323416bb23200896a311ceadbea794b0eb3a6;p=ncurses.git diff --git a/ncurses/tinfo/comp_parse.c b/ncurses/tinfo/comp_parse.c index 82672fa8..ff8d5657 100644 --- a/ncurses/tinfo/comp_parse.c +++ b/ncurses/tinfo/comp_parse.c @@ -48,7 +48,7 @@ #include -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); }