1
0
mirror of https://github.com/golang/go synced 2024-11-18 15:34:53 -07:00

add NUL when allocating strings, to make use

of getenv by low-level runtime easier.
fix 32-bit bug in gc (there are still more).

R=ken
OCL=29415
CL=29415
This commit is contained in:
Russ Cox 2009-05-26 17:39:25 -07:00
parent 7d73075511
commit 1a0a6f9d50
2 changed files with 9 additions and 5 deletions

View File

@ -22,6 +22,10 @@ enum {
extern byte etext[];
extern byte end[];
enum {
PtrSize = sizeof(void*)
};
static void
scanblock(int32 depth, byte *b, int64 n)
{
@ -34,14 +38,14 @@ 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)

View File

@ -27,7 +27,7 @@ gostringsize(int32 l)
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;