| @@ -308,15 +308,12 @@ equal(aaObject *a, aaObject *b) · 307 unmodified lines |
| 308 | return a == b; | 308 | return a == b; |
| 309 | } | 309 | } |
| 310 | | 310 | |
| 311 | if(TYPE(a) == AA_TPAIR){ | 311 | for(; TYPE(a) == AA_TPAIR && TYPE(b) == AA_TPAIR && !ISNULL(a) && !ISNULL(b) && a != b; a = CDR(a), b = CDR(b)){ |
| 312 | for(; !ISNULL(a); a = CDR(a), b = CDR(b)){ | 312 | if(!equal(CAR(a), CAR(b))) |
| 313 | if(!equal(CAR(a), CAR(b))) | 313 | return 0; |
| 314 | return 0; | | |
| 315 | } | | |
| 316 | return a == b; | | |
| 317 | } | 314 | } |
| 318 | | 315 | |
| 319 | return 0; | 316 | return a == b; |
| 320 | } | 317 | } |
| 321 | | 318 | |
| 322 | static int | 319 | static int |
| @@ -512,15 +509,15 @@ objfmt(Fmt *f) · 189 unmodified lines |
| 512 | | 509 | |
| 513 | case AA_TPAIR: | 510 | case AA_TPAIR: |
| 514 | fmtrune(f, '('); | 511 | fmtrune(f, '('); |
| 515 | for(;;){ | 512 | do{ |
| 516 | fmtprint(f, "%§", CAR(obj)); | 513 | fmtprint(f, "%§", CAR(obj)); |
| 517 | obj = CDR(obj); | 514 | obj = CDR(obj); |
| 518 | if(ISNULL(obj)) | 515 | if(ISNULL(obj)) |
| 519 | break; | 516 | break; |
| 520 | fmtrune(f, ' '); | 517 | fmtrune(f, ' '); |
| 521 | } | 518 | }while(TYPE(obj) == AA_TPAIR); |
| 522 | if(!ISNULL(obj)) | 519 | if(!ISNULL(obj)) |
| 523 | fmtprint(f, " . %§", obj); | 520 | fmtprint(f, ". %§", obj); |
| 524 | fmtrune(f, ')'); | 521 | fmtrune(f, ')'); |
| 525 | break; | 522 | break; |
| 526 | | 523 | |
| @@ -853,6 +850,7 @@ eval(aaContext *ctx, aaObject *obj, aaObject *env, aaObject **newenv) · 326 unmodified lines |
| 853 | case P_CONS: | 850 | case P_CONS: |
| 854 | va = evalarg(); | 851 | va = evalarg(); |
| 855 | res = aa_cons(ctx, va, evalarg()); | 852 | res = aa_cons(ctx, va, evalarg()); |
| | 853 | noargs(); |
| 856 | break; | 854 | break; |
| 857 | | 855 | |
| 858 | case P_CAR: | 856 | case P_CAR: |