*BSD News Article 7238


Return to BSD News archive

Xref: sserve comp.unix.bsd:7287 gnu.misc.discuss:6712
Newsgroups: comp.unix.bsd,gnu.misc.discuss
Path: sserve!manuel.anu.edu.au!munnari.oz.au!sgiblab!zaphod.mps.ohio-state.edu!wupost!uunet!jclark!jjc
From: jjc@jclark.com (James Clark)
Subject: Re: troff's size!
In-Reply-To: alexk@otc.otca.oz.au's message of 29 Oct 92 22:40:32 GMT
Message-ID: <JJC.92Oct30133157@jclark.jclark.com>
Sender: jjc@jclark.com (James Clark)
Organization: None, London, England
References: <6633@otc.otca.oz>
Date: Fri, 30 Oct 1992 13:31:57 GMT
Lines: 43

In article <6633@otc.otca.oz> alexk@otc.otca.oz.au (Alex Kowalenko) writes:

   I notcied when I recompiling csh that troff expanded out to 5MB! when processing the manual
   page!  Is this right?  It certianly put a load on my 8MB 386BSD machine.

If you have a problem with groff, please submit a proper bug report.
See the file BUG-REPORT in the groff distribution.

I would guess that the problem is that your copy of groff was compiled
with g++ 1.39.  This version of g++ has a bug that causes a serious
leak in GNU troff.  The following patch for g++ fixes this:

*** cplus-decl.c.~1~    Mon Aug  6 05:28:59 1990
--- cplus-decl.c        Wed Jun  5 08:55:04 1991
***************
*** 7951,7961 ****
  
        /* At the end, call delete if that's what's requested.  */
        if (TREE_GETS_DELETE (current_class_type))
        exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
                                      get_identifier (OPERATOR_DELETE_FORMAT),
!                                     build_tree_list (NULL_TREE, integer_zero_node),
                                      NULL_TREE, LOOKUP_NORMAL);
        else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
        exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
        else
        exprstmt = 0;
--- 7951,7961 ----
  
        /* At the end, call delete if that's what's requested.  */
        if (TREE_GETS_DELETE (current_class_type))
        exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
                                      get_identifier (OPERATOR_DELETE_FORMAT),
!                                     build_tree_list (NULL_TREE, current_class_decl),
                                      NULL_TREE, LOOKUP_NORMAL);
        else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
        exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
        else
        exprstmt = 0;


James Clark
jjc@jclark.com