of getenv by low-level runtime easier.
fix 32-bit bug in gc (there are still more).
R=ken
OCL=29415
CL=29415
extern byte etext[];
extern byte end[];
+enum {
+ PtrSize = sizeof(void*)
+};
+
static void
scanblock(int32 depth, byte *b, int64 n)
{
if(Debug)
printf("%d scanblock %p %D\n", depth, b, n);
- off = (uint32)(uintptr)b & 7;
+ off = (uint32)(uintptr)b & (PtrSize-1);
if(off) {
- b += 8 - off;
- n -= 8 - off;
+ b += PtrSize - off;
+ n -= PtrSize - off;
}
vp = (void**)b;
- n /= 8;
+ n /= PtrSize;
for(i=0; i<n; i++) {
if(mlookup(vp[i], &obj, &size, &ref)) {
if(*ref == RefFree || *ref == RefStack)
if(l == 0)
return emptystring;
- s.str = mal(l);
+ s.str = mal(l+1); // leave room for NUL for C runtime (e.g., callers of getenv)
s.len = l;
if(l > maxstring)
maxstring = l;