|
|
1.1 root 1: #include <stdio.h>
2: regerror(s)
3: char *s;
4: {
5: char buf[132];
6:
7: strcpy(buf, "regerror: ");
8: strcat(buf, s);
9: strcat(buf, "\n");
10: write(2, buf, strlen(buf));
11: exit(1);
12: }
13: int storcnt;
14: static max;
15: char *MALLOC(x)
16: {
17: int *p;
18: if(x>max) {
19: fprintf(stderr,"MALLOC(%d)\n",max=x);
20: }
21: p=(int*)malloc(x+3*sizeof*p);
22: if(p) {
23: storcnt+=*p=x;
24: p[1]=-2*x;
25: p[2+(x+7)/sizeof*p]=-3*x;
26: return (char*)(p+2);
27: }
28: return 0;
29: }
30: FREE(p)
31: int *p;
32: {
33: p-=2; storcnt-=*p;
34: if(*p>max||*p<=0)ERR("big free",p);
35: if(p[1]!=-2*p[0])ERR("free head scribble",p);
36: if(p[2+(*p+7)/sizeof*p]!=-3**p)ERR("free tail scribble",p);
37: free(p);
38: }
39: ERR(s,p)
40: char *s;
41: int *p;
42: {
43: fprintf(stderr,"ERR: %s\n",s);
44: fprintf(stderr,"p=%o\n",p);
45: fprintf(stderr,"p[0]=%d\n",p);
46: fprintf(stderr,"p[1]=%d\n",p[1]);
47: fprintf(stderr,"p[2]='%s'\n",(char*)(p+2));
48: fprintf(stderr,"p[trail]=%d",p[2+(*p+7)/sizeof*p]);
49: fflush(stdout);
50: abort();
51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.