[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdevelop/lib/sourceinfo [POSSIBLY UNSAFE]
From: Harald Fernengel <harald () trolltech ! com>
Date: 2003-01-07 1:55:08
[Download RAW message or body]
CVS commit by harald:
invented a guardeditem class so the ClassListView won't crash on dangling pointers.
Also fixed duplicated entries for global variables after saving a file.
A guardeditem.h 1.1 [POSSIBLY UNSAFE: gets]
M +6 -2 classstore.cpp 1.21
M +29 -0 parsedcontainer.cpp 1.15
M +1 -1 parseditem.cpp 1.9
M +3 -1 parseditem.h 1.15
--- kdevelop/lib/sourceinfo/classstore.cpp #1.20:1.21
@@ -483,7 +483,11 @@ void ClassStore::removeWithReferences(co
void ClassStore::removeWithReferences(const QString &fileName)
{
- QMap<QString, ParsedScopeContainer*>::Iterator it;
- for (it = m_allScopes.begin(); it != m_allScopes.end(); ++it)
+ for (QMap<QString, ParsedScopeContainer*>::Iterator it = m_allScopes.begin(); it \
!= m_allScopes.end(); ++it) removeWithReferences(fileName, *it);
+// for (QMap<QString, ParsedClass*>::Iterator it = m_allClasses.begin(); it != \
m_allClasses.end(); ++it) +// (*it)->removeWithReferences(fileName);
+// for (QMap<QString, ParsedStruct*>::Iterator it = m_allStructs.begin(); it != \
m_allStructs.end(); ++it) +// (*it)->removeWithReferences(fileName);
+ m_globalScope->removeWithReferences(fileName);
}
--- kdevelop/lib/sourceinfo/parsedcontainer.cpp #1.14:1.15
@@ -109,4 +109,6 @@ void ParsedContainer::addAttribute( Pars
anAttribute->setDeclaredInScope( path() );
+ //qDebug( "ParsedContainer::addAttribute: " + anAttribute->asString() );
+
attributes.insert( anAttribute->name(), anAttribute );
}
@@ -363,4 +365,31 @@ void ParsedContainer::removeWithReferenc
{
REQUIRE( "Valid filename length", aFile.length() > 0 );
+
+ ParsedMethod *method = methodIterator.toFirst();
+ while ( method ) {
+ if ( method->declaredInFile() == aFile )
+ removeMethod( method );
+ else
+ ++methodIterator;
+ method = methodIterator.current();
+ }
+
+ ParsedAttribute *attr = attributeIterator.toFirst();
+ while (attr) {
+ if ( attr->declaredInFile() == aFile )
+ removeAttribute( attributeIterator.currentKey() );
+ else
+ ++attributeIterator;
+ attr = attributeIterator.current();
+ }
+
+ ParsedStruct *str = structIterator.toFirst();
+ while ( str ) {
+ if ( str->declaredInFile() == aFile )
+ removeStruct( structIterator.currentKey() );
+ else
+ ++structIterator;
+ str = structIterator.current();
+ }
}
--- kdevelop/lib/sourceinfo/parseditem.cpp #1.8:1.9
@@ -29,5 +29,5 @@
* Constructor.
*-----------------------------------------------------------------*/
-ParsedItem::ParsedItem()
+ParsedItem::ParsedItem(): GuardedItem()
{
_itemType = PIT_UNKNOWN;
--- kdevelop/lib/sourceinfo/parseditem.h #1.14:1.15
@@ -23,4 +23,6 @@
#include <qtextstream.h>
+#include "guardeditem.h"
+
/** The type of a ParsedItem. */
enum PIType {
@@ -45,5 +47,5 @@ enum PIAccess {
* @author Jonas Nordin
*/
-class ParsedItem
+class ParsedItem: public GuardedItem
{
public:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic