diff --git a/src/sbbs3/data.cpp b/src/sbbs3/data.cpp index f233f4f111b4dbf2dc913bb4ab9b15be26335830..cbc899fb12f7c47d0ecf7e5722f854ad2008b2e2 100644 --- a/src/sbbs3/data.cpp +++ b/src/sbbs3/data.cpp @@ -140,6 +140,7 @@ extern "C" time_t DLLCALL getnexteventtime(event_t* event) { struct tm tm; time_t t = time(NULL); + time_t now = t; if(event->misc & EVENT_DISABLED) return 0; @@ -160,6 +161,8 @@ extern "C" time_t DLLCALL getnexteventtime(event_t* event) t += 24 * 60 * 60; /* already ran today, so add 24hrs */ do { + if(t > now + (1500 * 24 * 60 * 60)) /* Handle crazy configs, e.g. Feb-29, Apr-31 */ + return 0; if(localtime_r(&t, &tm) == NULL) return 0; if((event->days & (1 << tm.tm_wday))