We are using informix dynamic server 9.4 and client SDK 2.8.1. My program fetches the data from informix server using esql/c.

When I fetch the data from the informix, it fetches the correct data(varchar) for first record and for other record it fetches only 4 bytes.
The sample of my code is:

case SQLCHAR :

EXEC SQL GET DESCRIPTOR escrs[Cur_thread->num] VALUE :i
:char_len = LENGTH;

c_char_len = char_len;
char_data = (char *) realloc (char_data, c_char_len + 1);

EXEC SQL GET DESCRIPTOR escrs[Cur_thread->num] VALUE :i
:indicate = INDICATOR,
:char_data = DATA;

EXEC SQL SET DESCRIPTOR escrs[Cur_thread->num] VALUE :i
DATA = '\0';

if (indicate == -1)
char_data[0] = '\0';
char_data[byleng(char_data, char_len)] = '\0';

c_char_len = strlen (char_data);

The same program is working fine on informix 9.2 as well as 9.3 and client SDK 2.8.1.
It is very critical problem, i need to resolve it ASAP.

Any suggestion will be appreciated.

Thanx in Advance!