idReturnCode = I3400310_F0007GetWorkDayCalendar1470(lpDS, lpdsB3400310Internal,&nMonth, &nYear, cDaysArray); if (idReturnCode == ER_SUCCESS) { /* Weekly Schedule, Daily spread */ if (lpds4801t->cMonthWeekDayHour == _J('2')) { /*See if necessary to read next month calendar record */ if (lpdsB3400310Internal->dsF4801Columns.wadrqj.nMonth != lpdsB3400310Internal->dsF4801Columns.wastrt.nMonth) { jdeStrcpy(cDaysArray1, cDaysArray); nMonth = lpdsB3400310Internal->dsF4801Columns.wadrqj.nMonth; nYear = lpdsB3400310Internal->dsF4801Columns.wadrqj.nYear; idReturnCode = I3400310_F0007GetWorkDayCalendar1470(lpDS, lpdsB3400310Internal,&nMonth, &nYear, cDaysArray); jdeStrcpy(cDaysArray2, cDaysArray); jdeStrcpy(cDaysArray, cDaysArray1); }
*** Break In code *** Issue is coming in dereferencing cDaysArray from 2nd calling when the days defined is 31 days.
as it the string array cDaysArray is defined as below,
/* copy first 32 cTypeOfDay fields into Days array */ memcpy(&cDaysArray[1], &ds3000710.cTypeOfDayReturned01, (sizeof(JCHAR) * 31));
: cDaysArray[] can store upto 31 characters. If 1 chracter is allocated for NULL Character, it can store up to 30, so if a certain month has 31 days not all data may be stored.