Changeset 630
- Timestamp:
- May 10, 2011, 8:31:42 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/lisp/lisp_gc.cpp
r561 r630 55 55 LList *LispGC::CollectList(LList *x) 56 56 { 57 LList * last= NULL, *first = NULL;57 LList *prev = NULL, *first = NULL; 58 58 59 59 for (; x && item_type(x) == L_CONS_CELL; ) … … 61 61 LList *p = LList::Create(); 62 62 LObject *old_car = x->car; 63 LObject *old_cdr = x->cdr;64 63 LObject *old_x = x; 65 64 x = (LList *)CDR(x); … … 68 67 69 68 p->car = CollectObject(old_car); 70 p->cdr = CollectObject(old_cdr); 71 72 if (last) 73 last->cdr = p; 69 70 if (prev) 71 prev->cdr = p; 74 72 else 75 73 first = p; 76 last= p;74 prev = p; 77 75 } 78 76 if (x) 79 last->cdr = CollectObject(x); 77 prev->cdr = CollectObject(x); 78 80 79 return first; // we already set the collection pointers 81 80 }
Note: See TracChangeset
for help on using the changeset viewer.