Proper handling of invalid text input in scheduled dispatch
This commit is contained in:
@@ -473,9 +473,10 @@ struct SchdispatchWindow : Window {
|
||||
default: NOT_REACHED();
|
||||
|
||||
case WID_SCHDISPATCH_ADD: {
|
||||
int32 val = StrEmpty(str) ? -1 : strtoul(str, NULL, 10);
|
||||
char *end;
|
||||
int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10);
|
||||
|
||||
if (val >= 0) {
|
||||
if (val >= 0 && end && *end == 0) {
|
||||
uint minutes = (val % 100) % 60;
|
||||
uint hours = (val / 100) % 24;
|
||||
val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes);
|
||||
@@ -487,9 +488,10 @@ struct SchdispatchWindow : Window {
|
||||
}
|
||||
|
||||
case WID_SCHDISPATCH_SET_START_DATE: {
|
||||
int32 val = StrEmpty(str) ? -1 : strtoul(str, NULL, 10);
|
||||
char *end;
|
||||
int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10);
|
||||
|
||||
if (val >= 0) {
|
||||
if (val >= 0 && end && *end == 0) {
|
||||
uint minutes = (val % 100) % 60;
|
||||
uint hours = (val / 100) % 24;
|
||||
val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes);
|
||||
@@ -516,9 +518,10 @@ struct SchdispatchWindow : Window {
|
||||
}
|
||||
|
||||
case WID_SCHDISPATCH_SET_DELAY: {
|
||||
int32 val = StrEmpty(str) ? -1 : strtoul(str, NULL, 10);
|
||||
char *end;
|
||||
int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10);
|
||||
|
||||
if (val >= 0) {
|
||||
if (val >= 0 && end && *end == 0) {
|
||||
if (_settings_client.gui.time_in_minutes) {
|
||||
val *= _settings_client.gui.ticks_per_minute;
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user