diff --git a/src/sbbs3/mail.cpp b/src/sbbs3/mail.cpp
index 9a614596b1d964c38e0bcd22d80d51dd5f932551..d7a126aabf7a4c62e40d9594ca7901ae232e59cc 100644
--- a/src/sbbs3/mail.cpp
+++ b/src/sbbs3/mail.cpp
@@ -265,14 +265,9 @@ mail_t* DLLCALL loadmail(smb_t* smb, ulong* msgs, uint usernumber
 			smb_unlocksmbhdr(smb);
 			return(NULL); 
 		}
-		mail[l].offset=idx.offset;
-		mail[l].number=idx.number;
-		mail[l].to=idx.to;
-		mail[l].from=idx.from;
-		mail[l].subj=idx.subj;
-		mail[l].time=idx.time;
-		mail[l].attr=idx.attr;
-		l++; }
+		mail[l]=idx;
+		l++; 
+	}
 	smb_unlocksmbhdr(smb);
 	*msgs=l;
 	return(mail);
diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp
index 0603bad9362f508826ced9cdcef655fc0e2469b6..02dae7a819afd55dd2eccaa3a388c900f9bab1d7 100644
--- a/src/sbbs3/readmsgs.cpp
+++ b/src/sbbs3/readmsgs.cpp
@@ -36,7 +36,6 @@
  ****************************************************************************/
 
 #include "sbbs.h"
-#include "post.h"
 
 int sbbs_t::sub_op(uint subnum)
 {
@@ -237,16 +236,13 @@ post_t HUGE16 * sbbs_t::loadposts(long *posts, uint subnum, ulong ptr, long mode
 			if(skip)
 				continue; }
 
-		post[l].offset=idx.offset;
-		post[l].number=idx.number;
-		post[l].to=idx.to;
-		post[l].from=idx.from;
-		post[l].subj=idx.subj;
-		l++; }
+		memcpy(&post[l],&idx,sizeof(idx));
+		l++; 
+	}
 	smb_unlocksmbhdr(&smb);
-	if(!l) {
-		LFREE(post);
-		post=NULL; }
+	if(!l)
+		FREE_AND_NULL(post);
+
 	(*posts)=l;
 	return(post);
 }