



		
		 
 The compiler crashes hard when compiling this file,
and produces no complaint about the syntax error present in the before property of the "thing" object.
It's not just the print statement and the comma causing the problem,
as it doesn't happen if you use that construction inside a description property. The compiler sees the comma and interprets the line as an action
switch case.
The string, which is longer than an identifier is expected to be,
is then passed to action_of_name(), which is where the crash actually happens.
Adding a few lines around the function call in parse_switch_spec safeguards against this: 
					
			
		
				 
		About Patches   
				
					 
			Issue C63021     [previous patch]
					
	
	 
	In a 'before' property, "print," crashes the compiler 
		Submitted by: milkshake
		    Appeared in: Compiler 6.30 or before
		    Fixed in: -
	Problem 
   Constant Story "Test story";
  Constant Headline "^A simple Inform test^";
  Include "Parser";
  Include "VerbLib";
  Include "Grammar";
  [ Initialise; location = void; ];
  Object  void "Void"
    with  description "You stand in a featureless void.",
    has   light;
  Object  -> "thing"
    with  description "A miscellaneous thing.",
          name 'thing',
          before [;
            Smell:
              print, "It smells like every other miscellaneous thing you've ever smelled.";
          ];
	Solution (by Cedric Knight) 
   if (token_type == SYMBOL_TT || token_type >= STATEMENT_TT)
      spec_stack[spec_sp] = action_of_name(token_text);
  else
      { spec_stack[spec_sp].value = -1; /* signal as invalid action */
        warning("Extraneous comma or 'to'? This looks like a switch() case.");
      }
	
						
					
					
					
					
  
    Last updated 17 April 2013.
  
  This site is no longer supported; information may be out of date.
  Maintained as a historical archive by the Interactive Fiction Technology Foundation.
  Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
  
    This page was originally managed by Roger Firth.