X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fnetconfig.c;h=52adbbddff79cdb60730b3893a4c740a42399562;hb=dade39dc9ec1d4ab56f14842a162373542e26a67;hp=41aeae6a6d00431df3e0d23370bf8b1f91a505d0;hpb=ace3b2c330af622a0f0a79edd369fca8e13a71a2;p=citadel.git diff --git a/citadel/netconfig.c b/citadel/netconfig.c index 41aeae6a6..52adbbddf 100644 --- a/citadel/netconfig.c +++ b/citadel/netconfig.c @@ -132,7 +132,10 @@ void DeleteGenericCfgLine(const CfgLineType *ThisOne, RoomNetCfgLine **data) { int i; - for (i = 0; i < ThisOne->nSegments; i++) + if (*data == NULL) + return; + + for (i = 0; i < (*data)->nValues; i++) { FreeStrBuf(&(*data)->Value[i]); } @@ -176,12 +179,12 @@ int ReadRoomNetConfigFile(OneRoomNetCfg **pOneRNCfg, char *filename) memset(OneRNCfg, 0, sizeof(OneRoomNetCfg)); *pOneRNCfg = OneRNCfg; Line = NewStrBuf(); + InStr = NewStrBuf(); while (StrBufTCP_read_line(Line, &fd, 0, &ErrStr) >= 0) { if (StrLength(Line) == 0) continue; Pos = NULL; - InStr = NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_NextToken(InStr, Line, &Pos, '|'); pCfg = GetCfgTypeByStr(SKEY(InStr)); @@ -357,11 +360,18 @@ void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg) RoomNetCfgLine *pNext, *pName; pCfg = GetCfgTypeByEnum(eCfg, CfgIt); - pName= OneRNCfg->NetConfigs[pCfg->C]; + pName= OneRNCfg->NetConfigs[eCfg]; while (pName != NULL) { pNext = pName->next; - pCfg->DeAllocator(pCfg, &pName); + if (pCfg != NULL) + { + pCfg->DeAllocator(pCfg, &pName); + } + else + { + DeleteGenericCfgLine(NULL, &pName); + } pName = pNext; } }