Sending large values using Wire.send()

I'm sorry, I'm still not getting this bit:

void test(int sizeIn){
 inputCount=0;
 byte buffer[sizeIn];
 while(Wire.available()){
   buffer[inputCount]=Wire.receive();
   inputCount++;
 }
 byte* targetWorker = (byte*)&user;

 for(int i=0;i<=sizeIn;i++){
   targetWorker[i] = buffer[i];
 }
 Serial.println(user);
}

Suppose that "test" gets called with "sizeIn" = 1, because the receiver has only received one byte. So, "buffer" is allocated 1 byte.
Now, it's quite possible that by the time the "while" loop has read that single character, the next one has arrived, so "available" is true, and that character is read.
In fact, looking at the code, this is the only way this can work, unless "test" is always called with the value "4" for "sizeIn" - "test" has to read all four bytes in one hit, otherwise the byte-by-byte assignment to "targetWorker" will fail.

But "buffer" was only allocated one byte.

Can you confirm the value of "sizeIn"?

This strikes me as a real ass-biter - anyone?