Changeset ca4062a in tol


Ignore:
Timestamp:
Nov 14, 2011, 4:52:15 PM (15 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
099d559
Parents:
e318a3f
Message:

Fixes #1337
SerTms methods must ensure that dating is not null before to use it to avoid invalid access.
When dating is null SerTms behaviour will be the same that empty TimeSet W

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3836 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/btol/timeset_type/tmsgrav.cpp

    re318a3f rca4062a  
    24572457{
    24582458  BUserTimeSerie* ser = Tsr(Arg(1));
    2459   return(ser->Dating() &&
     2459  return(ser && ser->Dating() &&
    24602460           ser->Dating()->Contain(dte) &&
    24612461               (
    … …  
    24842484{
    24852485  BUserTimeSerie* ser = Tsr(Arg(1));
     2486  if(!ser) { return; }
     2487  BUserTimeSet* tms = ser->Dating();
     2488  if(!tms) { return; }
    24862489  BHash aux;
    2487   ser->Dating()->GetHashBetween(aux,  first, last);
     2490  tms->GetHashBetween(aux,  first, last);
    24882491  BTmsTemporary::GetHashBetween(hash, first, last);
    24892492}
    … …  
    24942497//--------------------------------------------------------------------
    24952498{
     2499  BUserTimeSerie* ser = Tsr(Arg(1));
     2500  if(!ser) { return(BDate::End()); }
     2501  BUserTimeSet* tms = ser->Dating();
     2502  if(!tms) { return(BDate::End()); }
    24962503  BDate dte = EnsureNotAbortedSuccessor(dte_);
    24972504  EnsureLimitsSuccessor(dte);
    … …  
    25022509  if(!curLimit.HasValue()) { curLimit = BDate::DefaultLast(); }
    25032510//Std(Out()+"\nBTmsOfSerie::Successor of "+ser->Identify()+" "+dte);
    2504   BUserTimeSerie* ser = Tsr(Arg(1));
    25052511  for(n=iter=0; iter<N; iter++)
    25062512  {
    … …  
    25212527      }
    25222528    }
    2523         dte += ser->Dating();
     2529        dte += tms;
    25242530    if(Contain(dte)) { return(dte); }
    25252531    if(dte>ser->LastDate()) { return(BDate::End()); }
    … …  
    25332539//--------------------------------------------------------------------
    25342540{
     2541  BUserTimeSerie* ser = Tsr(Arg(1));
     2542  if(!ser) { return(BDate::Begin()); }
     2543  BUserTimeSet* tms = ser->Dating();
     2544  if(!tms) { return(BDate::Begin()); }
    25352545  BDate dte = EnsureNotAbortedPredecessor(dte_);
    25362546  EnsureLimitsPredecessor(dte);
    … …  
    25402550  BDate curLimit = CurrentCalcFirstDate();
    25412551  if(curLimit==BDate::Begin()) { curLimit = BDate::DefaultFirst(); }
    2542   BUserTimeSerie* ser = Tsr(Arg(1));
    25432552  for(n=iter=0; iter<N; iter++)
    25442553  {
    … …  
    25582567      }
    25592568    }
    2560         dte -= ser->Dating();
     2569        dte -= tms;
    25612570    if(Contain(dte)) { return(dte); }
    25622571    if(dte>ser->LastDate()) { return(BDate::End()); }
Note: See TracChangeset for help on using the changeset viewer.