diff options
author | panikon <panikon@zoho.com> | 2014-07-09 00:19:37 -0300 |
---|---|---|
committer | panikon <panikon@zoho.com> | 2014-07-09 00:19:37 -0300 |
commit | 29de937a2d8b485498fa9ce573efebfb64e8d669 (patch) | |
tree | 62dcf35fc2fba45c7a108c3d60046a741b0a50df | |
parent | 7cd967f812ab741c41c416fb9f7c2a921c36e947 (diff) | |
download | hercules-29de937a2d8b485498fa9ce573efebfb64e8d669.tar.gz hercules-29de937a2d8b485498fa9ce573efebfb64e8d669.tar.bz2 hercules-29de937a2d8b485498fa9ce573efebfb64e8d669.tar.xz hercules-29de937a2d8b485498fa9ce573efebfb64e8d669.zip |
Fixed status_calc_regen crash issue:http://hercules.ws/board/tracker/issue-1298-mapserver-crashed-item-check/
Follow up to 7cd967f812ab741c41c416fb9f7c2a921c36e947
-rw-r--r-- | src/common/sysinfo.h | 4 | ||||
-rw-r--r-- | src/map/packets_struct.h | 3 | ||||
-rw-r--r-- | src/map/status.c | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/common/sysinfo.h b/src/common/sysinfo.h index 97f14d0f2..24f794cb4 100644 --- a/src/common/sysinfo.h +++ b/src/common/sysinfo.h @@ -21,7 +21,11 @@ struct sysinfo_private; struct sysinfo_interface { struct sysinfo_private *p; +#if defined(WIN32) && !defined(__CYGWIN__) long (*getpagesize) (void); +#else + int (*getpagesize) (void); +#endif const char *(*platform) (void); const char *(*osversion) (void); const char *(*cpu) (void); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 3d49944d1..403ab6fa3 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -943,6 +943,9 @@ struct packet_npc_market_open { unsigned int price; unsigned int qty; unsigned short view; + // It seems that the client doesn't have any hard-coded limit for this list + // it's possible to send up to 1890 items without dropping a packet that's + // too large [Panikon] } list[1000];/* TODO: whats the actual max of this? */ } __attribute__((packed)); diff --git a/src/map/status.c b/src/map/status.c index d108d8cfa..499c50e3b 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3413,6 +3413,7 @@ int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt) { void status_calc_regen(struct block_list *bl, struct status_data *st, struct regen_data *regen) { struct map_session_data *sd; int val, skill_lv, reg_flag; + nullpo_retv(bl); if( !(bl->type&BL_REGEN) || !regen ) return; |