diff --git a/src/sbbs3/scfg/scfgmsg.c b/src/sbbs3/scfg/scfgmsg.c index 290bc266ebeebc9407f1bd89fcf2222dac99c32a..2c41df4269a04b9fbf22e0eb918abf7d68de7804 100644 --- a/src/sbbs3/scfg/scfgmsg.c +++ b/src/sbbs3/scfg/scfgmsg.c @@ -126,6 +126,7 @@ void msgs_cfg() char tmp_code[16]; int j,k,l,q,s; int i,file,ptridx,n; + unsigned total_subs; long ported; sub_t tmpsub; static grp_t savgrp; @@ -538,6 +539,8 @@ import into the current message group. uifc.msg("Open Failure"); break; } uifc.pop("Importing Areas..."); + total_subs = cfg.total_subs; /* Save original number of subs */ + ptridx = 0; while(!feof(stream)) { if(!fgets(str,sizeof(str),stream)) break; truncsp(str); @@ -676,13 +679,13 @@ import into the current message group. || tmpsub.qwkname[0]==0) continue; - for(j=0;j<cfg.total_subs;j++) { + for(j=0;j<total_subs;j++) { if(cfg.sub[j]->grp!=i) continue; if(!stricmp(cfg.sub[j]->code_suffix,tmpsub.code_suffix)) break; } - if(j==cfg.total_subs) { - + if(j==total_subs) { + j=cfg.total_subs; if((cfg.sub=(sub_t **)realloc(cfg.sub ,sizeof(sub_t *)*(cfg.total_subs+1)))==NULL) { errormsg(WHERE,ERR_ALLOC,nulstr,cfg.total_subs+1); @@ -698,9 +701,9 @@ import into the current message group. } memset(cfg.sub[j],0,sizeof(sub_t)); } if(!k) { - ptridx=cfg.sub[j]->ptridx; /* save original ptridx */ + n=cfg.sub[j]->ptridx; /* save original ptridx */ memcpy(cfg.sub[j],&tmpsub,sizeof(sub_t)); - cfg.sub[j]->ptridx=ptridx; /* restore original ptridx */ + cfg.sub[j]->ptridx=n; /* restore original ptridx */ } else { cfg.sub[j]->grp=i; if(cfg.total_faddrs) @@ -714,16 +717,17 @@ import into the current message group. cfg.sub[j]->maxmsgs=1000; } if(j==cfg.total_subs) { /* adding new sub-board */ - for(ptridx=0;ptridx<USHRT_MAX;ptridx++) { - for(n=0;n<cfg.total_subs;n++) + for(;ptridx<USHRT_MAX;ptridx++) { + for(n=0;n<total_subs;n++) if(cfg.sub[n]->ptridx==ptridx) break; - if(n==cfg.total_subs) + if(n==total_subs) break; } cfg.sub[j]->ptridx=ptridx; /* use new ptridx */ cfg.sub[j]->misc=tmpsub.misc; cfg.total_subs++; + ptridx++; /* don't use the same ptridx for next sub */ } uifc.changes=1; ported++;