Description: <short summary of the patch>
TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.
.
gcl (2.6.12-51) unstable; urgency=medium
.
* list_order.7
Author: Camm Maguire <camm@debian.org>
---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:
Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2017-06-15
--- gcl-2.6.12.orig/o/gbc.c
+++ gcl-2.6.12/o/gbc.c
@@ -966,6 +966,11 @@ sweep_phase(void) {
STATIC object f;
STATIC struct pageinfo *v;
+ for (j= t_start; j < t_contiguous ; j++) {
+ tm_of(j)->tm_free=OBJNULL;
+ tm_of(j)->tm_nfree=0;
+ }
+
for (v=cell_list_head;v;v=v->next) {
tm = tm_of((enum type)v->type);
@@ -975,22 +980,23 @@ sweep_phase(void) {
k = 0;
for (j = tm->tm_nppage; j > 0; --j, p += tm->tm_size) {
x = (object)p;
- if (is_free(x))
- continue;
- else if (is_marked(x)) {
+
+ if (is_marked(x)) {
unmark(x);
continue;
}
- SET_LINK(f,x);
make_free(x);
+ SET_LINK(f,x);
f = x;
k++;
+
}
+
SET_LINK(f,OBJNULL);
tm->tm_tail = f;
tm->tm_nfree += k;
- pagetoinfo(page(v))->in_use-=k;
+ pagetoinfo(page(v))->in_use=tm->tm_nppage-k;
}
--- gcl-2.6.12.orig/o/sgbc.c
+++ gcl-2.6.12/o/sgbc.c
@@ -873,6 +873,7 @@ sgc_quit(void) {
}
SET_LINK(f,n!=OBJNULL ? n : o);
tm->tm_tail=f;
+ for (;OBJ_LINK(tm->tm_tail)!=OBJNULL;tm->tm_tail=OBJ_LINK(tm->tm_tail));
tm->tm_nfree += tm->tm_alt_nfree;
tm->tm_alt_nfree = 0;
tm->tm_alt_free = OBJNULL;