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 2 May 2008. The librarian in charge of this page is Roger Firth. Please email any comments, suggestions or corrections to roger@firthworks.com.