Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5214 in orxonox.OLD


Ignore:
Timestamp:
Sep 21, 2005, 8:46:28 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: major fix in PNode/Element2D… the Children were removed twice when deleting an Instance

Location:
trunk/src/lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/coord/p_node.cc

    r5211 r5214  
    7878PNode::~PNode ()
    7979{
    80   tIterator<PNode>* iterator = this->children->getIterator();
    81   PNode* pn = iterator->firstElement();
    82   while( pn != NULL)
    83     {
    84       delete pn;
    85       pn = iterator->nextElement();
    86     }
    87   delete iterator;
    88   /* this deletes all children in the list */
    89   delete this->children;
    9080  if (this->parent)
    9181    this->parent->removeChild(this);
    92 
     82  else
     83  {
     84   tIterator<PNode>* iterator = this->children->getIterator();
     85   PNode* pn = iterator->firstElement();
     86   while( pn != NULL)
     87     {
     88       delete pn;
     89       pn = iterator->nextElement();
     90     }
     91   delete iterator;
     92   /* this deletes all children in the list */
     93  }
     94  delete this->children;
    9395  if (this->toCoordinate != NULL)
    9496    delete this->toCoordinate;
     
    422424void PNode::removeChild (PNode* child)
    423425{
    424   child->remove();
    425   this->children->remove(child);
    426   child->parent = NULL;
     426  if (child != NULL)
     427  {
     428   child->remove();
     429//   this->children->remove(child);
     430//   child->parent = NULL;
     431  }
    427432}
    428433
     
    434439void PNode::remove()
    435440{
    436   NullParent* nullParent = NullParent::getInstance();
    437 
    438441  tIterator<PNode>* iterator = this->children->getIterator();
    439442  PNode* pn = iterator->firstElement();
     
    441444  while( pn != NULL)
    442445    {
    443       nullParent->addChild(pn, pn->getParentMode());
     446      NullParent::getInstance()->addChild(pn, pn->getParentMode());
    444447      pn = iterator->nextElement();
    445448    }
    446449  delete iterator;
    447   this->parent->children->remove(this);
     450  if (this->parent != NULL)
     451    this->parent->children->remove(this);
    448452}
    449453
  • trunk/src/lib/graphics/render2D/element_2d.cc

    r5212 r5214  
    5454  Render2D::getInstance()->unregisterElement2D(this);
    5555
    56   tIterator<Element2D>* iterator = this->children->getIterator();
    57   Element2D* pn = iterator->firstElement();
    58   while( pn != NULL)
    59   {
    60     delete pn;
    61     pn = iterator->nextElement();
    62   }
    63   delete iterator;
    64   /* this deletes all children in the list */
    65   delete this->children;
    6656  if (this->parent)
    6757    this->parent->removeChild2D(this);
     58  else
     59  {
     60    tIterator<Element2D>* iterator = this->children->getIterator();
     61    Element2D* pn = iterator->firstElement();
     62    while( pn != NULL)
     63    {
     64      delete pn;
     65      pn = iterator->nextElement();
     66    }
     67    delete iterator;
     68    /* this deletes all children in the list */
     69  }
     70  delete this->children;
    6871
    6972  if (this->toCoordinate != NULL)
     
    470473  {
    471474    child->remove2D();
    472     this->children->remove(child);
    473     child->parent = NULL;
     475//    this->children->remove(child);
     476//    child->parent = NULL;
    474477  }
    475478}
     
    491494  }
    492495  delete iterator;
    493   this->parent->children->remove(this);
     496  if (this->parent != NULL)
     497    this->parent->children->remove(this);
    494498}
    495499
  • trunk/src/lib/shell/shell_buffer.cc

    r5212 r5214  
    165165    {
    166166//       newLineEnd = newLineBegin + strlen(newLineBegin);
    167       strcat(this->keepBufferArray, newLineBegin);
     167      strcpy(this->keepBufferArray, newLineBegin);
    168168      this->keepBuffer = true;
    169169      break;
Note: See TracChangeset for help on using the changeset viewer.