Code: Select all
> (symbols Aa)
(Aa:Aa)
> (Aa p (d))
()
> (Aa "p" (d))
invalid function : (d)
//CRASH!!//
Terminated
->
Code: Select all
0 0 164184 225932 6932 49968 0 0 0 0 1014 162 0 1 99 0
0 0 164184 225932 6932 49968 0 0 0 0 1011 159 0 0 100 0
1 0 164184 205068 6932 49968 0 0 0 0 1010 162 6 12 82 0
1 0 164184 80972 6932 49968 0 0 0 0 1002 125 35 65 0 0
1 0 122820 3568 6932 49968 0 0 0 0 1003 203 34 66 0 0
2 1 187264 2392 968 6936 0 70800 8 70800 1294 454 24 76 0 0
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
4 4 236640 3372 980 6804 20 49376 108 49376 1298 528 5 50 0 45
2 0 250240 2472 980 6804 220 13608 220 13608 1112 629 9 34 0 57
0 1 267212 2384 980 6244 0 17160 0 17160 1029 283 7 43 0 50
0 3 267784 1560 996 6304 0 896 72 896 1035 242 5 10 0 85
0 3 267780 1292 1068 7700 96 0 1560 0 1128 293 0 3 0 97
[2] A similar crash OR segmentation fault happens if after an incorrect operation a bracket is omitted (usually a benign error condition)
Code: Select all
-> newlisp
newLISP v.9.3.5 on Linux IPv4 UTF-8, execute 'newlisp -h' for more info.
> (define Aa:Aa)
nil
> (Aa "f" (list p))
(nil)
> (symbols Aa
missing parenthesis : "...(symbols Aa "
Terminated
//CRASH!!//
I do realize the shown usage is incorrect - only if your script generates it in some unexpected case, or if your program can be manipulated into doing something similar, a very serious condition can happen.
[3] It seems that new usage -- (define Aa:Aa), then (Aa "f" "asdf") or (Aa "f" 345) -- is narrower than the one before?
It seemed that with older usage I could avoid restriction on hash key as STRING ONLY, and on data as only STRING or NUMBER ?? Or am I mistaken and this limitation existed all the time ? (seems, not, as one of my older scripts refused to work with new notation without a typecast).