Changeset 6f3743 in git for Singular/ipshell.cc


Ignore:
Timestamp:
Jan 7, 2002, 6:19:01 PM (22 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
692689de70864c2fce92fb4c9b577701c0b415d4
Parents:
a78f216ad977180b2aa143c9f91e2f120df62774
Message:
*hannes: killlocals_rec


git-svn-id: file:///usr/local/Singular/svn/trunk@5703 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipshell.cc

    ra78f216 r6f3743  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipshell.cc,v 1.69 2001-10-23 14:04:23 Singular Exp $ */
     4/* $Id: ipshell.cc,v 1.70 2002-01-07 17:19:01 Singular Exp $ */
    55/*
    66* ABSTRACT:
     
    341341#endif
    342342#ifdef HAVE_NS
    343 void killlocals_rec(idhdl *root,BOOLEAN &changed,int v)
     343void killlocals_rec(idhdl *root,int v)
    344344{
    345345  idhdl h=*root;
     
    350350//      Print("kill %s, lev %d for lev %d\n",IDID(h),IDLEV(h),v);
    351351      idhdl n=IDNEXT(h);
    352       if (((IDTYP(h)==RING_CMD)||(IDTYP(h)==QRING_CMD))
    353       && (IDRING(h)==currRing))
    354         changed=TRUE;
    355352      killhdl2(h,root);
    356353      h=n;
     
    360357 //     Print("into pack %s, lev %d for lev %d\n",IDID(h),IDLEV(h),v);
    361358      if (IDPACKAGE(h)!=basePack)
    362         killlocals_rec(&(IDRING(h)->idroot),changed,v);
     359        killlocals_rec(&(IDRING(h)->idroot),v);
    363360      h=IDNEXT(h);
    364361    }
     
    371368        if (currRing!=IDRING(h))
    372369        {
    373           changed=TRUE;
    374370          ring sr=currRing;
    375371          rChangeCurrRing(IDRING(h));
    376           killlocals_rec(&(IDRING(h)->idroot),changed,v);
     372          killlocals_rec(&(IDRING(h)->idroot),v);
    377373          rChangeCurrRing(sr);
    378374        }
    379375        else
    380376        {
    381           killlocals_rec(&(IDRING(h)->idroot),changed,v);
     377          killlocals_rec(&(IDRING(h)->idroot),v);
    382378        }
    383379      }
     
    395391  BOOLEAN changed=FALSE;
    396392  idhdl sh=currRingHdl;
    397   if (sh!=NULL) changed=(IDLEV(sh)>=v);
     393  if (sh!=NULL) changed=((IDLEV(sh)<v) || (IDRING(sh)->ref>0));
     394  //if (changed) Print("currRing=%s(%x), lev=%d,ref=%d\n",IDID(sh),IDRING(sh),IDLEV(sh),IDRING(sh)->ref);
    398395  ring sr=currRing;
    399396
    400   killlocals_rec(&(basePack->idroot),changed,v);
     397  killlocals_rec(&(basePack->idroot),v);
    401398
    402399  if ((iiRETURNEXPR_len > myynest)
     
    415412    {
    416413      sh=rFindHdl(sr,NULL,NULL);
    417       rSetHdl(sh);
     414      //if (sh==NULL) { Print("could not find ring %x\n",sr); listall(); }
     415      if (sh!=NULL) rSetHdl(sh);
    418416    }
    419417  }
     
    10801078    IDLEV(h)=toLev;
    10811079    iiNoKeepRing=FALSE;
     1080    //Print("export %s\n",IDID(h));
    10821081  }
    10831082  return FALSE;
     
    11671166  {
    11681167    //Print("// ==> Ringdependent set nesting to 0\n");
    1169     if(iiInternalExport(v, toLev)) return TRUE;
     1168    return (iiInternalExport(v, toLev));
    11701169  }
    11711170  else
     
    11781177    {
    11791178      idhdl hh=IDROOT;
    1180       while ((hh->next!=h)&&(hh->next!=NULL))
     1179      while ((hh!=NULL) && (hh->next!=h))
    11811180        hh=hh->next;
    1182       if (hh->next==h)
     1181      if ((hh!=NULL) && (hh->next==h))
    11831182        hh->next=h->next;
    11841183      else
Note: See TracChangeset for help on using the changeset viewer.