Changeset 100d46 in git


Ignore:
Timestamp:
Nov 27, 2019, 4:06:25 PM (4 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
7e7b871c73fe6f32a07cefc5f672966d8c3e041f
Parents:
4194e68d828022d1b19f9cdeda232a1f5d5b2f77
Message:
fix: check currRing for ssi-read
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/links/ssiLink.cc

    r4194e6 r100d46  
    107107    currRing->ref++;
    108108    return TRUE;
     109  }
     110}
     111void ssiCheckCurrRing(const ring r)
     112{
     113  if (r!=currRing)
     114  {
     115    char name[20];
     116    int nr=0;
     117    idhdl h=NULL;
     118    loop
     119    {
     120      sprintf(name,"ssiRing%d",nr); nr++;
     121      h=IDROOT->get(name, 0);
     122      if (h==NULL)
     123      {
     124        h=enterid(name,0,RING_CMD,&IDROOT,FALSE);
     125        IDRING(h)=r;
     126        r->ref=2; /*d->r and h */
     127        break;
     128      }
     129      else if ((IDTYP(h)==RING_CMD)
     130      && (rEqual(r,IDRING(h),1)))
     131      {
     132        break;
     133      }
     134    }
     135    rSetHdl(h);
    109136  }
    110137}
     
    13431370           break;
    13441371    case 3:res->rtyp=NUMBER_CMD;
     1372           if (d->r==NULL) goto no_ring;
     1373           ssiCheckCurrRing(d->r);
    13451374           res->data=(char *)ssiReadNumber(d);
    13461375           break;
     
    13651394    case 6:res->rtyp=POLY_CMD;
    13661395           if (d->r==NULL) goto no_ring;
     1396           ssiCheckCurrRing(d->r);
    13671397           res->data=(char*)ssiReadPoly(d);
    13681398           break;
    13691399    case 7:res->rtyp=IDEAL_CMD;
    13701400           if (d->r==NULL) goto no_ring;
     1401           ssiCheckCurrRing(d->r);
    13711402           res->data=(char*)ssiReadIdeal(d);
    13721403           break;
    13731404    case 8:res->rtyp=MATRIX_CMD;
    13741405           if (d->r==NULL) goto no_ring;
     1406           ssiCheckCurrRing(d->r);
    13751407           res->data=(char*)ssiReadMatrix(d);
    13761408           break;
    13771409    case 9:res->rtyp=VECTOR_CMD;
    13781410           if (d->r==NULL) goto no_ring;
     1411           ssiCheckCurrRing(d->r);
    13791412           res->data=(char*)ssiReadPoly(d);
    13801413           break;
     
    13831416           else        res->rtyp=MODUL_CMD;
    13841417           if (d->r==NULL) goto no_ring;
     1418           ssiCheckCurrRing(d->r);
    13851419           {
    13861420             int rk=s_readint(d->f_read);
Note: See TracChangeset for help on using the changeset viewer.