swprintf() and apparently wcsftime() want the their output buffer size

specified in terms of the the number of wide characters and not
sizeof(buffer).

Reported by:	Coverity
CID:		1007605, 1007606
MFC after:	1 week
This commit is contained in:
truckman 2016-05-17 05:05:30 +00:00
parent 50a0e585ab
commit 2c197aaf2a

View File

@ -642,8 +642,8 @@ monthrangeb(int y, int m, int jd_flag, int before, int after)
wprintf(L"%-*ls ",
mw, wcenter(ws, year[i].name, mw));
else {
swprintf(ws, sizeof(ws), L"%-ls %d",
year[i].name, M2Y(m + i));
swprintf(ws, sizeof(ws)/sizeof(ws[0]),
L"%-ls %d", year[i].name, M2Y(m + i));
wprintf(L"%-*ls ", mw, wcenter(ws1, ws, mw));
}
printf("\n");
@ -958,7 +958,7 @@ mkweekdays(struct weekdays *wds)
for (i = 0; i != 7; i++) {
tm.tm_wday = (i+1) % 7;
wcsftime(buf, sizeof(buf), L"%a", &tm);
wcsftime(buf, sizeof(buf)/sizeof(buf[0]), L"%a", &tm);
for (len = 2; len > 0; --len) {
if ((width = wcswidth(buf, len)) <= 2)
break;