Przeglądaj źródła

* Fixed a crash in txt char-servers that the memory manager was hiding. online_char_db being used after being destroyed (since r4026)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11999 54d463be-8e91-2dee-dedb-b68131a5f0ec
FlavioJS 17 lat temu
rodzic
commit
7bc9d86651
2 zmienionych plików z 6 dodań i 4 usunięć
  1. 2 0
      Changelog-Trunk.txt
  2. 4 4
      src/char/char.c

+ 2 - 0
Changelog-Trunk.txt

@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2007/12/31
 2007/12/31
+	* Fixed a crash in txt char-servers that the memory manager was hiding.
+	  online_char_db being used after being destroyed (since r4026)
 	* Added code to reject double logins in clif_parse_WantToConnection and 
 	* Added code to reject double logins in clif_parse_WantToConnection and 
 	  added debug messages to detect possible double logins that escaped.
 	  added debug messages to detect possible double logins that escaped.
 	* Isolated accounts that are waiting for the quit ack. The rest of the 
 	* Isolated accounts that are waiting for the quit ack. The rest of the 

+ 4 - 4
src/char/char.c

@@ -4177,15 +4177,15 @@ int chardb_final(int key, void* data, va_list va)
 void do_final(void)
 void do_final(void)
 {
 {
 	ShowStatus("Terminating server.\n");
 	ShowStatus("Terminating server.\n");
-	// write online players files with no player
-	online_char_db->clear(online_char_db, NULL); //clean the db...
-	create_online_files();
-	online_char_db->destroy(online_char_db, NULL); //dispose the db...
 
 
 	mmo_char_sync();
 	mmo_char_sync();
 	inter_save();
 	inter_save();
 	set_all_offline(-1);
 	set_all_offline(-1);
 	flush_fifos();
 	flush_fifos();
+	// write online players files with no player
+	online_char_db->clear(online_char_db, NULL); //clean the db...
+	create_online_files();
+	online_char_db->destroy(online_char_db, NULL); //dispose the db...
 	
 	
 	if(gm_account) aFree(gm_account);
 	if(gm_account) aFree(gm_account);
 	if(char_dat) aFree(char_dat);
 	if(char_dat) aFree(char_dat);