Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
auth_update crash
Dec 23, 2017, 10:15 pm
By Remcon
check_tumble
Dec 18, 2017, 7:21 pm
By Remcon
parse description bug
Dec 15, 2017, 10:08 pm
By Remcon
Couple bugs
Dec 12, 2017, 5:42 pm
By Remcon
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
LoP 1.46
Author: Remcon
Submitted by: Remcon
LOP 1.45
Author: Remcon
Submitted by: Remcon
LOP Heroes Edition
Author: Vladaar
Submitted by: Vladaar
Heroes sound extras
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.3
Author: Vladaar
Submitted by: Vladaar
Users Online
CommonCrawl, Bing, Yandex, Yahoo!

Members: 0
Guests: 18
Stats
Files
Topics
Posts
Members
Newest Member
478
3,708
19,242
612
Jacki72H
Today's Birthdays
Evoru (32)
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,639
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 >>