Ver Fonte

fixed another char crash

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@418 54d463be-8e91-2dee-dedb-b68131a5f0ec
amber há 20 anos atrás
pai
commit
5e17118188
2 ficheiros alterados com 7 adições e 3 exclusões
  1. 1 0
      Changelog.txt
  2. 6 3
      src/char_sql/char.c

+ 1 - 0
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

+ 6 - 3
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;