Просмотр исходного кода

* Fixed a map-server crash when invalid items are deleted (option 'item_check') from a logging-in character (bugreport:2604).
- This removes the pc_checkitem call from pc_authok, as the check is done in clif_parse_LoadEndAck as well, after first status calc has taken place.
- Inventory list is now sent before pc_checkitem in clif_parse_LoadEndAck, so that deleted items do not show up as 'unknown item'.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14685 54d463be-8e91-2dee-dedb-b68131a5f0ec

ai4rei 14 лет назад
Родитель
Сommit
342f5db18c
3 измененных файлов с 5 добавлено и 3 удалено
  1. 4 0
      Changelog-Trunk.txt
  2. 1 1
      src/map/clif.c
  3. 0 2
      src/map/pc.c

+ 4 - 0
Changelog-Trunk.txt

@@ -1,5 +1,9 @@
 Date	Added
 
+2011/01/29
+	* Fixed a map-server crash when invalid items are deleted (option 'item_check') from a logging-in character (bugreport:2604). [Ai4rei]
+	- This removes the pc_checkitem call from pc_authok, as the check is done in clif_parse_LoadEndAck as well, after first status calc has taken place.
+	- Inventory list is now sent before pc_checkitem in clif_parse_LoadEndAck, so that deleted items do not show up as 'unknown item'.
 2011/01/27
 	* Fixed @accept not checking, whether or not a duel is already full (bugreport:2740, since r4111). [Ai4rei]
 	* Resolving allow/deny IP rules not working (bugreport:2632). [Ai4rei]

+ 1 - 1
src/map/clif.c

@@ -8400,8 +8400,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 		clif_refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
 
 	// item
+	clif_inventorylist(sd);  // inventory list first, otherwise deleted items in pc_checkitem show up as 'unknown item'
 	pc_checkitem(sd);
-	clif_inventorylist(sd);
 	
 	// cart
 	if(pc_iscarton(sd)) {

+ 0 - 2
src/map/pc.c

@@ -892,9 +892,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
 	if (!(battle_config.display_skill_fail&2))
 		sd->state.showdelay = 1;
 		
-	// ƒAƒCƒeƒ€ƒ`ƒFƒbƒN
 	pc_setinventorydata(sd);
-	pc_checkitem(sd);
 
 	status_change_init(&sd->bl);
 	if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) && (pc_isGM(sd) >= get_atcommand_level(atcommand_hide)))