[srvx-commits] CVS: services/src log.c,1.53,1.54
Brought to you by:
entrope
|
From: Zoot <zo...@us...> - 2003-07-08 15:53:10
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv1264/src
Modified Files:
log.c
Log Message:
Fix the logger leaking memory due to overwriting log destination lists rather than appending them while reading its configuration.
Index: log.c
===================================================================
RCS file: /cvsroot/srvx/services/src/log.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -C2 -r1.53 -r1.54
*** log.c 8 Jul 2003 05:15:39 -0000 1.53
--- log.c 8 Jul 2003 15:53:07 -0000 1.54
***************
*** 137,149 ****
static void
! logList_copy(struct logList *target, const struct logList *source)
{
! unsigned int ii;
! target->used = source->used;
! target->size = target->used ? target->used : 1;
! target->list = calloc(target->size, sizeof(target->list[0]));
! for (ii = 0; ii < source->used; ++ii) {
! target->list[ii] = source->list[ii];
! target->list[ii]->refcnt++;
}
}
--- 137,154 ----
static void
! logList_join(struct logList *target, const struct logList *source)
{
! unsigned int ii, jj;
!
! if (!source->used) {
! return;
! }
! jj = target->used;
! target->used += source->used;
! target->size += source->used;
! target->list = realloc(target->list, target->size * sizeof(target->list[0]));
! for (ii = 0; ii < source->used; ++ii, ++jj) {
! target->list[jj] = source->list[ii];
! target->list[jj]->refcnt++;
}
}
***************
*** 338,342 ****
for (sev = 0; sev < LOG_NUM_SEVERITIES; ++sev) {
if (!sevset[sev]) continue;
! logList_copy(&type->logs[sev], &logList);
}
}
--- 343,347 ----
for (sev = 0; sev < LOG_NUM_SEVERITIES; ++sev) {
if (!sevset[sev]) continue;
! logList_join(&type->logs[sev], &logList);
}
}
|