unsigned char *str
= (unsigned char *)chise_value_to_c_string (&valdatum);
int len = strlen (str);
- int i;
+ int i = 0;
- if ( (len >= 2) && (str[0] == '?') )
+ if ( (len >= 2) && (str[i++] == '?') )
{
- unsigned char c = str[1];
+ unsigned char c = str[i++];
int counter;
CHISE_Char_ID cid;
+ if (c == '\\')
+ {
+ if (len < 3)
+ return -1;
+ c = str[i++];
+ }
if ( c < 0xC0 )
{
cid = c;
if (counter + 2 <= len)
{
- int i;
+ int j;
- for (i = 0; i < counter; i++)
- cid = (cid << 6) | (str[i + 2] & 0x3F);
+ for (j = 0; j < counter; j++)
+ cid = (cid << 6) | (str[j + i] & 0x3F);
return cid;
}
}