less verbose sanity checking
If the 'sanity_check' option triggers a warning, don't show the "Program in disorder! (Save and restore might fix this.)" and "Report these messages to <devteam>." messages and also don't run the crash report submission. Doesn't affect the fuzzer because it escalates impossible() to panic() before reaching those extra messages.
This commit is contained in:
@@ -428,7 +428,6 @@ extern void end_of_input(void);
|
|||||||
#endif
|
#endif
|
||||||
extern char readchar(void);
|
extern char readchar(void);
|
||||||
extern char readchar_poskey(coordxy *, coordxy *, int *);
|
extern char readchar_poskey(coordxy *, coordxy *, int *);
|
||||||
extern void sanity_check(void);
|
|
||||||
extern char* key2txt(uchar, char *);
|
extern char* key2txt(uchar, char *);
|
||||||
extern char yn_function(const char *, const char *, char, boolean);
|
extern char yn_function(const char *, const char *, char, boolean);
|
||||||
extern char paranoid_ynq(boolean, const char *, boolean);
|
extern char paranoid_ynq(boolean, const char *, boolean);
|
||||||
@@ -3743,6 +3742,7 @@ extern void wizcustom_callback(winid win, int glyphnum, char *id);
|
|||||||
extern int wiz_display_macros(void);
|
extern int wiz_display_macros(void);
|
||||||
extern int wiz_mon_diff(void);
|
extern int wiz_mon_diff(void);
|
||||||
#endif
|
#endif
|
||||||
|
extern void sanity_check(void);
|
||||||
|
|
||||||
/* ### worm.c ### */
|
/* ### worm.c ### */
|
||||||
|
|
||||||
|
|||||||
@@ -783,6 +783,7 @@ struct sinfo {
|
|||||||
int in_parseoptions; /* in parseoptions */
|
int in_parseoptions; /* in parseoptions */
|
||||||
int in_role_selection; /* role/race/&c selection menus in progress */
|
int in_role_selection; /* role/race/&c selection menus in progress */
|
||||||
int in_getlin; /* inside interface getlin routine */
|
int in_getlin; /* inside interface getlin routine */
|
||||||
|
int in_sanity_check; /* for impossible() during sanity checking */
|
||||||
int config_error_ready; /* config_error_add is ready, available */
|
int config_error_ready; /* config_error_add is ready, available */
|
||||||
int beyond_savefile_load; /* set when past savefile loading */
|
int beyond_savefile_load; /* set when past savefile loading */
|
||||||
#ifdef PANICLOG
|
#ifdef PANICLOG
|
||||||
|
|||||||
10
src/pline.c
10
src/pline.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 pline.c $NHDT-Date: 1693083243 2023/08/26 20:54:03 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.124 $ */
|
/* NetHack 3.7 pline.c $NHDT-Date: 1719819280 2024/07/01 07:34:40 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.130 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2018. */
|
/*-Copyright (c) Robert Patrick Rankin, 2018. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -594,6 +594,12 @@ impossible(const char *s, ...)
|
|||||||
pline("%s", pbuf);
|
pline("%s", pbuf);
|
||||||
gp.pline_flags = 0;
|
gp.pline_flags = 0;
|
||||||
|
|
||||||
|
if (gp.program_state.in_sanity_check) {
|
||||||
|
/* skip rest of multi-line feedback */
|
||||||
|
gp.program_state.in_impossible = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Strcpy(pbuf2, "Program in disorder!");
|
Strcpy(pbuf2, "Program in disorder!");
|
||||||
if (gp.program_state.something_worth_saving)
|
if (gp.program_state.something_worth_saving)
|
||||||
Strcat(pbuf2, " (Saving and reloading may fix this problem.)");
|
Strcat(pbuf2, " (Saving and reloading may fix this problem.)");
|
||||||
@@ -608,7 +614,7 @@ impossible(const char *s, ...)
|
|||||||
boolean report = ('y' == yn_function("Report now?", ynchars,
|
boolean report = ('y' == yn_function("Report now?", ynchars,
|
||||||
'n', FALSE));
|
'n', FALSE));
|
||||||
|
|
||||||
raw_print(""); // prove to the user the character was accepted
|
raw_print(""); /* prove to the user the character was accepted */
|
||||||
if (report) {
|
if (report) {
|
||||||
submit_web_report(1, "Impossible", pbuf);
|
submit_web_report(1, "Impossible", pbuf);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1435,6 +1435,7 @@ sanity_check(void)
|
|||||||
iflags.sanity_no_check = FALSE;
|
iflags.sanity_no_check = FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
gp.program_state.in_sanity_check++;
|
||||||
you_sanity_check();
|
you_sanity_check();
|
||||||
obj_sanity_check();
|
obj_sanity_check();
|
||||||
timer_sanity_check();
|
timer_sanity_check();
|
||||||
@@ -1443,6 +1444,7 @@ sanity_check(void)
|
|||||||
bc_sanity_check();
|
bc_sanity_check();
|
||||||
trap_sanity_check();
|
trap_sanity_check();
|
||||||
engraving_sanity_check();
|
engraving_sanity_check();
|
||||||
|
gp.program_state.in_sanity_check--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* qsort() comparison routine for use in list_migrating_mons() */
|
/* qsort() comparison routine for use in list_migrating_mons() */
|
||||||
|
|||||||
Reference in New Issue
Block a user