From 13bd7f95bf5efb4e4acf274baf20636682ea4b58 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 8 Aug 2006 18:55:46 +0000 Subject: - Changed the map_freeblock_unlock code so that when there's an "already free'd pointer" error, the memory manager will print out the invoking function rather than map_freeblock_unlock, this should help fix it up next time it happens. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8189 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 4 ++++ src/map/map.c | 6 ++++-- src/map/map.h | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 7a92f52c1..0ad477539 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,10 @@ 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. 2006/08/08 + * Changed the map_freeblock_unlock code so that when there's an "already + free'd pointer" error, the memory manager will print out the invoking + function rather than map_freeblock_unlock, this should help fix it up next + time it happens and is reported. [Skotlex] * Casting Kaensin will clear out Suiton and viceversa now. [Skotlex] * Fixed drop-rates (@whodrops) getting duplicates when you use @reloadmobdb [Skotlex] diff --git a/src/map/map.c b/src/map/map.c index 2428cc6e2..71af45530 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -290,13 +290,15 @@ int map_freeblock_lock (void) * バッファにたまっていたblockを全部削除 *------------------------------------------ */ -int map_freeblock_unlock (void) +//int map_freeblock_unlock (void) +int map_freeblock_unlock_sub(char *file, int lineno) { if ((--block_free_lock) == 0) { int i; for (i = 0; i < block_free_count; i++) { //Directly calling aFree shouldn't be a leak, as Free remembers the size the original pointed to memory was allocated with? [Skotlex] - aFree(block_free[i]); +// aFree(block_free[i]); + _mfree(block_free[i], file, lineno, __func__); block_free[i] = NULL; } block_free_count = 0; diff --git a/src/map/map.h b/src/map/map.h index 071bec81c..d299e32c0 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -1278,7 +1278,9 @@ int map_getusers(void); // block削除関連 int map_freeblock(struct block_list *bl); int map_freeblock_lock(void); -int map_freeblock_unlock(void); +//int map_freeblock_unlock(void); +int map_freeblock_unlock_sub (char *file, int lineno); +#define map_freeblock_unlock() map_freeblock_unlock_sub (__FILE__, __LINE__) // block関連 int map_addblock_sub(struct block_list *, int); int map_delblock_sub(struct block_list *, int); -- cgit v1.2.3-70-g09d2