Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!sdcrdcf!sdcsmb!sea!eggert
From: eggert@sm.unisys.com (Paul Eggert)
Newsgroups: comp.text
Subject: Re: troff/nroff macros, index generates "Bad Storage Allocation"
Message-ID: 
Date: 7 Jul 88 19:51:11 GMT
References: <10944@grebyn.COM>
Organization: Unisys Santa Monica
Lines: 19

In article <10944@grebyn.COM> karl@grebyn.com (Karl A. Nyberg) gives sample
troff -me input that elicits the message "Bad storage error".  The problem
arises from the following definition in the input:

	.de ti
	.(x t
	\\$1
	.)x \n%
	..

This redefines the builtin troff ti (temporary indent) directive, which is used
by the )x macro.  An endless recursion between ti and )x would ensue, except
that -me here for other reasons removes the |X diversion, which (because of the
nested invocation) it is currently inside.  The "Bad storage error" in this
case means troff is trying to execute a diversion that has been removed.

Moral: don't redefine predeclared names.

If you want sorted indexes, your best bet is to use .tm to send the raw data to
a file, sort the file, and then run it off separately.