It would have been very helpful if instead of 1 there was 4 (for arrayDecode) or 16 (for base64Decode).
How can we be sure that the problem lay on base64Decode and not on arrayDecode. After all, for what I remember, trying to arrayDecode a var that is not an array will interrupt the script. Isn't it so?
There's no char line because the error is only being reported at the `put` statement line which (presumably) has its `put` token at char 1 of the line...
As base64Decode never throws an error - it ignores 'invalid' chars in the input (the code for that function hasn't changed ever I don't think!) - the error must be generated by arrayDecode - the reason it isn't cited as that is because that function only indicates success or failure, it doesn't actually generate a specific error code (which, with hindsight, is perhaps a bit of an omission).
Now, to my knowledge, the only case where arrayDecode will fail is if it is given invalid input - i.e. something which is not the result of arrayEncode. I can't recall a single case of arrayEncode generating something which arrayDecode could not decode - all reported bugs of that ilk have always ended up being scripter error...
This means, the most likely reason for that line throwing an error here is that what is in tTempArray is not a valid base64-encoded-array-encoded value.
Assuming that, there are two possibilities here:
1. The file it is fetched from is somehow corrupted.
2. The fetch of the file failed, and there was some lingering value in tTempArray from something earlier in the handler.
In terms of (1), the best you can do is use try/catch around arrayDecode - and assume if an error is thrown that there's something up with the file on disk.
In terms of (2), you should be checking 'the result' after you fetch the file into tTempArray using 'put url ... into', to make sure it succeeded - if it is non-empty then don't attempt to decode.