X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcomp_error.c;h=48f48784d8db3b563a64faf7540f917af2994d95;hp=48ab9777a2c767ae8edb310e2ea5e923a0743470;hb=HEAD;hpb=eccca377f55c70b12e3e92621d94d1e1c1fcfb7d diff --git a/ncurses/tinfo/comp_error.c b/ncurses/tinfo/comp_error.c index 48ab9777..3e6b4022 100644 --- a/ncurses/tinfo/comp_error.c +++ b/ncurses/tinfo/comp_error.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2016,2019 Free Software Foundation, Inc. * + * Copyright 2019-2020,2023 Thomas E. Dickey * + * Copyright 1998-2012,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -41,7 +42,7 @@ #include -MODULE_ID("$Id: comp_error.c,v 1.39 2019/01/20 02:31:22 tom Exp $") +MODULE_ID("$Id: comp_error.c,v 1.44 2023/06/15 20:27:02 tom Exp $") NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE; NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */ @@ -59,8 +60,15 @@ _nc_get_source(void) NCURSES_EXPORT(void) _nc_set_source(const char *const name) { - FreeIfNeeded(SourceName); - SourceName = strdup(name); + if (name == NULL) { + free(SourceName); + SourceName = NULL; + } else if (SourceName == NULL) { + SourceName = strdup(name); + } else if (strcmp(name, SourceName)) { + free(SourceName); + SourceName = strdup(name); + } } NCURSES_EXPORT(void) @@ -94,9 +102,9 @@ static NCURSES_INLINE void where_is_problem(void) { fprintf(stderr, "\"%s\"", SourceName ? SourceName : "?"); - if (_nc_curr_line >= 0) + if (_nc_curr_line > 0) fprintf(stderr, ", line %d", _nc_curr_line); - if (_nc_curr_col >= 0) + if (_nc_curr_col > 0) fprintf(stderr, ", col %d", _nc_curr_col); if (TermType != 0 && TermType[0] != '\0') fprintf(stderr, ", terminal '%s'", TermType); @@ -147,9 +155,7 @@ _nc_syserr_abort(const char *const fmt, ...) /* If we're debugging, try to show where the problem occurred - this * will dump core. */ -#ifndef USE_ROOT_ENVIRON - if (getuid() != ROOT_UID) -#endif + if (_nc_env_access()) abort(); #endif /* Dumping core in production code is not a good idea.