Inform - Support - Patches

About Patches  

Compiler  
Library  

DM4 Errata  

Issue L61001

Plural containers listed wrong
Submitted by: Anson Turner     Appeared in: Library 6/10     Fixed in: Library 6/11
Problem

The list writing routines do not handle plural containers correctly (library 6/10). If you have two empty boxes, it might list:

  two boxes (which is closed)

Not only should it say "are closed", but it will lump empty containers together even if some are open and others aren't.

Solution

To fix the grammatical problem, find the first call to WriteAfterEntry() in VerbLibm.h:

  WriteAfterEntry(j,depth,stack_pointer);

and change it to:

  if (sizes_p->i > 1 && j hasnt pluralname)
  {   give j pluralname;
      WriteAfterEntry(j, depth, stack_pointer);
      give j ~pluralname;
  }
  else WriteAfterEntry(j,depth,stack_pointer);

To keep the object list from combining empty containers when some are open and others are not, modify the ListEqual() routine:

  [ ListEqual o1 o2;
    if (child(o1)~=0 && WillRecurs(o1)~=0) rfalse;
    if (child(o2)~=0 && WillRecurs(o2)~=0) rfalse;

    if (c_style & (FULLINV_BIT + PARTINV_BIT) ~= 0)
    {   if ((o1 hasnt worn && o2 has worn)
            || (o2 hasnt worn && o1 has worn)) rfalse;
        if ((o1 hasnt light && o2 has light)
            || (o2 hasnt light && o1 has light)) rfalse;

  ! BEGIN NEW CODE
        if (o1 has container)
        {    if (o2 hasnt container) rfalse;
             if ((o1 has open && o2 hasnt open)
                  || (o2 has open && o1 hasnt open))
                      rfalse;
        }
        else if (o2 has container) rfalse;
  ! END NEW CODE
    }

    return Identical(o1,o2);
  ];


Last updated 17 April 2013. This web site has not been fully supported since April 2008. Information may be out of date. This page was originally managed by Roger Firth.