X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Ftinfo%2Fread_entry.c;h=9c6e9b0e8277f47b87f95238b644c22af3ef2fa8;hb=eb51b1ea1f75a0ec17c9c5937cb28df1e8eeec56;hp=66e3d31eeba61d45a87567dc61d63fe9d63f314c;hpb=4c9f63c460cb7134f142aa65f6866c175ed77605;p=ncurses.git diff --git a/ncurses/tinfo/read_entry.c b/ncurses/tinfo/read_entry.c index 66e3d31e..9c6e9b0e 100644 --- a/ncurses/tinfo/read_entry.c +++ b/ncurses/tinfo/read_entry.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2021,2022 Thomas E. Dickey * + * Copyright 2018-2022,2023 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -42,9 +42,7 @@ #include -MODULE_ID("$Id: read_entry.c,v 1.162 2022/04/16 21:00:00 tom Exp $") - -#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts)) +MODULE_ID("$Id: read_entry.c,v 1.165 2023/04/08 20:14:49 tom Exp $") #define MyNumber(n) (short) LOW_MSB(n) @@ -216,6 +214,8 @@ _nc_init_termtype(TERMTYPE2 *const tp) { unsigned i; + DEBUG(2, (T_CALLED("_nc_init_termtype(tp=%p)"), (void *) tp)); + #if NCURSES_XNAMES tp->num_Booleans = BOOLCOUNT; tp->num_Numbers = NUMCOUNT; @@ -239,6 +239,8 @@ _nc_init_termtype(TERMTYPE2 *const tp) for_each_string(i, tp) tp->Strings[i] = ABSENT_STRING; + + DEBUG(2, (T_RETURN(""))); } #if NCURSES_USE_DATABASE @@ -321,6 +323,9 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit) || bool_count < 0 || num_count < 0 || str_count < 0 + || bool_count > BOOLCOUNT + || num_count > NUMCOUNT + || str_count > STRCOUNT || str_size < 0) { returnDB(TGETENT_NO); } @@ -346,9 +351,8 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit) offset = (int) (have - MAX_NAME_SIZE); /* grab the booleans */ - if ((ptr->Booleans = TYPE_CALLOC(NCURSES_SBOOL, - max(BOOLCOUNT, bool_count))) == 0 - || Read(ptr->Booleans, (unsigned) bool_count) < bool_count) { + TYPE_CALLOC(NCURSES_SBOOL, max(BOOLCOUNT, bool_count), ptr->Booleans); + if (Read(ptr->Booleans, (unsigned) bool_count) < bool_count) { returnDB(TGETENT_NO); } @@ -361,15 +365,13 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit) even_boundary(name_size + bool_count); /* grab the numbers */ - if (!(ptr->Numbers = TYPE_CALLOC(NCURSES_INT2, max(NUMCOUNT, num_count))) - || !read_numbers(buf, num_count)) { + TYPE_CALLOC(NCURSES_INT2, max(NUMCOUNT, num_count), ptr->Numbers); + if (!read_numbers(buf, num_count)) { returnDB(TGETENT_NO); } convert_numbers(buf, ptr->Numbers, num_count); - if ((ptr->Strings = TYPE_CALLOC(char *, max(STRCOUNT, str_count))) == 0) { - returnDB(TGETENT_NO); - } + TYPE_CALLOC(char *, max(STRCOUNT, str_count), ptr->Strings); if (str_count) { /* grab the string offsets */ @@ -510,9 +512,7 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit) if (ext_str_count >= (max_entry_size / 2)) { returnDB(TGETENT_NO); } - if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0) { - returnDB(TGETENT_NO); - } + TYPE_CALLOC(char *, need, ptr->ext_Names); TR(TRACE_DATABASE, ("ext_NAMES starting @%d in extended_strings, first = %s", base, _nc_visbuf(ptr->ext_str_table + base)));