diff --git a/tdishr/TdiTrans.c b/tdishr/TdiTrans.c index 90c6c24dc7..76307dfbba 100644 --- a/tdishr/TdiTrans.c +++ b/tdishr/TdiTrans.c @@ -291,8 +291,16 @@ int Tdi1Trans(int opcode, int narg, mdsdsc_t *list[], mdsdsc_xd_t *out_ptr) psig->dimensions[dim] = 0; pmask = (mdsdsc_t *)&ncopies; /** scalar to simple vector **/ - if (rank == 0) - memcpy((char *)&arr, (char *)pa, head); + if (rank == 0) { + memcpy((char *)&arr, (char *)pa, sizeof(struct descriptor)); + arr.dimct = 1; + arr.aflags.coeff = 0; + arr.a0 = arr.pointer; + arr.arsize = arr.length; + arr.m[0] = 1; + arr.m[1] = 1; + arr.m[dim] = ncopies; + } /** simple and coefficient vector **/ else { @@ -327,8 +335,16 @@ int Tdi1Trans(int opcode, int narg, mdsdsc_t *list[], mdsdsc_xd_t *out_ptr) } pmask = (mdsdsc_t *)&ncopies; /** scalar to simple vector **/ - if (rank == 0) - memcpy((char *)&arr, (char *)pa, head); + if (rank == 0) { + memcpy((char *)&arr, (char *)pa, sizeof(struct descriptor)); + arr.dimct = 1; + arr.aflags.coeff = 0; + arr.a0 = arr.pointer; + arr.arsize = arr.length; + arr.m[0] = 1; + arr.m[1] = 1; + arr.m[dim] = ncopies; + } else if (rank >= MAX_DIMS) status = TdiNDIM_OVER; /** coefficient vector **/ @@ -352,7 +368,8 @@ int Tdi1Trans(int opcode, int narg, mdsdsc_t *list[], mdsdsc_xd_t *out_ptr) arr.dimct = 2; arr.aflags.coeff = 1; arr.a0 = arr.pointer; - arr.m[1] = arr.m[0] = (int)pa->arsize / (int)pa->length; + arr.m[0] = (int)pa->arsize / (int)pa->length; + arr.m[1] = arr.m[0]; arr.m[dim] = ncopies; } arr.arsize *= ncopies;