summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/param/loadparm.c49
1 files changed, 12 insertions, 37 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index b9945ac8b9..e702420124 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -288,8 +288,6 @@ static struct loadparm_service **ServicePtrs = NULL;
static int iNumServices = 0;
static int iServiceIndex = 0;
static struct db_context *ServiceHash;
-static int *invalid_services = NULL;
-static int num_invalid_services = 0;
static bool bInGlobalSection = true;
static bool bGlobalOnly = false;
@@ -1533,7 +1531,6 @@ static void free_service_byindex(int idx)
return;
ServicePtrs[idx]->valid = false;
- invalid_services[num_invalid_services++] = idx;
/* we have to cleanup the hash record */
@@ -1560,6 +1557,7 @@ static int add_a_service(const struct loadparm_service *pservice, const char *na
int i;
struct loadparm_service tservice;
int num_to_alloc = iNumServices + 1;
+ struct loadparm_service **tsp = NULL;
tservice = *pservice;
@@ -1571,42 +1569,20 @@ static int add_a_service(const struct loadparm_service *pservice, const char *na
}
}
- /* find an invalid one */
+ /* if not, then create one */
i = iNumServices;
- if (num_invalid_services > 0) {
- i = invalid_services[--num_invalid_services];
+ tsp = SMB_REALLOC_ARRAY_KEEP_OLD_ON_ERROR(ServicePtrs, struct loadparm_service *, num_to_alloc);
+ if (tsp == NULL) {
+ DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n"));
+ return (-1);
}
-
- /* if not, then create one */
- if (i == iNumServices) {
- struct loadparm_service **tsp;
- int *tinvalid;
-
- tsp = SMB_REALLOC_ARRAY_KEEP_OLD_ON_ERROR(ServicePtrs, struct loadparm_service *, num_to_alloc);
- if (tsp == NULL) {
- DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n"));
- return (-1);
- }
- ServicePtrs = tsp;
- ServicePtrs[iNumServices] = talloc(NULL, struct loadparm_service);
- if (!ServicePtrs[iNumServices]) {
- DEBUG(0,("add_a_service: out of memory!\n"));
- return (-1);
- }
- iNumServices++;
-
- /* enlarge invalid_services here for now... */
- tinvalid = SMB_REALLOC_ARRAY_KEEP_OLD_ON_ERROR(invalid_services, int,
- num_to_alloc);
- if (tinvalid == NULL) {
- DEBUG(0,("add_a_service: failed to enlarge "
- "invalid_services!\n"));
- return (-1);
- }
- invalid_services = tinvalid;
- } else {
- free_service_byindex(i);
+ ServicePtrs = tsp;
+ ServicePtrs[iNumServices] = talloc(NULL, struct loadparm_service);
+ if (!ServicePtrs[iNumServices]) {
+ DEBUG(0,("add_a_service: out of memory!\n"));
+ return (-1);
}
+ iNumServices++;
ServicePtrs[i]->valid = true;
@@ -5277,7 +5253,6 @@ bool lp_preferred_master(void)
void lp_remove_service(int snum)
{
ServicePtrs[snum]->valid = false;
- invalid_services[num_invalid_services++] = snum;
}
/*******************************************************************