summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt1
-rw-r--r--src/map/intif.c6
-rw-r--r--src/map/pc.c6
3 files changed, 13 insertions, 0 deletions
diff --git a/Changelog.txt b/Changelog.txt
index 67d535683..e72d4ba37 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,5 +1,6 @@
Date Added
12/29
+ * Fix account register wipe issue (SVN 868) [MouseJstr]
* Double storage/lag exploit fixed (SVN 867) [MouseJstr]
* Another -1 alive_timer fix (SVN 866) [MouseJstr]
* Added @dmstart and @dmtick for debugging malloc tests [MouseJstr]
diff --git a/src/map/intif.c b/src/map/intif.c
index 8e0267781..9ba9b1ebb 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -196,6 +196,9 @@ int intif_saveaccountreg(struct map_session_data *sd) {
nullpo_retr(0, sd);
+ if (sd->status.account_reg_num == -1)
+ return 0;
+
WFIFOW(inter_fd,0) = 0x3004;
WFIFOL(inter_fd,4) = sd->bl.id;
for(j=0,p=8;j<sd->status.account_reg_num;j++,p+=36){
@@ -216,6 +219,9 @@ int intif_request_accountreg(struct map_session_data *sd)
WFIFOW(inter_fd,0) = 0x3005;
WFIFOL(inter_fd,2) = sd->bl.id;
WFIFOSET(inter_fd,6);
+
+ sd->status.account_reg_num = -1;
+
return 0;
}
diff --git a/src/map/pc.c b/src/map/pc.c
index 3288dd1bc..8f2ce5654 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6583,6 +6583,12 @@ int pc_setaccountreg(struct map_session_data *sd,char *reg,int val)
nullpo_retr(0, sd);
+ if (sd->status.account_reg_num == -1) {
+ if(battle_config.error_log)
+ printf("pc_setaccountreg : refusing to set until vars are received\n");
+ return 1;
+ }
+
if(val==0){
for(i=0;i<sd->status.account_reg_num;i++){
if(strcmp(sd->status.account_reg[i].str,reg)==0){