Skip to content

Commit 39feb15

Browse files
committed
std.cfg and windows.cfg: Added support for wcscat_s() and _tcscat_s().
1 parent ef82477 commit 39feb15

3 files changed

Lines changed: 25 additions & 4 deletions

File tree

cfg/std.cfg

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4690,7 +4690,8 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun
46904690
</arg>
46914691
</function>
46924692
<!-- errno_t strcat_s(char *restrict dest, rsize_t destsz, const char *restrict src); // since C11-->
4693-
<function name="strcat_s">
4693+
<!-- errno_t wcscat_s(wchar_t *restrict dest, rsize_t destsz, const wchar_t *restrict src); // since C11-->
4694+
<function name="strcat_s,wcscat_s">
46944695
<returnValue type="errno_t"/>
46954696
<noreturn>false</noreturn>
46964697
<leak-ignore/>

cfg/windows.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5309,7 +5309,7 @@ HFONT CreateFont(
53095309
</arg>
53105310
</function>
53115311
<!-- errno_t _mbscat_s(unsigned char *strDestination, size_t numberOfElements, const unsigned char *strSource ); -->
5312-
<function name="_mbscat_s">
5312+
<function name="_mbscat_s,_tcscat_s">
53135313
<returnValue type="errno_t"/>
53145314
<noreturn>false</noreturn>
53155315
<leak-ignore/>

test/cfg/std.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3026,7 +3026,8 @@ void uninitvar_strncat(char *Ct, char *S, size_t N)
30263026
(void)strncat(Ct,S,N);
30273027
}
30283028

3029-
void uninitvar_strcat_s(char *Ct, size_t N, char *S)
3029+
// errno_t strcat_s(char *restrict dest, rsize_t destsz, const char *restrict src); // since C11
3030+
errno_t uninitvar_strcat_s(char *Ct, size_t N, char *S)
30303031
{
30313032
char *ct;
30323033
char *s;
@@ -3041,7 +3042,26 @@ void uninitvar_strcat_s(char *Ct, size_t N, char *S)
30413042
(void)strcat_s(Ct,n,S);
30423043

30433044
// no warning is expected for
3044-
(void)strcat_s(Ct,N,S);
3045+
return strcat_s(Ct,N,S);
3046+
}
3047+
3048+
// errno_t wcscat_s(wchar_t *restrict dest, rsize_t destsz, const wchar_t *restrict src); // since C11
3049+
errno_t uninitvar_wcscat_s(wchar_t *Ct, rsize_t N, wchar_t *S)
3050+
{
3051+
wchar_t *ct;
3052+
wchar_t *s;
3053+
rsize_t n;
3054+
// cppcheck-suppress uninitvar
3055+
(void)wcscat_s(ct,n,s);
3056+
// cppcheck-suppress uninitvar
3057+
(void)wcscat_s(ct,N,S);
3058+
// cppcheck-suppress uninitvar
3059+
(void)wcscat_s(Ct,N,s);
3060+
// cppcheck-suppress uninitvar
3061+
(void)wcscat_s(Ct,n,S);
3062+
3063+
// no warning is expected for
3064+
return wcscat_s(Ct,N,S);
30453065
}
30463066

30473067
void uninitvar_strncat_s(char *Ct, size_t N1, char *S, size_t N2)

0 commit comments

Comments
 (0)