diff --git a/src/smblib/smblib.c b/src/smblib/smblib.c index 5083d10c03b4008e10ca89e94acddb4d792e39d0..ef396027b55c7b4705b26f7c86a8d05a71f484eb 100644 --- a/src/smblib/smblib.c +++ b/src/smblib/smblib.c @@ -284,19 +284,9 @@ void SMBCALL smb_close_ha(smb_t* smb) /****************************************************************************/ int SMBCALL smb_stack(smb_t* smb, int op) { - static char stack_file[SMB_STACK_LEN][128]; - static FILE* stack_sdt[SMB_STACK_LEN], - *stack_shd[SMB_STACK_LEN], - *stack_sid[SMB_STACK_LEN], - *stack_sda[SMB_STACK_LEN], - *stack_sha[SMB_STACK_LEN]; + static smb_t stack[SMB_STACK_LEN]; static int stack_idx; - char tmp_file[128]; - FILE *tmp_sdt, - *tmp_shd, - *tmp_sid, - *tmp_sda, - *tmp_sha; + smb_t tmp_smb; if(op==SMB_STACK_PUSH) { if(stack_idx>=SMB_STACK_LEN) { @@ -305,12 +295,7 @@ int SMBCALL smb_stack(smb_t* smb, int op) } if(smb->shd_fp==NULL || smb->sdt_fp==NULL || smb->sid_fp==NULL) return(0); /* Msg base not open */ - memcpy(stack_file[stack_idx],smb->file,128); - stack_sdt[stack_idx]=smb->sdt_fp; - stack_shd[stack_idx]=smb->shd_fp; - stack_sid[stack_idx]=smb->sid_fp; - stack_sda[stack_idx]=smb->sda_fp; - stack_sha[stack_idx]=smb->sha_fp; + memcpy(&stack[stack_idx],smb,sizeof(smb_t)); stack_idx++; return(0); } @@ -318,31 +303,16 @@ int SMBCALL smb_stack(smb_t* smb, int op) if(!stack_idx) /* Nothing on the stack, so do nothing */ return(0); if(op==SMB_STACK_XCHNG) { - if(!smb->shd_fp) + if(smb->shd_fp==NULL) return(0); - memcpy(tmp_file,smb->file,128); - tmp_sdt=smb->sdt_fp; - tmp_shd=smb->shd_fp; - tmp_sid=smb->sid_fp; - tmp_sda=smb->sda_fp; - tmp_sha=smb->sha_fp; + memcpy(&tmp_smb,smb,sizeof(smb_t)); } stack_idx--; - memcpy(smb->file,stack_file[stack_idx],128); - smb->sdt_fp=stack_sdt[stack_idx]; - smb->shd_fp=stack_shd[stack_idx]; - smb->sid_fp=stack_sid[stack_idx]; - smb->sda_fp=stack_sda[stack_idx]; - smb->sha_fp=stack_sha[stack_idx]; + memcpy(smb,&stack[stack_idx],sizeof(smb_t)); if(op==SMB_STACK_XCHNG) { + memcpy(&stack[stack_idx],&tmp_smb,sizeof(smb_t)); stack_idx++; - memcpy(stack_file[stack_idx-1],tmp_file,128); - stack_sdt[stack_idx-1]=tmp_sdt; - stack_shd[stack_idx-1]=tmp_shd; - stack_sid[stack_idx-1]=tmp_sid; - stack_sda[stack_idx-1]=tmp_sda; - stack_sha[stack_idx-1]=tmp_sha; } return(0); }