summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/env_plan9.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/env_plan9.c')
-rw-r--r--src/pkg/runtime/env_plan9.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/pkg/runtime/env_plan9.c b/src/pkg/runtime/env_plan9.c
index 599319c75..f732c9f29 100644
--- a/src/pkg/runtime/env_plan9.c
+++ b/src/pkg/runtime/env_plan9.c
@@ -12,6 +12,7 @@ runtime·getenv(int8 *s)
intgo len;
byte file[128];
byte *p;
+ static byte b[128];
len = runtime·findnull((byte*)s);
if(len > sizeof file-6)
@@ -25,7 +26,14 @@ runtime·getenv(int8 *s)
if(fd < 0)
return nil;
n = runtime·seek(fd, 0, 2);
- p = runtime·malloc(n+1);
+ if(runtime·strcmp((byte*)s, (byte*)"GOTRACEBACK") == 0){
+ // should not call malloc
+ if(n >= sizeof b)
+ return nil;
+ runtime·memclr(b, sizeof b);
+ p = b;
+ }else
+ p = runtime·malloc(n+1);
r = runtime·pread(fd, p, n, 0);
runtime·close(fd);
if(r < 0)