SOS: verilog array data got padded when calling into C!

In reply to MichaelSong:

You can’t dereference a svOpenArrayHandle as an array. You need to use ‘svGetArrayElemPtr()’ to get the data pointers for each array element. Refer to section H.12.4 of the LRM.

int tb_sm_io(const svOpenArrayHandle data_buf_ref,int device_addr,int size,int direction) 
{
  unsigned int *pay_load_data[3];
  pay_load_data[0] = (unsigned int *)svGetArrElemPtr(data_buf_ref, 0);
  pay_load_data[1] = (unsigned int *)svGetArrElemPtr(data_buf_ref, 1);
  pay_load_data[2] = (unsigned int *)svGetArrElemPtr(data_buf_ref, 2);

  cdump(*pay_load_data[0]);
  cdump(*pay_load_data[1]);
  cdump(*pay_load_data[2]);

  return 0;
}