2001-06-11 Egor Duda <deo@logos-m.ru>
* libc/ctype/ctype_.c: When compiled with gcc on platforms with signed char, make _ctype_[-128] ... _ctype[-1] refer to initialized memory region. Platform can define COMPACT_CTYPE to avoid allocation of the additional 128 bytes of data. Add pointer to _ctype_ array. Always initialize all _ctype_ array elements.
This commit is contained in:
parent
13a01ce06a
commit
371b76ef3e
|
@ -1,3 +1,12 @@
|
||||||
|
2001-06-11 Egor Duda <deo@logos-m.ru>
|
||||||
|
|
||||||
|
* libc/ctype/ctype_.c: When compiled with gcc on platforms
|
||||||
|
with signed char, make _ctype_[-128] ... _ctype[-1] refer to
|
||||||
|
initialized memory region. Platform can define COMPACT_CTYPE
|
||||||
|
to avoid allocation of the additional 128 bytes of data.
|
||||||
|
Add pointer to _ctype_ array. Always initialize all _ctype_
|
||||||
|
array elements.
|
||||||
|
|
||||||
2001-06-08 Jonathan Larmour <jlarmour@redhat.com>
|
2001-06-08 Jonathan Larmour <jlarmour@redhat.com>
|
||||||
|
|
||||||
* libc/stdlib/mbtowc_r.c (_mbtowc_r): Avoid dereferencing
|
* libc/stdlib/mbtowc_r.c (_mbtowc_r): Avoid dereferencing
|
||||||
|
|
|
@ -37,26 +37,72 @@ static char sccsid[] = "@(#)ctype_.c 5.6 (Berkeley) 6/1/90";
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#define _CTYPE_DATA_0_127 \
|
||||||
|
_C, _C, _C, _C, _C, _C, _C, _C, \
|
||||||
|
_C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, \
|
||||||
|
_C, _C, _C, _C, _C, _C, _C, _C, \
|
||||||
|
_C, _C, _C, _C, _C, _C, _C, _C, \
|
||||||
|
_S|_B, _P, _P, _P, _P, _P, _P, _P, \
|
||||||
|
_P, _P, _P, _P, _P, _P, _P, _P, \
|
||||||
|
_N, _N, _N, _N, _N, _N, _N, _N, \
|
||||||
|
_N, _N, _P, _P, _P, _P, _P, _P, \
|
||||||
|
_P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, \
|
||||||
|
_U, _U, _U, _U, _U, _U, _U, _U, \
|
||||||
|
_U, _U, _U, _U, _U, _U, _U, _U, \
|
||||||
|
_U, _U, _U, _P, _P, _P, _P, _P, \
|
||||||
|
_P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, \
|
||||||
|
_L, _L, _L, _L, _L, _L, _L, _L, \
|
||||||
|
_L, _L, _L, _L, _L, _L, _L, _L, \
|
||||||
|
_L, _L, _L, _P, _P, _P, _P, _C
|
||||||
|
|
||||||
|
#define _CTYPE_DATA_128_256 \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__CHAR_UNSIGNED__) && !defined(COMPACT_CTYPE)
|
||||||
|
#define ALLOW_NEGATIVE_CTYPE_INDEX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ALLOW_NEGATIVE_CTYPE_INDEX)
|
||||||
|
static _CONST char _ctype_b[128 + 256] = {
|
||||||
|
_CTYPE_DATA_128_256,
|
||||||
|
_CTYPE_DATA_0_127,
|
||||||
|
_CTYPE_DATA_128_256
|
||||||
|
};
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
||||||
|
extern _CONST char __declspec(dllexport) _ctype_[1 + 256] __attribute__ ((alias ("_ctype_b+127")));
|
||||||
|
_CONST char __declspec(dllexport) *__ctype_ptr = _ctype_b + 128;
|
||||||
|
#else
|
||||||
|
extern _CONST char _ctype_[1 + 256] __attribute__ ((alias ("_ctype_b+127")));
|
||||||
|
_CONST char *__ctype_ptr = _ctype_b + 128;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else /* !defined(ALLOW_NEGATIVE_CTYPE_INDEX) */
|
||||||
|
|
||||||
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
||||||
_CONST char __declspec(dllexport) _ctype_[1 + 256] = {
|
_CONST char __declspec(dllexport) _ctype_[1 + 256] = {
|
||||||
#else
|
#else
|
||||||
_CONST char _ctype_[1 + 256] = {
|
_CONST char _ctype_[1 + 256] = {
|
||||||
#endif
|
#endif
|
||||||
0,
|
0,
|
||||||
_C, _C, _C, _C, _C, _C, _C, _C,
|
_CTYPE_DATA_0_127,
|
||||||
_C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C,
|
_CTYPE_DATA_128_256
|
||||||
_C, _C, _C, _C, _C, _C, _C, _C,
|
|
||||||
_C, _C, _C, _C, _C, _C, _C, _C,
|
|
||||||
_S|_B, _P, _P, _P, _P, _P, _P, _P,
|
|
||||||
_P, _P, _P, _P, _P, _P, _P, _P,
|
|
||||||
_N, _N, _N, _N, _N, _N, _N, _N,
|
|
||||||
_N, _N, _P, _P, _P, _P, _P, _P,
|
|
||||||
_P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U,
|
|
||||||
_U, _U, _U, _U, _U, _U, _U, _U,
|
|
||||||
_U, _U, _U, _U, _U, _U, _U, _U,
|
|
||||||
_U, _U, _U, _P, _P, _P, _P, _P,
|
|
||||||
_P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L,
|
|
||||||
_L, _L, _L, _L, _L, _L, _L, _L,
|
|
||||||
_L, _L, _L, _L, _L, _L, _L, _L,
|
|
||||||
_L, _L, _L, _P, _P, _P, _P, _C
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_CONST char *__ctype_ptr = _ctype_ + 1;
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue