diff options
-rw-r--r-- | Changelog.txt | 1 | ||||
-rw-r--r-- | src/char_sql/char.c | 9 |
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; |