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>
 | 
			
		||||
 | 
			
		||||
	* 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>
 | 
			
		||||
 | 
			
		||||
#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__)
 | 
			
		||||
_CONST char __declspec(dllexport) _ctype_[1 + 256] = {
 | 
			
		||||
#else
 | 
			
		||||
_CONST char _ctype_[1 + 256] = {
 | 
			
		||||
#endif
 | 
			
		||||
	0,
 | 
			
		||||
	_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
 | 
			
		||||
	_CTYPE_DATA_0_127,
 | 
			
		||||
	_CTYPE_DATA_128_256
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
_CONST char *__ctype_ptr = _ctype_ + 1;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue