| 913 | /* Handle &. */ |
| 914 | |
| 915 | static VALUE * |
| 916 | eval1 (bool evaluate) |
| 917 | { |
| 918 | #ifdef EVAL_TRACE |
| 919 | trace ("eval1"); |
| 920 | #endif |
| 921 | VALUE *l = eval2 (evaluate); |
| 922 | while (true) |
| 923 | { |
| 924 | if (nextarg ("&")) |
| 925 | { |
| 926 | VALUE *r = eval2 (evaluate && !null (l)); |
| 927 | if (null (l) || null (r)) |
| 928 | { |
| 929 | freev (l); |
| 930 | freev (r); |
| 931 | l = int_value (0); |
| 932 | } |
| 933 | else |
| 934 | freev (r); |
| 935 | } |
| 936 | else |
| 937 | return l; |
| 938 | } |
| 939 | } |
| 940 | |
| 941 | /* Handle |. */ |
| 942 |