Changeset 16acb0 in git for Singular/ipshell.cc


Ignore:
Timestamp:
Jan 10, 2002, 1:33:24 PM (22 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
49f194f6dfaec759b9494ac8650cf8cb70820a82
Parents:
18ae159f1392067b5a2b51e34a5895b6044f3d59
Message:
* hannes: more ring-independence in changing rings, deleting data etc.
  (see lists::Clean(r), sleftv::CleanUp(r), syKillComputation(r), nap_Delete)


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

Legend:

Unmodified
Added
Removed
  • Singular/ipshell.cc

    r18ae159 r16acb0  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipshell.cc,v 1.70 2002-01-07 17:19:01 Singular Exp $ */
     4/* $Id: ipshell.cc,v 1.71 2002-01-10 12:33:20 Singular Exp $ */
    55/*
    66* ABSTRACT:
     
    244244      {
    245245        idhdl nexth = IDNEXT(h);
    246         killhdl2(h,localhdl);
     246        killhdl2(h,localhdl,currRing);
    247247        h = nexth;
    248248        //PrintS("kill\n");
     
    341341#endif
    342342#ifdef HAVE_NS
    343 void killlocals_rec(idhdl *root,int v)
     343void killlocals_rec(idhdl *root,int v, ring r)
    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       killhdl2(h,root);
     352      killhdl2(h,root,r);
    353353      h=n;
    354354    }
     
    357357 //     Print("into pack %s, lev %d for lev %d\n",IDID(h),IDLEV(h),v);
    358358      if (IDPACKAGE(h)!=basePack)
    359         killlocals_rec(&(IDRING(h)->idroot),v);
     359        killlocals_rec(&(IDRING(h)->idroot),v,r);
    360360      h=IDNEXT(h);
    361361    }
     
    366366      {
    367367  //    Print("into ring %s, lev %d for lev %d\n",IDID(h),IDLEV(h),v);
    368         if (currRing!=IDRING(h))
    369         {
    370           ring sr=currRing;
    371           rChangeCurrRing(IDRING(h));
    372           killlocals_rec(&(IDRING(h)->idroot),v);
    373           rChangeCurrRing(sr);
    374         }
    375         else
    376         {
    377           killlocals_rec(&(IDRING(h)->idroot),v);
    378         }
     368        killlocals_rec(&(IDRING(h)->idroot),v,IDRING(h));
    379369      }
    380370      h=IDNEXT(h);
     
    393383  if (sh!=NULL) changed=((IDLEV(sh)<v) || (IDRING(sh)->ref>0));
    394384  //if (changed) Print("currRing=%s(%x), lev=%d,ref=%d\n",IDID(sh),IDRING(sh),IDLEV(sh),IDRING(sh)->ref);
    395   ring sr=currRing;
    396 
    397   killlocals_rec(&(basePack->idroot),v);
     385
     386  killlocals_rec(&(basePack->idroot),v,currRing);
    398387
    399388  if ((iiRETURNEXPR_len > myynest)
     
    407396  if (changed)
    408397  {
    409     currRing=NULL;
    410     currRingHdl=NULL;
    411     if (sr!=NULL)
    412     {
    413       sh=rFindHdl(sr,NULL,NULL);
    414       //if (sh==NULL) { Print("could not find ring %x\n",sr); listall(); }
    415       if (sh!=NULL) rSetHdl(sh);
    416     }
     398    currRingHdl=rFindHdl(currRing,NULL,NULL);
    417399  }
    418400
     
    10681050            }
    10691051#endif
    1070         killhdl2(h,root);
     1052        killhdl2(h,root,currRing);
    10711053      }
    10721054      else
     
    12501232            Warn("redefining %s",IDID(old));
    12511233          }
    1252           killhdl2(old,&root);
     1234          killhdl2(old,&root,currRing);
    12531235        }
    12541236        else
     
    12951277            Warn("redefining %s",IDID(old));
    12961278          }
    1297           killhdl2(old,&root);
     1279          killhdl2(old,&root,currRing);
    12981280        }
    12991281        else
Note: See TracChangeset for help on using the changeset viewer.