Changeset 84d88f7 in git


Ignore:
Timestamp:
Aug 8, 2014, 4:02:30 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '60097d763e0b541617a3b864b5310c523edaf81d')
Children:
e376613faa859450922b453bac09eb481771cb2d
Parents:
30994898b960fef81ba9392060ceb124019cd069
Message:
memory leak in Eval (from master)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/subexpr.cc

    r309948 r84d88f7  
    17401740        {
    17411741          nok=iiMake_proc(h,req_packhdl,&d->arg2);
     1742          this->CleanUp(currRing);
    17421743          if (!nok)
     1744          {
    17431745            memcpy(this,&iiRETURNEXPR,sizeof(sleftv));
     1746            memset(&iiRETURNEXPR,0,sizeof(sleftv));
     1747          }
    17441748        }
    17451749      }
     
    17951799    else
    17961800    {
     1801      sleftv tmp;
    17971802      int toktype=iiTokType(d->op);
    17981803      if ((toktype==CMD_M)
     
    18181823          }
    18191824          if (d->argc==0)
    1820             nok=nok||iiExprArithM(this,NULL,d->op);
     1825            nok=nok||iiExprArithM(&tmp,NULL,d->op);
    18211826          else
    1822             nok=nok||iiExprArithM(this,&d->arg1,d->op);
     1827            nok=nok||iiExprArithM(&tmp,&d->arg1,d->op);
    18231828        }
    18241829        else
    18251830        {
    18261831          nok=d->arg1.Eval();
    1827           nok=nok||iiExprArithM(this,&d->arg1,d->op);
     1832          nok=nok||iiExprArithM(&tmp,&d->arg1,d->op);
    18281833        }
    18291834      }
     
    18311836      {
    18321837        nok=d->arg1.Eval();
    1833         nok=nok||iiExprArith1(this,&d->arg1,d->op);
     1838        nok=nok||iiExprArith1(&tmp,&d->arg1,d->op);
    18341839      }
    18351840      else if(d->argc==2)
     
    18371842        nok=d->arg1.Eval();
    18381843        nok=nok||d->arg2.Eval();
    1839         nok=nok||iiExprArith2(this,&d->arg1,d->op,&d->arg2);
     1844        nok=nok||iiExprArith2(&tmp,&d->arg1,d->op,&d->arg2);
    18401845      }
    18411846      else if(d->argc==3)
     
    18441849        nok=nok||d->arg2.Eval();
    18451850        nok=nok||d->arg3.Eval();
    1846         nok=nok||iiExprArith3(this,d->op,&d->arg1,&d->arg2,&d->arg3);
     1851        nok=nok||iiExprArith3(&tmp,d->op,&d->arg1,&d->arg2,&d->arg3);
    18471852      }
    18481853      else if(d->argc!=0)
    18491854      {
    18501855        nok=d->arg1.Eval();
    1851         nok=nok||iiExprArithM(this,&d->arg1,d->op);
     1856        nok=nok||iiExprArithM(&tmp,&d->arg1,d->op);
    18521857      }
    18531858      else // d->argc == 0
    18541859      {
    1855         nok = iiExprArithM(this, NULL, d->op);
    1856       }
     1860        nok = iiExprArithM(&tmp, NULL, d->op);
     1861      }
     1862      this->CleanUp();
     1863      memcpy(this,&tmp,sizeof(tmp));
    18571864    }
    18581865  }
Note: See TracChangeset for help on using the changeset viewer.