char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
{ \
- UChar ch = (UChar)((UInt)c); \
- UChar* p = (UChar*)s; \
- UChar* last = NULL; \
+ HChar ch = (HChar)c; \
+ const HChar* p = s; \
+ const HChar* last = NULL; \
while (True) { \
if (*p == ch) last = p; \
- if (*p == 0) return last; \
+ if (*p == 0) return (HChar *)last; \
p++; \
} \
}
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
{ \
- UChar ch = (UChar)((UInt)c); \
- UChar* p = (UChar*)s; \
+ HChar ch = (HChar)c ; \
+ const HChar* p = s; \
while (True) { \
- if (*p == ch) return p; \
+ if (*p == ch) return (HChar *)p; \
if (*p == 0) return NULL; \
p++; \
} \
char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ); \
char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ) \
{ \
- Char* dst_orig = dst; \
+ HChar* dst_orig = dst; \
\
while (*src) *dst++ = *src++; \
*dst = 0; \
int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
( const char* s1, const char* s2 ) \
{ \
- register unsigned char c1; \
- register unsigned char c2; \
+ register UChar c1; \
+ register UChar c2; \
while (True) { \
- c1 = *(unsigned char *)s1; \
- c2 = *(unsigned char *)s2; \
+ c1 = *(UChar *)s1; \
+ c2 = *(UChar *)s2; \
if (c1 != c2) break; \
if (c1 == 0) break; \
s1++; s2++; \
} \
- if ((unsigned char)c1 < (unsigned char)c2) return -1; \
- if ((unsigned char)c1 > (unsigned char)c2) return 1; \
+ if ((UChar)c1 < (UChar)c2) return -1; \
+ if ((UChar)c1 > (UChar)c2) return 1; \
return 0; \
}
/* Find the first occurrence of C in S. */
#define GLIBC232_RAWMEMCHR(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in) \
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void* s, int c_in); \
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void* s, int c_in) \
{ \
- unsigned char c = (unsigned char) c_in; \
- unsigned char* char_ptr = (unsigned char *)s; \
+ UChar c = (UChar)c_in; \
+ const UChar* char_ptr = s; \
while (1) { \
- if (*char_ptr == c) return char_ptr; \
+ if (*char_ptr == c) return (void *)char_ptr; \
char_ptr++; \
} \
}
#define STRSTR(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (void* haystack, void* needle); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (void* haystack, void* needle) \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ (const char* haystack, const char* needle); \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ (const char* haystack, const char* needle) \
{ \
- UChar* h = (UChar*)haystack; \
- UChar* n = (UChar*)needle; \
+ const HChar* h = haystack; \
+ const HChar* n = needle; \
\
/* find the length of n, not including terminating zero */ \
UWord nlen = 0; \
while (n[nlen]) nlen++; \
\
/* if n is the empty string, match immediately. */ \
- if (nlen == 0) return h; \
+ if (nlen == 0) return (HChar *)h; \
\
/* assert(nlen >= 1); */ \
- UChar n0 = n[0]; \
+ HChar n0 = n[0]; \
\
while (1) { \
- UChar hh = *h; \
+ const HChar hh = *h; \
if (hh == 0) return NULL; \
if (hh != n0) { h++; continue; } \
\
} \
/* assert(i >= 0 && i <= nlen); */ \
if (i == nlen) \
- return h; \
+ return (HChar *)h; \
\
h++; \
} \
#define STRPBRK(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (void* sV, void* acceptV); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (void* sV, void* acceptV) \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ (const char* sV, const char* acceptV); \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ (const char* sV, const char* acceptV) \
{ \
- UChar* s = (UChar*)sV; \
- UChar* accept = (UChar*)acceptV; \
+ const HChar* s = sV; \
+ const HChar* accept = acceptV; \
\
/* find the length of 'accept', not including terminating zero */ \
UWord nacc = 0; \
/* assert(nacc >= 1); */ \
while (1) { \
UWord i; \
- UChar sc = *s; \
+ HChar sc = *s; \
if (sc == 0) \
break; \
for (i = 0; i < nacc; i++) { \
if (sc == accept[i]) \
- return s; \
+ return (HChar *)s; \
} \
s++; \
} \
char* VG_REPLACE_FUNCTION_EZU(20010,soname,fnname)( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_EZU(20010,soname,fnname)( const char* s, int c ) \
{ \
- UChar ch = (UChar)((UInt)c); \
- UChar* p = (UChar*)s; \
- UChar* last = NULL; \
+ HChar ch = (HChar)c; \
+ const HChar* p = s; \
+ const HChar* last = NULL; \
while (True) { \
if (*p == ch) last = p; \
- if (*p == 0) return last; \
+ if (*p == 0) return (HChar *)last; \
p++; \
} \
}
char* VG_REPLACE_FUNCTION_EZU(20020,soname,fnname) ( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_EZU(20020,soname,fnname) ( const char* s, int c ) \
{ \
- UChar ch = (UChar)((UInt)c); \
- UChar* p = (UChar*)s; \
+ HChar ch = (HChar)c ; \
+ const HChar* p = s; \
while (True) { \
- if (*p == ch) return p; \
+ if (*p == ch) return (HChar *)p; \
if (*p == 0) return NULL; \
p++; \
} \
char* VG_REPLACE_FUNCTION_EZU(20030,soname,fnname) \
( char* dst, const char* src ) \
{ \
- const Char* src_orig = src; \
- Char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
while (*dst) dst++; \
while (*src) *dst++ = *src++; \
*dst = 0; \
char* VG_REPLACE_FUNCTION_EZU(20040,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
- const Char* src_orig = src; \
- Char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
SizeT m = 0; \
\
while (*dst) dst++; \
SizeT VG_REPLACE_FUNCTION_EZU(20050,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
- const Char* src_orig = src; \
- Char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
SizeT m = 0; \
\
while (m < n && *dst) { m++; dst++; } \
char* VG_REPLACE_FUNCTION_EZU(20080,soname,fnname) \
( char* dst, const char* src ) \
{ \
- const Char* src_orig = src; \
- Char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
\
while (*src) *dst++ = *src++; \
*dst = 0; \
char* VG_REPLACE_FUNCTION_EZU(20090,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
- const Char* src_orig = src; \
- Char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
SizeT m = 0; \
\
while (m < n && *src) { m++; *dst++ = *src++; } \
SizeT VG_REPLACE_FUNCTION_EZU(20100,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
- const char* src_orig = src; \
- char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
SizeT m = 0; \
\
while (m < n-1 && *src) { m++; *dst++ = *src++; } \
if (*s1 == 0) return -1; \
if (*s2 == 0) return 1; \
\
- if (*(unsigned char*)s1 < *(unsigned char*)s2) return -1; \
- if (*(unsigned char*)s1 > *(unsigned char*)s2) return 1; \
+ if (*(UChar*)s1 < *(UChar*)s2) return -1; \
+ if (*(UChar*)s1 > *(UChar*)s2) return 1; \
\
s1++; s2++; n++; \
} \
( const char* s1, const char* s2 ) \
{ \
extern int tolower(int); \
- register unsigned char c1; \
- register unsigned char c2; \
+ register UChar c1; \
+ register UChar c2; \
while (True) { \
- c1 = tolower(*(unsigned char *)s1); \
- c2 = tolower(*(unsigned char *)s2); \
+ c1 = tolower(*(UChar *)s1); \
+ c2 = tolower(*(UChar *)s2); \
if (c1 != c2) break; \
if (c1 == 0) break; \
s1++; s2++; \
} \
- if ((unsigned char)c1 < (unsigned char)c2) return -1; \
- if ((unsigned char)c1 > (unsigned char)c2) return 1; \
+ if ((UChar)c1 < (UChar)c2) return -1; \
+ if ((UChar)c1 > (UChar)c2) return 1; \
return 0; \
}
if (*s1 == 0) return -1; \
if (*s2 == 0) return 1; \
\
- if (tolower(*(unsigned char*)s1) \
- < tolower(*(unsigned char*)s2)) return -1; \
- if (tolower(*(unsigned char*)s1) \
- > tolower(*(unsigned char*)s2)) return 1; \
+ if (tolower(*(UChar *)s1) \
+ < tolower(*(UChar*)s2)) return -1; \
+ if (tolower(*(UChar *)s1) \
+ > tolower(*(UChar *)s2)) return 1; \
\
s1++; s2++; n++; \
} \
( const char* s1, const char* s2, void* locale ) \
{ \
extern int tolower_l(int, void*) __attribute__((weak)); \
- register unsigned char c1; \
- register unsigned char c2; \
+ register UChar c1; \
+ register UChar c2; \
while (True) { \
- c1 = tolower_l(*(unsigned char *)s1, locale); \
- c2 = tolower_l(*(unsigned char *)s2, locale); \
+ c1 = tolower_l(*(UChar *)s1, locale); \
+ c2 = tolower_l(*(UChar *)s2, locale); \
if (c1 != c2) break; \
if (c1 == 0) break; \
s1++; s2++; \
} \
- if ((unsigned char)c1 < (unsigned char)c2) return -1; \
- if ((unsigned char)c1 > (unsigned char)c2) return 1; \
+ if ((UChar)c1 < (UChar)c2) return -1; \
+ if ((UChar)c1 > (UChar)c2) return 1; \
return 0; \
}
if (*s1 == 0) return -1; \
if (*s2 == 0) return 1; \
\
- if (tolower_l(*(unsigned char*)s1, locale) \
- < tolower_l(*(unsigned char*)s2, locale)) return -1; \
- if (tolower_l(*(unsigned char*)s1, locale) \
- > tolower_l(*(unsigned char*)s2, locale)) return 1; \
+ if (tolower_l(*(UChar *)s1, locale) \
+ < tolower_l(*(UChar *)s2, locale)) return -1; \
+ if (tolower_l(*(UChar *)s1, locale) \
+ > tolower_l(*(UChar *)s2, locale)) return 1; \
\
s1++; s2++; n++; \
} \
int VG_REPLACE_FUNCTION_EZU(20160,soname,fnname) \
( const char* s1, const char* s2 ) \
{ \
- register unsigned char c1; \
- register unsigned char c2; \
+ register UChar c1; \
+ register UChar c2; \
while (True) { \
- c1 = *(unsigned char *)s1; \
- c2 = *(unsigned char *)s2; \
+ c1 = *(UChar *)s1; \
+ c2 = *(UChar *)s2; \
if (c1 != c2) break; \
if (c1 == 0) break; \
s1++; s2++; \
} \
- if ((unsigned char)c1 < (unsigned char)c2) return -1; \
- if ((unsigned char)c1 > (unsigned char)c2) return 1; \
+ if ((UChar)c1 < (UChar)c2) return -1; \
+ if ((UChar)c1 > (UChar)c2) return 1; \
return 0; \
}
( const void *s1V, const void *s2V, SizeT n ) \
{ \
int res; \
- unsigned char a0; \
- unsigned char b0; \
- unsigned char* s1 = (unsigned char*)s1V; \
- unsigned char* s2 = (unsigned char*)s2V; \
+ UChar a0; \
+ UChar b0; \
+ UChar* s1 = (UChar*)s1V; \
+ UChar* s2 = (UChar*)s2V; \
\
while (n != 0) { \
a0 = s1[0]; \
char* VG_REPLACE_FUNCTION_EZU(20200,soname,fnname) \
( char* dst, const char* src ) \
{ \
- const Char* src_orig = src; \
- Char* dst_orig = dst; \
+ const HChar* src_orig = src; \
+ HChar* dst_orig = dst; \
\
while (*src) *dst++ = *src++; \
*dst = 0; \
(const void *srcV, void *dstV, SizeT n) \
{ \
SizeT i; \
- Char* dst = (Char*)dstV; \
- Char* src = (Char*)srcV; \
+ HChar* dst = dstV; \
+ const HChar* src = srcV; \
if (dst < src) { \
for (i = 0; i < n; i++) \
dst[i] = src[i]; \
(void *dstV, const void *srcV, SizeT n, SizeT destlen) \
{ \
SizeT i; \
- Char* dst = (Char*)dstV; \
- Char* src = (Char*)srcV; \
+ HChar* dst = dstV; \
+ const HChar* src = srcV; \
if (destlen < n) \
goto badness; \
if (dst < src) { \
char* VG_REPLACE_FUNCTION_EZU(20250,soname,fnname) \
(const char* s, int c_in) \
{ \
- unsigned char c = (unsigned char) c_in; \
- unsigned char* char_ptr = (unsigned char *)s; \
+ UChar c = (UChar) c_in; \
+ UChar* char_ptr = (UChar *)s; \
while (1) { \
- if (*char_ptr == 0) return char_ptr; \
- if (*char_ptr == c) return char_ptr; \
+ if (*char_ptr == 0) return (HChar *)char_ptr; \
+ if (*char_ptr == c) return (HChar *)char_ptr; \
char_ptr++; \
} \
}
char* VG_REPLACE_FUNCTION_EZU(20260,soname,fnname) \
(const char* s, int c_in) \
{ \
- unsigned char c = (unsigned char) c_in; \
- unsigned char* char_ptr = (unsigned char *)s; \
+ UChar c = (UChar) c_in; \
+ UChar* char_ptr = (UChar *)s; \
while (1) { \
- if (*char_ptr == c) return char_ptr; \
+ if (*char_ptr == c) return (HChar *)char_ptr; \
char_ptr++; \
} \
}
char* VG_REPLACE_FUNCTION_EZU(20270,soname,fnname) \
(char* dst, const char* src, SizeT len) \
{ \
- char* ret = dst; \
+ HChar* ret = dst; \
if (! len) \
goto badness; \
while ((*dst++ = *src++) != '\0') \
void* VG_REPLACE_FUNCTION_EZU(20290,soname,fnname) \
( void *dst, const void *src, SizeT len ) \
{ \
- register char *d; \
- register char *s; \
+ register HChar *d; \
+ register HChar *s; \
SizeT len_saved = len; \
\
if (len == 0) \
void* VG_REPLACE_FUNCTION_EZU(20300,soname,fnname) \
(void* dst, const void* src, SizeT len, SizeT dstlen ) \
{ \
- register char *d; \
- register char *s; \
+ register HChar *d; \
+ register const HChar *s; \
\
if (dstlen < len) goto badness; \
\
RECORD_OVERLAP_ERROR("memcpy_chk", dst, src, len); \
\
if ( dst > src ) { \
- d = (char *)dst + len - 1; \
- s = (char *)src + len - 1; \
+ d = (HChar *)dst + len - 1; \
+ s = (const HChar *)src + len - 1; \
while ( len-- ) { \
*d-- = *s--; \
} \
} else if ( dst < src ) { \
- d = (char *)dst; \
- s = (char *)src; \
+ d = (HChar *)dst; \
+ s = (const HChar *)src; \
while ( len-- ) { \
*d++ = *s++; \
} \
/*---------------------- strstr ----------------------*/
#define STRSTR(soname, fnname) \
- void* VG_REPLACE_FUNCTION_EZU(20310,soname,fnname) \
- (void* haystack, void* needle); \
- void* VG_REPLACE_FUNCTION_EZU(20310,soname,fnname) \
- (void* haystack, void* needle) \
+ char* VG_REPLACE_FUNCTION_EZU(20310,soname,fnname) \
+ (const char* haystack, const char* needle); \
+ char* VG_REPLACE_FUNCTION_EZU(20310,soname,fnname) \
+ (const char* haystack, const char* needle) \
{ \
- UChar* h = (UChar*)haystack; \
- UChar* n = (UChar*)needle; \
+ const HChar* h = haystack; \
+ const HChar* n = needle; \
\
/* find the length of n, not including terminating zero */ \
UWord nlen = 0; \
while (n[nlen]) nlen++; \
\
/* if n is the empty string, match immediately. */ \
- if (nlen == 0) return h; \
+ if (nlen == 0) return (HChar *)h; \
\
/* assert(nlen >= 1); */ \
- UChar n0 = n[0]; \
+ HChar n0 = n[0]; \
\
while (1) { \
- UChar hh = *h; \
+ const HChar hh = *h; \
if (hh == 0) return NULL; \
if (hh != n0) { h++; continue; } \
\
} \
/* assert(i >= 0 && i <= nlen); */ \
if (i == nlen) \
- return h; \
+ return (HChar *)h; \
\
h++; \
} \
/*---------------------- strpbrk ----------------------*/
#define STRPBRK(soname, fnname) \
- void* VG_REPLACE_FUNCTION_EZU(20320,soname,fnname) \
- (void* sV, void* acceptV); \
- void* VG_REPLACE_FUNCTION_EZU(20320,soname,fnname) \
- (void* sV, void* acceptV) \
+ char* VG_REPLACE_FUNCTION_EZU(20320,soname,fnname) \
+ (const char* sV, const char* acceptV); \
+ char* VG_REPLACE_FUNCTION_EZU(20320,soname,fnname) \
+ (const char* sV, const char* acceptV) \
{ \
- UChar* s = (UChar*)sV; \
- UChar* accept = (UChar*)acceptV; \
+ const HChar* s = sV; \
+ const HChar* accept = acceptV; \
\
/* find the length of 'accept', not including terminating zero */ \
UWord nacc = 0; \
/* assert(nacc >= 1); */ \
while (1) { \
UWord i; \
- UChar sc = *s; \
+ HChar sc = *s; \
if (sc == 0) \
break; \
for (i = 0; i < nacc; i++) { \
if (sc == accept[i]) \
- return s; \
+ return (HChar *)s; \
} \
s++; \
} \
#define STRCSPN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_EZU(20330,soname,fnname) \
- (void* sV, void* rejectV); \
+ (const char* sV, const char* rejectV); \
SizeT VG_REPLACE_FUNCTION_EZU(20330,soname,fnname) \
- (void* sV, void* rejectV) \
+ (const char* sV, const char* rejectV) \
{ \
- UChar* s = (UChar*)sV; \
- UChar* reject = (UChar*)rejectV; \
+ const HChar* s = sV; \
+ const HChar* reject = rejectV; \
\
/* find the length of 'reject', not including terminating zero */ \
UWord nrej = 0; \
UWord len = 0; \
while (1) { \
UWord i; \
- UChar sc = *s; \
+ HChar sc = *s; \
if (sc == 0) \
break; \
for (i = 0; i < nrej; i++) { \
#define STRSPN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_EZU(20340,soname,fnname) \
- (void* sV, void* acceptV); \
+ (const char* sV, const char* acceptV); \
SizeT VG_REPLACE_FUNCTION_EZU(20340,soname,fnname) \
- (void* sV, void* acceptV) \
+ (const char* sV, const char* acceptV) \
{ \
UChar* s = (UChar*)sV; \
UChar* accept = (UChar*)acceptV; \
UWord len = 0; \
while (1) { \
UWord i; \
- UChar sc = *s; \
+ HChar sc = *s; \
if (sc == 0) \
break; \
for (i = 0; i < nacc; i++) { \
/*---------------------- strcasestr ----------------------*/
#define STRCASESTR(soname, fnname) \
- void* VG_REPLACE_FUNCTION_EZU(20350,soname,fnname) \
- (void* haystack, void* needle); \
- void* VG_REPLACE_FUNCTION_EZU(20350,soname,fnname) \
- (void* haystack, void* needle) \
+ char* VG_REPLACE_FUNCTION_EZU(20350,soname,fnname) \
+ (const char* haystack, const char* needle); \
+ char* VG_REPLACE_FUNCTION_EZU(20350,soname,fnname) \
+ (const char* haystack, const char* needle) \
{ \
extern int tolower(int); \
- UChar* h = (UChar*)haystack; \
- UChar* n = (UChar*)needle; \
+ const HChar* h = haystack; \
+ const HChar* n = needle; \
\
/* find the length of n, not including terminating zero */ \
UWord nlen = 0; \
while (n[nlen]) nlen++; \
\
/* if n is the empty string, match immediately. */ \
- if (nlen == 0) return h; \
+ if (nlen == 0) return (HChar *)h; \
\
/* assert(nlen >= 1); */ \
UChar n0 = tolower(n[0]); \
} \
/* assert(i >= 0 && i <= nlen); */ \
if (i == nlen) \
- return h; \
+ return (HChar *)h; \
\
h++; \
} \
{
OrigFn fn;
Word result;
- const char* p = string;
+ const HChar* p = string;
VALGRIND_GET_ORIG_FN(fn);
/* Now by walking over the string we magically produce
traces when hitting undefined memory. */
{
OrigFn fn;
Word result;
- const char* p = name;
+ const HChar* p = name;
VALGRIND_GET_ORIG_FN(fn);
/* Now by walking over the string we magically produce
traces when hitting undefined memory. */
{
OrigFn fn;
Word result;
- const char* p;
+ const HChar* p;
VALGRIND_GET_ORIG_FN(fn);
/* Now by walking over the string we magically produce
traces when hitting undefined memory. */