Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
Couple bugs
Yesterday, 5:42 pm
By Remcon
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
Bug in will_fall( )
Oct 23, 2017, 1:35 am
By GatewaySysop
Bug in do_zap( ), do_brandish( )
Oct 18, 2017, 1:52 pm
By GatewaySysop
Bug in get_exp_worth( )
Oct 10, 2017, 1:26 am
By GatewaySysop
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
Memwatch
Author: Johan Lindh
Submitted by: Vladaar
Users Online
CommonCrawl, Yahoo!, Yandex, DotBot, Bing, Google

Members: 0
Guests: 6
Stats
Files
Topics
Posts
Members
Newest Member
477
3,705
19,232
608
LAntorcha
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Bugfix Lists » AFKMud Bugfix List » [Bug] Somewhere exits are not...
Forum Rules | Mark all | Recent Posts

[Bug] Somewhere exits are not always handled right by get_dir
< Newer Topic :: Older Topic > AFKMud 2.03

Pages:<< prev 1 next >>
Post is unread #1 Feb 21, 2008, 9:41 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,639
JoinedJan 1, 2002

Bug: Somewhere exits are not always handled right by get_dir
Danger: Low - This requires a very specific usage of the redit command before the issue shows itself.
Discovered in: AFKMud 2.03
Found by: Remcon
Fixed by: Remcon

---

build.cpp, get_dir

Locate:
      case 'e':
      case '1':
         edir = DIR_EAST;
         break;   /* east  */


Change to:
      case 'e':
      case '1':
         if( c2 == '0' )
            edir = DIR_SOMEWHERE;
         else
            edir = DIR_EAST;
         break;   /* east  */


In a very specific set of circumstances, the redit command can return an incorrect direction when trying to add a somewhere exit. This is due to how the switch statement in get_dir is setup. It uses the first character of the input value for the case checks. 'e' and '1' correspond to the same thing - East. But a somewhere exit can be entered as '?' or '10' which creates a problem. The case '1' needs to look to see if c2 is '0' and if it is, set edir to DIR_SOMEWHERE instead since that's what the command actually intended.

There is also a secondary issue with this function that's not easily fixed. If the direction numbers themselves have been reassigned, this function would produce bad results for anything called by the numerical value. This function would need to get redone along with any reassignment of the values.
       
Pages:<< prev 1 next >>