Commit | Line | Data |
---|---|---|
ce3cd9c6 | 1 | #ifndef lint |
03e75950 | 2 | static char *sccsid = "@(#)wwalloc.c 3.4 83/08/26"; |
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); | |
03e75950 EW |
17 | if (pp == 0) { |
18 | wwerrno = WWE_NOMEM; | |
ce3cd9c6 | 19 | return 0; |
03e75950 | 20 | } |
64431033 EW |
21 | p = (char *)&pp[nrow]; |
22 | size /= sizeof (char); /* paranoid */ | |
23 | size *= ncol; | |
ce3cd9c6 | 24 | for (i = 0; i < nrow; i++) { |
64431033 EW |
25 | pp[i] = p; |
26 | p += size; | |
ce3cd9c6 | 27 | } |
64431033 | 28 | return pp; |
ce3cd9c6 EW |
29 | } |
30 | ||
64431033 | 31 | wwfree(p) |
ce3cd9c6 EW |
32 | register char **p; |
33 | { | |
ce3cd9c6 EW |
34 | free((char *)p); |
35 | } |