From 6aafb916266e197bdf3261981aad70e9f94b3153 Mon Sep 17 00:00:00 2001 From: kcwu Date: Thu, 20 Sep 2007 17:33:21 +0000 Subject: * fix bug: skip bad date format. git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3565 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/calendar.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'mbbsd/calendar.c') diff --git a/mbbsd/calendar.c b/mbbsd/calendar.c index 52a0c111..865e52be 100644 --- a/mbbsd/calendar.c +++ b/mbbsd/calendar.c @@ -15,6 +15,7 @@ MonthDay(int m, int leap) { int day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + assert(1<=m && m<=12); return leap && m == 2 ? 29 : day[m - 1]; } @@ -40,6 +41,9 @@ Days(int y, int m, int d) return w; } +/** + * return 1 if date is invalid + */ int ParseDate(const char *date, int *year, int *month, int *day) { char *y, *m, *d; @@ -62,10 +66,15 @@ int ParseDate(const char *date, int *year, int *month, int *day) return 0; } +/** + * return 1 if date is invalid + */ static int ParseEventDate(const char *date, event_t * t) { int retval = ParseDate(date, &t->year, &t->month, &t->day); + if (retval) + return retval; t->days = Days(t->year, t->month, t->day); return retval; } -- cgit v1.2.3