diff --git a/tdishr/TdiSubscript.c b/tdishr/TdiSubscript.c index 5224efdbef..c42171ed0a 100644 --- a/tdishr/TdiSubscript.c +++ b/tdishr/TdiSubscript.c @@ -299,6 +299,9 @@ int Tdi1Subscript(opcode_t opcode, int narg, struct descriptor *list[], } if (STATUS_NOT_OK) goto badsub; + /* Remove trailing scalar dimensions from signals too */ + if (psig && highdim > highest) + highdim = highest; /******************************************** We know the shape and type, so get the space. Result is scalar if all indices are scalar. diff --git a/tditest/testing/test-tdishr.ans b/tditest/testing/test-tdishr.ans index def0e7923d..c49867759a 100644 --- a/tditest/testing/test-tdishr.ans +++ b/tditest/testing/test-tdishr.ans @@ -5549,11 +5549,17 @@ text(42,5) (1:100)[42] 43 build_signal(1:10,*,["1","2","3","4","5","6","7","8","9","10"])["5"] -Build_Signal(5, *, "5 ") +Build_Signal(5, *) build_signal(1:10,*,1:10)[-1:5] Build_Signal([1,2,3,4,5], *, [1,2,3,4,5]) Build_signal(1:100,*,build_dim(*,.01:1:.01))[.2:.25] Build_Signal([20,21,22,23,24,25], *, [.2,.21,.22,.23,.24,.25]) +_sig2=build_signal([5:15,-5:5],*,build_dim(*,0:.01:.001),build_dim(*,[0.8,0.9])) +Build_Signal([5 : 15, -5 : 5], *, Build_Dim(*, 0 : .01 : .001), Build_Dim(*, [.8,.9])) +_sig1=_sig2[*,0.8] +Build_Signal([5,6,7,8,9,10,11,12,13,14,15], *, [0.,.001,.002,.003,.004,.005,.006,.007,.008,.009,.01]) +_sig1[*:*:.01] +Build_Signal([5,15], *, [0.,.01]) MAP(1:10,[20,-1,5]) [10,1,6] (_A=5:1:-1, MAP(_A,SORT(_A))) diff --git a/tditest/testing/test-tdishr.tdi b/tditest/testing/test-tdishr.tdi index fb223487c2..40ed1afb45 100644 --- a/tditest/testing/test-tdishr.tdi +++ b/tditest/testing/test-tdishr.tdi @@ -2910,6 +2910,9 @@ text(42,5) build_signal(1:10,*,["1","2","3","4","5","6","7","8","9","10"])["5"] build_signal(1:10,*,1:10)[-1:5] Build_signal(1:100,*,build_dim(*,.01:1:.01))[.2:.25] +_sig2=build_signal([5:15,-5:5],*,build_dim(*,0:.01:.001),build_dim(*,[0.8,0.9])) +_sig1=_sig2[*,0.8] +_sig1[*:*:.01] MAP(1:10,[20,-1,5]) (_A=5:1:-1, MAP(_A,SORT(_A))) #