xref: /reactos/sdk/lib/ucrt/mbstring/mbclen.cpp (revision fe93a3f9)
1 /***
2 *mbclen.c - Find length of MBCS character
3 *
4 *       Copyright (c) Microsoft Corporation. All rights reserved.
5 *
6 *Purpose:
7 *       Find length of MBCS character
8 *
9 *******************************************************************************/
10 #ifndef _MBCS
11     #error This file should only be compiled with _MBCS defined
12 #endif
13 
14 #include <corecrt_internal_mbstring.h>
15 #include <locale.h>
16 
17 #pragma warning(disable:__WARNING_POTENTIAL_BUFFER_OVERFLOW_NULLTERMINATED) // 26018
18 
19 /***
20 * _mbclen - Find length of MBCS character
21 *
22 *Purpose:
23 *       Find the length of the MBCS character (in bytes).
24 *
25 *Entry:
26 *       unsigned char *c = MBCS character
27 *
28 *Exit:
29 *       Returns the number of bytes in the MBCS character
30 *
31 *Exceptions:
32 *
33 *******************************************************************************/
34 
35 extern "C" size_t __cdecl _mbclen_l(unsigned char const* c, _locale_t locale)
36 {
37     /*  Don't return two if we have leadbyte, EOS.
38         Don't assert here; too low level
39     */
40     return ((_ismbblead_l)(*c, locale) && c[1] != '\0') ? 2 : 1;
41 }
42 
43 extern "C" size_t __cdecl _mbclen(unsigned char const* c)
44 {
45     /*  Don't return two if we have leadbyte, EOS.
46         Don't assert here; too low level
47     */
48     return (_ismbblead(*c) && c[1]!='\0')  ? 2 : 1;
49 }
50