Commit | Line | Data |
---|---|---|
ce3cd9c6 | 1 | #ifndef lint |
64431033 | 2 | static char *sccsid = "@(#)wwalloc.c 3.3 83/08/19"; |
ce3cd9c6 EW |
3 | #endif |
4 | ||
5 | #include "ww.h" | |
6 | ||
7 | char ** | |
8 | wwalloc(nrow, ncol, size) | |
64431033 | 9 | int nrow, ncol, size; |
ce3cd9c6 | 10 | { |
64431033 | 11 | register char *p, **pp; |
ce3cd9c6 EW |
12 | register int i; |
13 | ||
64431033 EW |
14 | /* fast, call malloc only once */ |
15 | pp = (char **) | |
16 | malloc((unsigned) sizeof (char **) * nrow + size * nrow * ncol); | |
17 | if (pp == 0) | |
ce3cd9c6 | 18 | return 0; |
64431033 EW |
19 | p = (char *)&pp[nrow]; |
20 | size /= sizeof (char); /* paranoid */ | |
21 | size *= ncol; | |
ce3cd9c6 | 22 | for (i = 0; i < nrow; i++) { |
64431033 EW |
23 | pp[i] = p; |
24 | p += size; | |
ce3cd9c6 | 25 | } |
64431033 | 26 | return pp; |
ce3cd9c6 EW |
27 | } |
28 | ||
64431033 | 29 | wwfree(p) |
ce3cd9c6 EW |
30 | register char **p; |
31 | { | |
ce3cd9c6 EW |
32 | free((char *)p); |
33 | } |