1 b5990708 2003-09-30 devnull #include <u.h>
2 b5990708 2003-09-30 devnull #include <libc.h>
3 b5990708 2003-09-30 devnull #include <draw.h>
4 b5990708 2003-09-30 devnull #include <mouse.h>
5 b5990708 2003-09-30 devnull #include <frame.h>
7 b5990708 2003-09-30 devnull #define CHUNK 16
8 b5990708 2003-09-30 devnull #define ROUNDUP(n) ((n+CHUNK)&~(CHUNK-1))
11 b5990708 2003-09-30 devnull _frallocstr(Frame *f, unsigned n)
13 b5990708 2003-09-30 devnull uchar *p;
15 b5990708 2003-09-30 devnull p = malloc(ROUNDUP(n));
16 b5990708 2003-09-30 devnull if(p == 0)
17 b5990708 2003-09-30 devnull drawerror(f->display, "out of memory");
18 b5990708 2003-09-30 devnull return p;
22 b5990708 2003-09-30 devnull _frinsure(Frame *f, int bn, unsigned n)
24 b5990708 2003-09-30 devnull Frbox *b;
25 b5990708 2003-09-30 devnull uchar *p;
27 b5990708 2003-09-30 devnull b = &f->box[bn];
28 b5990708 2003-09-30 devnull if(b->nrune < 0)
29 b5990708 2003-09-30 devnull drawerror(f->display, "_frinsure");
30 b5990708 2003-09-30 devnull if(ROUNDUP(b->nrune) > n) /* > guarantees room for terminal NUL */
32 b5990708 2003-09-30 devnull p = _frallocstr(f, n);
33 b5990708 2003-09-30 devnull b = &f->box[bn];
34 b5990708 2003-09-30 devnull memmove(p, b->ptr, NBYTE(b)+1);
35 b5990708 2003-09-30 devnull free(b->ptr);
36 b5990708 2003-09-30 devnull b->ptr = p;