diff options
-rw-r--r-- | config.c | 10 | ||||
-rw-r--r-- | hcalc.h | 1 |
2 files changed, 11 insertions, 0 deletions
@@ -40,6 +40,12 @@ struct hcalc_config { char *home_dir = NULL; char config_path[MAX_HOME]; /* ludicrous size */ +void validate_numbers(void) { + if(!number_is_ok(value)) value = 0; + if(!number_is_ok(saved)) saved = 0; + if(!number_is_ok(stored)) stored = 0; +} + size_t filesize(FILE *f) { struct stat st; @@ -121,6 +127,8 @@ void load_config(void) { winsize = conf.winsize; base = conf.base; quiet = conf.quiet; + + validate_numbers(); } void save_config(void) { @@ -142,6 +150,8 @@ void save_config(void) { return; } + validate_numbers(); + memcpy(conf.signature, SIGNATURE, SIGLEN); conf.doublesize = sizeof(double); conf.value = value; @@ -63,5 +63,6 @@ void show_value(void); void bell(void); void copy(void); void paste(void); +int number_is_ok(double n); #define MAXCHARS 15 |