summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt1
-rw-r--r--src/char_sql/char.c9
2 files changed, 7 insertions, 3 deletions
diff --git a/Changelog.txt b/Changelog.txt
index d9d927469..5f3e76ac4 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,5 +1,6 @@
Date Added
11/29
+ * Fixed crash in src/char_sql/char.c when setting chars offline [MouseJstr]
* Added mapbug.txt which is displayed in map-server, displays
the last bug or w/e fixed for the map-server [MC Cameri]
-You may change it whenever you want
diff --git a/src/char_sql/char.c b/src/char_sql/char.c
index f944eeb58..c23c45bdb 100644
--- a/src/char_sql/char.c
+++ b/src/char_sql/char.c
@@ -201,10 +201,12 @@ void set_char_offline(int char_id, int account_id) {
if (mysql_query(&mysql_handle, tmp_sql))
printf("DB server Error (set_char_offline)- %s\n", mysql_error(&mysql_handle));
+ if (login_fd <= 0 || session[login_fd]->eof)
+ return;
+
WFIFOW(login_fd,0) = 0x272c;
WFIFOL(login_fd,2) = account_id;
WFIFOSET(login_fd,6);
-
}
//-----------------------------------------------------
@@ -2048,12 +2050,13 @@ int parse_char(int fd) {
sd = session[fd]->session_data;
- if(login_fd < 0)
+ if(login_fd < 0)
session[fd]->eof = 1;
if(session[fd]->eof) {
if (fd == login_fd)
login_fd = -1;
- set_char_offline(99,sd->account_id);
+ if (sd != NULL)
+ set_char_offline(99,sd->account_id);
close(fd);
delete_session(fd);
return 0;