mirror of
https://github.com/MariaDB/server.git
synced 2026-05-10 09:04:29 +02:00
Merge mysql.com:/usr/home/bar/mysql-4.1.b13145
into mysql.com:/usr/home/bar/mysql-4.1 mysql-test/r/ctype_latin1.result: Auto merged mysql-test/t/ctype_latin1.test: Auto merged
This commit is contained in:
commit
05414133af
300 changed files with 53049 additions and 4170 deletions
|
|
@ -392,16 +392,12 @@ static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
{
|
||||
const char *end;
|
||||
const char *end= ptr + ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
if (charlen < ptr_length)
|
||||
ptr_length= charlen;
|
||||
end= ptr + ptr_length;
|
||||
|
||||
for (; ptr != end && min_str != min_end ; ptr++)
|
||||
for (; ptr != end && min_str != min_end && charlen > 0; ptr++, charlen--)
|
||||
{
|
||||
if (ptr+1 != end && isbig5code(ptr[0],ptr[1]))
|
||||
{
|
||||
|
|
@ -412,7 +408,10 @@ static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
if (*ptr == escape && ptr+1 != end)
|
||||
{
|
||||
ptr++; /* Skip escape */
|
||||
*min_str++= *max_str++ = *ptr;
|
||||
if (isbig5code(ptr[0], ptr[1]))
|
||||
*min_str++= *max_str++ = *ptr++;
|
||||
if (min_str < min_end)
|
||||
*min_str++= *max_str++= *ptr;
|
||||
continue;
|
||||
}
|
||||
if (*ptr == w_one) /* '_' in SQL */
|
||||
|
|
@ -1696,7 +1695,7 @@ static uint16 tab_big5_uni0[]={
|
|||
0x2467,0x2468,0x2469,0x2474,0x2475,0x2476,0x2477,0x2478,
|
||||
0x2479,0x247A,0x247B,0x247C,0x247D};
|
||||
|
||||
/* page 1 0xC940-0xF9D5 */
|
||||
/* page 1 0xC940-0xF9DC */
|
||||
static uint16 tab_big5_uni1[]={
|
||||
0x4E42,0x4E5C,0x51F5,0x531A,0x5382,0x4E07,0x4E0C,0x4E47,
|
||||
0x4E8D,0x56D7,0xFA0C,0x5C6E,0x5F73,0x4E0F,0x5187,0x4E0E,
|
||||
|
|
@ -3252,12 +3251,13 @@ static uint16 tab_big5_uni1[]={
|
|||
0x9E17,0x9F48,0x6207,0x6B1E,0x7227,0x864C,0x8EA8,0x9482,
|
||||
0x9480,0x9481,0x9A69,0x9A68,0x9B2E,0x9E19,0x7229,0x864B,
|
||||
0x8B9F,0x9483,0x9C79,0x9EB7,0x7675,0x9A6B,0x9C7A,0x9E1D,
|
||||
0x7069,0x706A,0x9EA4,0x9F7E,0x9F49,0x9F98};
|
||||
0x7069,0x706A,0x9EA4,0x9F7E,0x9F49,0x9F98,0x7881,0x92B9,
|
||||
0x88CF,0x58BB,0x6052,0x7CA7,0x5AFA};
|
||||
|
||||
static int func_big5_uni_onechar(int code){
|
||||
if ((code>=0xA140)&&(code<=0xC7FC))
|
||||
return(tab_big5_uni0[code-0xA140]);
|
||||
if ((code>=0xC940)&&(code<=0xF9D5))
|
||||
if ((code>=0xC940)&&(code<=0xF9DC))
|
||||
return(tab_big5_uni1[code-0xC940]);
|
||||
return(0);
|
||||
}
|
||||
|
|
@ -3886,7 +3886,7 @@ static uint16 tab_uni_big57[]={
|
|||
0xE54D,0xE552, 0,0xE54E, 0,0xE551,0xBC5C, 0,
|
||||
0xBEA5,0xBC5B, 0,0xE54A,0xE550, 0,0xBC5A,0xE54F,
|
||||
0,0xE54C, 0,0xBC58, 0, 0, 0, 0,
|
||||
0, 0,0xE94D, 0,0xE94F,0xE94A,0xBEC1,0xE94C,
|
||||
0, 0,0xE94D,0xF9D9,0xE94F,0xE94A,0xBEC1,0xE94C,
|
||||
0,0xBEC0,0xE94E, 0, 0,0xBEC3,0xE950,0xBEC2,
|
||||
0xE949,0xE94B, 0, 0, 0, 0,0xC0A5,0xECCC,
|
||||
0,0xC0A4,0xECCD,0xC0A3,0xECCB,0xC0A2,0xECCA, 0,
|
||||
|
|
@ -3958,7 +3958,7 @@ static uint16 tab_uni_big57[]={
|
|||
0xE175,0xB9DE,0xE174,0xB9E4, 0,0xE16D,0xB9DF, 0,
|
||||
0xE17B,0xB9E0,0xE16F,0xE172,0xE177,0xE171,0xE16C, 0,
|
||||
0, 0, 0,0xE173,0xE555,0xBC61,0xE558,0xE557,
|
||||
0xE55A,0xE55C, 0,0xBC5F, 0,0xE556, 0,0xE554,
|
||||
0xE55A,0xE55C,0xF9DC,0xBC5F, 0,0xE556, 0,0xE554,
|
||||
0,0xE55D,0xE55B,0xE559, 0,0xE55F, 0,0xE55E,
|
||||
0xBC63,0xBC5E, 0,0xBC60,0xBC62, 0, 0,0xE560,
|
||||
0xE957, 0, 0,0xE956,0xE955, 0,0xE958,0xE951,
|
||||
|
|
@ -4129,7 +4129,7 @@ static uint16 tab_uni_big57[]={
|
|||
0,0xCEC0, 0, 0, 0, 0, 0, 0,
|
||||
0xCECA,0xD1A1,0xCECB,0xABEE,0xCECE,0xCEC4,0xABED,0xCEC6,
|
||||
0,0xCEC7, 0, 0,0xCEC9,0xABE9, 0, 0,
|
||||
0xAEA3, 0, 0,0xCEC5,0xCEC1,0xAEA4, 0, 0,
|
||||
0xAEA3, 0,0xF9DA,0xCEC5,0xCEC1,0xAEA4, 0, 0,
|
||||
0xCECF,0xAE7E,0xD17D,0xCEC8, 0,0xD17C,0xCEC3,0xCECC,
|
||||
0, 0,0xABEC,0xAEA1,0xABF2,0xAEA2,0xCED0,0xD17E,
|
||||
0xABEB,0xAEA6,0xABF1,0xABF0,0xABEF,0xAEA5,0xCED1,0xAEA7,
|
||||
|
|
@ -4903,7 +4903,7 @@ static uint16 tab_uni_big57[]={
|
|||
0xDACF,0xDACE,0xDACB,0xB2B8,0xB577,0xDAC9,0xDACC,0xB578,
|
||||
0xDACD,0xDACA, 0, 0, 0, 0, 0, 0,
|
||||
0,0xDEEE, 0,0xDEF2,0xB84E, 0,0xE2F0,0xB851,
|
||||
0xDEF0, 0, 0,0xDEED,0xDEE8,0xDEEA,0xDEEB,0xDEE4,
|
||||
0xDEF0,0xF9D6, 0,0xDEED,0xDEE8,0xDEEA,0xDEEB,0xDEE4,
|
||||
0,0xB84D, 0, 0,0xB84C, 0,0xB848,0xDEE7,
|
||||
0,0xB84F, 0,0xB850,0xDEE6,0xDEE9,0xDEF1,0xB84A,
|
||||
0xB84B,0xDEEF,0xDEE5, 0, 0, 0,0xE2F2,0xBAD0,
|
||||
|
|
@ -5035,7 +5035,7 @@ static uint16 tab_uni_big57[]={
|
|||
0xD34D,0xAFBB,0xD34B, 0,0xD34C,0xD34E, 0, 0,
|
||||
0,0xD34A,0xB2C9, 0,0xD6DE,0xB2CB,0xD6E0,0xB2CA,
|
||||
0xD6DF, 0, 0, 0, 0, 0,0xDAE8,0xB5AF,
|
||||
0,0xDAEA,0xDAE7,0xD6E1, 0,0xB5B0, 0, 0,
|
||||
0,0xDAEA,0xDAE7,0xD6E1, 0,0xB5B0, 0,0xF9DB,
|
||||
0xDAE9, 0, 0, 0, 0, 0, 0,0xDF56,
|
||||
0,0xB864,0xDF54,0xB865,0xDF55,0xB866, 0, 0,
|
||||
0,0xBAE9,0xE361,0xE35E,0xE360,0xBAEA,0xBAEB,0xE35F,
|
||||
|
|
@ -5424,7 +5424,7 @@ static uint16 tab_uni_big57[]={
|
|||
0,0xB5F6,0xDBCD, 0, 0, 0,0xDBC9,0xDBCB,
|
||||
0xDBC6,0xDBC5,0xDBC3, 0,0xDBCA,0xDBCC,0xDBC8, 0,
|
||||
0xDBC7,0xB5F4,0xB5F5, 0, 0, 0, 0, 0,
|
||||
0,0xDBCF,0xB8CD,0xDFF2,0xDFF8,0xDFF3,0xDFF4, 0,
|
||||
0,0xDBCF,0xB8CD,0xDFF2,0xDFF8,0xDFF3,0xDFF4,0xF9D8,
|
||||
0xDFF9, 0,0xB8CF, 0,0xB8C7,0xB8CE,0xDFF1,0xDBC4,
|
||||
0xB8CA,0xB8C8,0xDFF7,0xDFF6,0xB8C9,0xB8CB,0xDFF5,0xB8C6,
|
||||
0,0xB8CC, 0, 0, 0, 0, 0,0xE3F6,
|
||||
|
|
@ -5742,7 +5742,7 @@ static uint16 tab_uni_big57[]={
|
|||
0xE47B,0xE4AF,0xE4AC,0xE4A7,0xE477,0xE476,0xE4A1,0xE4B4,
|
||||
0xBBCF,0xE4B7,0xE47D,0xE4A3,0xBE52, 0, 0, 0,
|
||||
0, 0,0xBE5A,0xBE55,0xE8A4,0xE8A1,0xE867,0xBE50,
|
||||
0, 0, 0,0xBE4F,0xBE56, 0, 0, 0,
|
||||
0,0xF9D7, 0,0xBE4F,0xBE56, 0, 0, 0,
|
||||
0xE865,0xBE54,0xE871,0xE863,0xE864,0xBE4E,0xE8A3,0xBE58,
|
||||
0xE874,0xE879,0xE873,0xEBEE,0xE86F,0xE877,0xE875,0xE868,
|
||||
0xE862,0xE87D,0xBE57,0xE87E, 0,0xE878, 0,0xE86D,
|
||||
|
|
|
|||
|
|
@ -322,16 +322,13 @@ static my_bool my_like_range_cp932(CHARSET_INFO *cs __attribute__((unused)),
|
|||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
{
|
||||
const char *end;
|
||||
const char *end= ptr + ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
if (charlen < ptr_length)
|
||||
ptr_length= charlen;
|
||||
end= ptr + ptr_length;
|
||||
|
||||
while (ptr < end && min_str < min_end) {
|
||||
for ( ; ptr < end && min_str < min_end && charlen > 0 ; charlen--)
|
||||
{
|
||||
if (ismbchar_cp932(cs, ptr, end)) {
|
||||
*min_str++ = *max_str++ = *ptr++;
|
||||
if (min_str < min_end)
|
||||
|
|
|
|||
|
|
@ -2705,16 +2705,12 @@ static my_bool my_like_range_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
|||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
{
|
||||
const char *end;
|
||||
const char *end= ptr + ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
if (charlen < ptr_length)
|
||||
ptr_length= charlen;
|
||||
end= ptr + ptr_length;
|
||||
|
||||
for (; ptr != end && min_str != min_end ; ptr++)
|
||||
for (; ptr != end && min_str != min_end && charlen > 0; ptr++, charlen--)
|
||||
{
|
||||
if (ptr+1 != end && isgbkcode(ptr[0],ptr[1]))
|
||||
{
|
||||
|
|
@ -2725,7 +2721,10 @@ static my_bool my_like_range_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
|||
if (*ptr == escape && ptr+1 != end)
|
||||
{
|
||||
ptr++; /* Skip escape */
|
||||
*min_str++= *max_str++ = *ptr;
|
||||
if (isgbkcode(ptr[0], ptr[1]))
|
||||
*min_str++= *max_str++ = *ptr;
|
||||
if (min_str < min_end)
|
||||
*min_str++= *max_str++= *ptr;
|
||||
continue;
|
||||
}
|
||||
if (*ptr == w_one) /* '_' in SQL */
|
||||
|
|
|
|||
|
|
@ -502,17 +502,13 @@ my_bool my_like_range_mb(CHARSET_INFO *cs,
|
|||
char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
{
|
||||
const char *end;
|
||||
const char *end= ptr + ptr_length;
|
||||
char *min_org= min_str;
|
||||
char *min_end= min_str + res_length;
|
||||
char *max_end= max_str + res_length;
|
||||
uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
if (charlen < ptr_length)
|
||||
ptr_length= charlen;
|
||||
end= ptr + ptr_length;
|
||||
|
||||
for (; ptr != end && min_str != min_end ; ptr++)
|
||||
for (; ptr != end && min_str != min_end && charlen > 0 ; ptr++, charlen--)
|
||||
{
|
||||
if (*ptr == escape && ptr+1 != end)
|
||||
{
|
||||
|
|
@ -522,14 +518,8 @@ my_bool my_like_range_mb(CHARSET_INFO *cs,
|
|||
}
|
||||
if (*ptr == w_one || *ptr == w_many) /* '_' and '%' in SQL */
|
||||
{
|
||||
charlen= my_charpos(cs, min_org, min_str, res_length/cs->mbmaxlen);
|
||||
|
||||
if (charlen < (uint) (min_str - min_org))
|
||||
min_str= min_org + charlen;
|
||||
|
||||
/* Write min key */
|
||||
*min_length= (uint) (min_str - min_org);
|
||||
*max_length= res_length;
|
||||
do
|
||||
{
|
||||
*min_str++= (char) cs->min_sort_char;
|
||||
|
|
@ -540,6 +530,7 @@ my_bool my_like_range_mb(CHARSET_INFO *cs,
|
|||
representation of the max_sort_char character,
|
||||
and copy it into max_str in a loop.
|
||||
*/
|
||||
*max_length= res_length;
|
||||
pad_max_char(cs, max_str, max_end);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -997,17 +997,12 @@ my_bool my_like_range_simple(CHARSET_INFO *cs,
|
|||
char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
{
|
||||
const char *end;
|
||||
const char *end= ptr + ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
#ifdef USE_MB
|
||||
uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
|
||||
if (charlen < ptr_length)
|
||||
ptr_length= charlen;
|
||||
#endif
|
||||
end= ptr + ptr_length;
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
for (; ptr != end && min_str != min_end ; ptr++)
|
||||
for (; ptr != end && min_str != min_end && charlen > 0 ; ptr++, charlen--)
|
||||
{
|
||||
if (*ptr == escape && ptr+1 != end)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -322,16 +322,13 @@ static my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
|||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
{
|
||||
const char *end;
|
||||
const char *end= ptr + ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
if (charlen < ptr_length)
|
||||
ptr_length= charlen;
|
||||
end= ptr + ptr_length;
|
||||
|
||||
while (ptr < end && min_str < min_end) {
|
||||
for ( ; ptr < end && min_str < min_end && charlen > 0 ; charlen--)
|
||||
{
|
||||
if (ismbchar_sjis(cs, ptr, end)) {
|
||||
*min_str++ = *max_str++ = *ptr++;
|
||||
if (min_str < min_end)
|
||||
|
|
|
|||
|
|
@ -498,7 +498,7 @@ static uint thai2sortable(uchar *tstr, uint len)
|
|||
l2bias use to control position weight of l2char
|
||||
example (*=l2char) XX*X must come before X*XX
|
||||
*/
|
||||
memcpy_overlap((char*) p, (char*) (p+1), tlen-1);
|
||||
memmove((char*) p, (char*) (p+1), tlen-1);
|
||||
tstr[len-1]= l2bias + t_ctype0[1]- L2_GARAN +1;
|
||||
p--;
|
||||
continue;
|
||||
|
|
@ -641,71 +641,6 @@ int my_strnxfrm_tis620(CHARSET_INFO *cs __attribute__((unused)),
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Convert SQL LIKE string to C string
|
||||
|
||||
Arg: String, its length, escape character, resource length,
|
||||
minimal string and maximum string
|
||||
Ret: Always 0
|
||||
|
||||
IMPLEMENTATION
|
||||
We just copy this function from opt_range.cc. No need to convert to
|
||||
thai2sortable string. min_str and max_str will be use for comparison and
|
||||
converted there.
|
||||
|
||||
RETURN VALUES
|
||||
0
|
||||
*/
|
||||
|
||||
#define max_sort_chr ((char) 255)
|
||||
|
||||
static
|
||||
my_bool my_like_range_tis620(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *ptr, uint ptr_length,
|
||||
pbool escape, pbool w_one, pbool w_many,
|
||||
uint res_length, char *min_str, char *max_str,
|
||||
uint *min_length, uint *max_length)
|
||||
{
|
||||
const char *end=ptr+ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
|
||||
for (; ptr != end && min_str != min_end ; ptr++)
|
||||
{
|
||||
if (*ptr == escape && ptr+1 != end)
|
||||
{
|
||||
ptr++; /* Skip escape */
|
||||
*min_str++ = *max_str++ = *ptr;
|
||||
continue;
|
||||
}
|
||||
if (*ptr == w_one) /* '_' in SQL */
|
||||
{
|
||||
*min_str++='\0'; /* This should be min char */
|
||||
*max_str++=max_sort_chr;
|
||||
continue;
|
||||
}
|
||||
if (*ptr == w_many) /* '%' in SQL */
|
||||
{
|
||||
*min_length= (uint) (min_str - min_org);
|
||||
*max_length=res_length;
|
||||
do
|
||||
{
|
||||
*min_str++ = 0;
|
||||
*max_str++ = max_sort_chr;
|
||||
} while (min_str != min_end);
|
||||
return 0;
|
||||
}
|
||||
*min_str++= *max_str++ = *ptr;
|
||||
}
|
||||
*min_length= *max_length = (uint) (min_str - min_org);
|
||||
|
||||
while (min_str != min_end)
|
||||
*min_str++ = *max_str++ = ' '; /* Because of key compression */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static unsigned short cs_to_uni[256]={
|
||||
0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
|
||||
|
|
@ -914,7 +849,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
|
|||
my_strnncoll_tis620,
|
||||
my_strnncollsp_tis620,
|
||||
my_strnxfrm_tis620,
|
||||
my_like_range_tis620,
|
||||
my_like_range_simple,
|
||||
my_wildcmp_8bit, /* wildcmp */
|
||||
my_strcasecmp_8bit,
|
||||
my_instr_simple, /* QQ: To be fixed */
|
||||
|
|
@ -974,7 +909,7 @@ CHARSET_INFO my_charset_tis620_thai_ci=
|
|||
1, /* mbminlen */
|
||||
1, /* mbmaxlen */
|
||||
0, /* min_sort_char */
|
||||
0, /* max_sort_char */
|
||||
255, /* max_sort_char */
|
||||
0, /* escape_with_backslash_is_dangerous */
|
||||
&my_charset_handler,
|
||||
&my_collation_ci_handler
|
||||
|
|
@ -1002,7 +937,7 @@ CHARSET_INFO my_charset_tis620_bin=
|
|||
1, /* mbminlen */
|
||||
1, /* mbmaxlen */
|
||||
0, /* min_sort_char */
|
||||
0, /* max_sort_char */
|
||||
255, /* max_sort_char */
|
||||
0, /* escape_with_backslash_is_dangerous */
|
||||
&my_charset_handler,
|
||||
&my_collation_8bit_bin_handler
|
||||
|
|
|
|||
|
|
@ -1426,10 +1426,12 @@ my_bool my_like_range_ucs2(CHARSET_INFO *cs,
|
|||
const char *end=ptr+ptr_length;
|
||||
char *min_org=min_str;
|
||||
char *min_end=min_str+res_length;
|
||||
uint charlen= res_length / cs->mbmaxlen;
|
||||
|
||||
for (; ptr + 1 < end && min_str + 1 < min_end ; ptr+=2)
|
||||
for ( ; ptr + 1 < end && min_str + 1 < min_end && charlen > 0
|
||||
; ptr+=2, charlen--)
|
||||
{
|
||||
if (ptr[0] == '\0' && ptr[1] == escape && ptr+2 < end)
|
||||
if (ptr[0] == '\0' && ptr[1] == escape && ptr + 1 < end)
|
||||
{
|
||||
ptr+=2; /* Skip escape */
|
||||
*min_str++= *max_str++ = ptr[0];
|
||||
|
|
|
|||
|
|
@ -19,7 +19,16 @@
|
|||
#include <m_string.h>
|
||||
|
||||
#undef ULONGLONG_MAX
|
||||
/*
|
||||
Needed under MetroWerks Compiler, since MetroWerks compiler does not
|
||||
properly handle a constant expression containing a mod operator
|
||||
*/
|
||||
#if defined(__NETWARE__) && defined(__MWERKS__)
|
||||
static ulonglong ulonglong_max= ~(ulonglong) 0;
|
||||
#define ULONGLONG_MAX ulonglong_max
|
||||
#else
|
||||
#define ULONGLONG_MAX (~(ulonglong) 0)
|
||||
#endif /* __NETWARE__ && __MWERKS__ */
|
||||
#define MAX_NEGATIVE_NUMBER ((ulonglong) LL(0x8000000000000000))
|
||||
#define INIT_CNT 9
|
||||
#define LFACTOR ULL(1000000000)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ static int my_xml_scan(MY_XML_PARSER *p,MY_XML_ATTR *a)
|
|||
a->beg=p->cur;
|
||||
a->end=p->cur;
|
||||
|
||||
if (!bcmp(p->cur,"<!--",4))
|
||||
if ((p->end - p->cur > 3) && !bcmp(p->cur,"<!--",4))
|
||||
{
|
||||
for( ; (p->cur < p->end) && bcmp(p->cur, "-->", 3); p->cur++)
|
||||
{}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue