src/server/util/object.c

changeset 421
437562f5681d
parent 420
0b42a35d6add
child 423
bb7cff720dd0
equal deleted inserted replaced
420:0b42a35d6add 421:437562f5681d
54 //free(obj->name); 54 //free(obj->name);
55 //free(obj->dt); 55 //free(obj->dt);
56 } 56 }
57 57
58 58
59 void object_add_directive(httpd_object *obj, directive *dir, int dt) { 59 int object_add_directive(httpd_object *obj, directive *dir, int dt) {
60 dtable *l = object_get_dtable(obj, dt); 60 dtable *l = object_get_dtable(obj, dt);
61 // allocate space for the new directive 61 // allocate space for the new directive
62 62 if(l->ndir >= l->alloc) {
63 //l->dirs = realloc(l->dirs, (l->ndir+1)*sizeof(void*)); 63 l->alloc += 8;
64 // TODO: use realloc 64 directive **drs = pool_realloc(obj->pool, l->dirs, (l->alloc)*sizeof(void*));
65 if(!drs) {
66 l->alloc -= 8;
67 return -1;
68 }
69 l->dirs = drs;
70 }
65 71
66 directive **drs = pool_malloc(obj->pool, (l->ndir+1)*sizeof(void*));
67 for(int i=0;i<l->ndir;i++) {
68 drs[i] = l->dirs[i];
69 }
70 if(l->dirs != NULL) {
71 pool_free(obj->pool, l->dirs);
72 }
73 l->dirs = drs;
74
75 // add directive 72 // add directive
76 l->dirs[l->ndir] = dir; 73 l->dirs[l->ndir++] = dir;
77 l->ndir++; 74 return 0;
78 } 75 }
79 76
80 77
81 /* objset functions */ 78 /* objset functions */
82 httpd_objset* objset_create(pool_handle_t *pool) { 79 httpd_objset* objset_create(pool_handle_t *pool) {

mercurial