Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
Couple bugs
Dec 12, 2017, 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, DotBot

Members: 0
Guests: 10
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 » SmaugFUSS Bugfix List » [Bug] Previous social case se...
Forum Rules | Mark all | Recent Posts

[Bug] Previous social case sensitivity fix causes its own crash
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Oct 14, 2007, 11:16 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: Previous social case sensitivity fix causes its own crash
Danger: High - Game crash
Found by: Kayle
Fixed by: DavidHaley

---

mud.h

Locate:
ST *find_social args( ( char *command ) );


Change to:
ST *find_social( const char *command );


interp.c, find_social

Replace the function with:
SOCIALTYPE *find_social( const char *command )
{
   SOCIALTYPE *social;
   int hash;

   char c = LOWER(command[0]);

   if( c < 'a' || c > 'z' )
      hash = 0;
   else
      hash = ( c - 'a' ) + 1;

   for( social = social_index[hash]; social; social = social->next )
      if( !str_prefix( command, social->name ) )
         return social;

   return NULL;
}


The reasoning for this may not be entirely clear. But David explained it pretty well. Basically any string fed to a command in the form of a literal, such as "Burp", is treated by the program as a const, meaning it is read-only. Passing that through to the fixed find_social created a problem when the drunk_randoms code sent it's socials to be looked up. Trying to modify the first letter of the string triggered the crash. Changing the function argument to a const fixes this so the compiler will pick it up, and now we just check the first char by storing that in a new variable.
       
Pages:<< prev 1 next >>