From: Ron F. <ro...@us...> - 2006-06-29 19:30:08
|
Update of /cvsroot/nsclspectcl/SpecTcl/Display In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv29525/Display Modified Files: Tag: SpecTcl-3-1-maintenance allocator.c Log Message: - Improve performance of browser terminal parent creation. - Fix error in alignment mask computation that could cause Xamine free list corruption Index: allocator.c =================================================================== RCS file: /cvsroot/nsclspectcl/SpecTcl/Display/allocator.c,v retrieving revision 5.2 retrieving revision 5.2.2.1 diff -C2 -d -r5.2 -r5.2.2.1 *** allocator.c 3 Jun 2005 15:18:50 -0000 5.2 --- allocator.c 29 Jun 2006 19:30:01 -0000 5.2.2.1 *************** *** 142,154 **** longmask() { ! int i; ! long mask; ! ! mask = 0; ! for(i = 1; i < sizeof(long); i++) { ! mask = mask << 1; ! mask |= 1; ! } ! return ~mask; } --- 142,146 ---- longmask() { ! return ~(sizeof(long) - 1); } *************** *** 200,203 **** --- 192,197 ---- ** (makes handling the list easier). */ + + size += sizeof(node); if(largest->size < size) *************** *** 249,252 **** --- 243,247 ---- *arena_id = (caddr_t)st_node; if( (node *)(storage + st_node->size) == nxt) { /* Coalesce if possible */ + st_node->size += nxt->size + sizeof(node); st_node->next = nxt->next; *************** *** 278,281 **** --- 273,277 ---- p = (char *)st_node; p += st_node->size + sizeof(node); + if(p == (char *)st_node->next) { /* If st_node is last then this is never true */ st_node->size += st_node->next->size + sizeof(node); |