M pc/bbmalloc.c => pc/bbmalloc.c +9 -6
@@ 19,8 19,8 @@ enum {
};
static ulong *bbarena[narena];
-static ulong *bbcur[narena] = {&bbarena[0][0], &bbarena[1][0]};
-static ulong *bblast[narena] = {0, 0};
+static ulong *bbcur[narena];
+static ulong *bblast[narena];
#define INTENABLED(v) ((v)&(1<<9))
void *
@@ 33,13 33,13 @@ bbmalloc(int nbytes)
nw = nbytes/sizeof(long);
s = splhi();
a = INTENABLED(s) ? 0 : 1;
- if(bbcur[a] + nw > &bbarena[a][nbbarena])
+ if(bbcur[a] + nw > bbarena[a] + nbbarena)
ans = bbarena[a];
else
ans = bbcur[a];
bbcur[a] = ans + nw;
- splx(s);
bblast[a] = ans;
+ splx(s);
return ans;
}
@@ 50,8 50,11 @@ bbinit(void)
if(bbarena[0])
return;
- for(i = 0; i < narena; i++)
- bbarena[i] = xalloc(nbbarena);
+ for(i = 0; i < narena; i++){
+ bbarena[i] = xalloc(nbbarena * sizeof(long));
+ bbcur[i] = bbarena[i];
+ bblast[i] = 0;
+ }
}
M pc/devvga.c => pc/devvga.c +1 -1
@@ 293,7 293,6 @@ vgawrite(Chan *c, void *buf, long n, ulong offset)
|| ldepth > 3 || ldepth < 0)
error(Ebadarg);
cursoroff(1);
- bbinit();
setscreen(maxx, maxy, ldepth);
cursoron(1);
return n;
@@ 562,6 561,7 @@ setscreen(int maxx, int maxy, int ldepth)
gscreen.ldepth = ldepth;
break;
}
+ bbinit();
cga = 0;
/*