SoftwareSerial changing speed unexpectedly

No it is not a commercial project. Theres is two network here, one for work, one for internet. And I am not allowed to transfert anything from one to the other...

I have a function call that will send a command to an Arduino GSM shield via the SoftwareSerial.

gsm_send( bufferCommand, answer, index)

The call of the function is made like that (index is a param, value is 1, answer is a tab defined and initialized):

#define READ_SMS "AT+CMGR="

char buffer[32];
sprintf(buffer, "%s%d", READ_SMS, index);

gsm_send( buffer, answer, index);

In this configuration, it is not working (timing are too long!)

But if I do:

#define READ_SMS "AT+CMGR=1"

//char buffer[32];
//sprintf(buffer, "%s%d", READ_SMS, index);
gsm_send( READ_SMS , answer, index);

it is working!

When working with the sprintf, the command in "buffer" is correct. buffer is large enough to perform the sprintf(buffer, "%s%d", READ_SMS, index) without overflow. So I do not understand what could be wrong...