Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
tintin++ ogg sound player script for linux
Author: Robert Smith
Submitted by: Vladaar
6Dragons ogg Soundpack
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.4
Author: Vladaar
Submitted by: Vladaar
LoP 1.46
Author: Remcon
Submitted by: Remcon
LOP 1.45
Author: Remcon
Submitted by: Remcon
Users Online
CommonCrawl, Yandex

Members: 0
Guests: 9
Stats
Files
Topics
Posts
Members
Newest Member
481
3,734
19,366
618
Micheal64X
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Bugfix Lists » AFKMud Bugfix List » AFKMud Bug Archive » [Bug] Area conversion breaks ...
Forum Rules | Mark all | Recent Posts

[Bug] Area conversion breaks the area lists if one fails
< Newer Topic :: Older Topic > AFKMud 1.77

Pages:<< prev 1 next >>
Post is unread #1 Jul 8, 2006, 9:54 am
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,643
JoinedJan 1, 2002

Bug: Area conversion breaks the area lists if one fails
Danger: High - Area list pointers will be invalidated.
Discovered in: AFKMud 1.77
Found by: ToadVile
Fixed by: Samson

---

act_wiz.c, close_area

Locate:
   UNLINK( pArea, first_area_nsort, last_area_nsort, next_sort_name, prev_sort_name );
   UNLINK( pArea, first_area_vsort, last_area_vsort, next_sort, prev_sort );
   UNLINK( pArea, first_area, last_area, next, prev );
   DISPOSE( pArea );


Change to:
   if( pArea->version > 1 && pArea->version != 1000 )
   {
      UNLINK( pArea, first_area_nsort, last_area_nsort, next_sort_name, prev_sort_name );
      UNLINK( pArea, first_area_vsort, last_area_vsort, next_sort, prev_sort );
   }
   UNLINK( pArea, first_area, last_area, next, prev );
   DISPOSE( pArea );


Then replace the entire areaconvert.c file with the attached copy in this post.

This bug is particularly nasty in that when a conversion fails, the list pointers get corrupted. This is in part because the conversion code manipulates the last_area pointer, and in part because the sort lists don't yet contain the failed area. The LINK and UNLINK macros apparently do not handle removing "nothing" from the lists they call on. In this case it resulted in the zones command returning an empty list since it relies on the vnum sort which has now been corrupted. Further, the failed area has also done some damage to the last_area pointer which causes strange results during the area reset cycle.
Attached file:

Filename: areaconvert.c
Size: 74 KB
Downloads: 7
       
Pages:<< prev 1 next >>