* d - x-cp866
* m - x-mac-cyrillic
*****************************************************************************/
-static char * php_convert_cyr_string(unsigned char *str, char from, char to)
+static char * php_convert_cyr_string(unsigned char *str, int length, char from, char to)
{
const unsigned char *from_table, *to_table;
unsigned char tmp;
if (!str)
return (char *)str;
- for( i = 0; str[i]; i++)
+ for( i = 0; i<length; i++)
{
tmp = (from_table == NULL)? str[i] : from_table[ str[i] ];
str[i] = (to_table == NULL) ? tmp : to_table[tmp + 256];
convert_to_string_ex(fr_cs);
convert_to_string_ex(to_cs);
- str = (unsigned char*) (*str_arg)->value.str.val;
+ str = (unsigned char*) estrndup((*str_arg)->value.str.val, (*str_arg)->value.str.len);
- php_convert_cyr_string(str, (*fr_cs)->value.str.val[0],(*to_cs)->value.str.val[0]);
- RETVAL_STRING((char *)str, 1)
+ php_convert_cyr_string(str, (*str_arg)->value.str.len, (*fr_cs)->value.str.val[0], (*to_cs)->value.str.val[0]);
+ RETVAL_STRING((char *)str, 0)
}
/* }}} */