On Tuesday, September 15, 2015 at 10:57:36 PM UTC-6, ZH ZD wrote:
> 在 2015年9月16日星期三 UTC+8上午11:27:12,Jim P写道:
>> On Tuesday, September 15, 2015 at 8:35:23 PM UTC-6, ZH ZD wrote:
>>> When I run these code, the IDL will exit. (IDL 8.5 windows x64)
>>> str=STRJOIN(strtrim(fix(bindgen(3,4)),2),',')
>>> print,str
>>> a=str.map(lambda(x:x.split(',')))
>>> print,a
>>>
>>> Does someone find this issue too?
>>
>> The example runs without producing an *immediate* crash error for me on Win7-64 in both 32- and 64-bit command line IDL 8.5. However, setting the variable "a" to 0 after those lines will crash IDL in all cases.
>>
>> The results printed before this are not consistent.
>>
>> On 64-bit command line I get this.
>>
>> IDL> str=STRJOIN(strtrim(fix(bindgen(3,4)),2),',')
>> IDL> print,str
>> 0,1,2 3,4,5 6,7,8 9,10,11
>> IDL> a=str.map(lambda(x:x.split(',')))
>> IDL> print,a
>> 0 9 3
>> 3 9 6
>> 6 9 1
>> 9 10 11
>>
>> On 32-bit command line, I get a different set of output lines:
>>
>>
>> IDL> str=STRJOIN(strtrim(fix(bindgen(3,4)),2),',')
>> IDL> print,str
>> 0,1,2 3,4,5 6,7,8 9,10,11
>> IDL> a=str.map(lambda(x:x.split(',')))
>> IDL> print,a
>> 0 9 3
>> 3 1 6
>> 6 9 9
>> 9 10 11
>>
>> The 64-bit Workbench likewise doesn't fail but it produces a different type of output, which is clearly wrong.
>>
>> IDL> str=STRJOIN(strtrim(fix(bindgen(3,4)),2),',')
>> IDL> print,str
>> IDL> a=str.map(lambda(x:x.split(',')))
>> 0,1,2 3,4,5 6,7,8 9,10,11
>> IDL> print,a
>> 0 R 3
>> 3 e 6
>> 6 R 9
>> 9 en me
>>
>> Setting "a = 0" following any of these will indeed crash IDL 8.5.
>
> Yes, the same issue for me. But when you put these codes in a pro file, you run the code and then IDL crash.
>
> PRO test
> COMPILE_OPT idl2
> str=STRJOIN(strtrim(fix(bindgen(3,4)),2),',')
> print,str
> a=str.map(lambda(x:x.split(',')))
> print,a
> END
Yep, this is a known bug with the .Map method. It's logged as issue IDL-69449. I'm hoping to get it fixed for the next service pack/point release.
Thanks!
-Chris
|