[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [marble] /: turn SimpleArrayData into pointer to avoid memory
From:       Niko Sams <niko.sams () gmail ! com>
Date:       2011-12-31 15:16:59
Message-ID: 20111231151659.5688B580C3 () git ! kde ! org
[Download RAW message or body]

Git commit a9cfdf1d2ef329d7d870a60a0b7ce4da1d5f02bf by Niko Sams.
Committed on 08/12/2011 at 19:38.
Pushed by nsams into branch 'master'.

turn SimpleArrayData into pointer to avoid memory management issues

M  +3    -2    src/lib/geodata/data/GeoDataExtendedData.cpp
M  +2    -2    src/lib/geodata/data/GeoDataExtendedData.h
M  +1    -1    src/lib/geodata/data/GeoDataExtendedData_p.h
M  +2    -2    src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp
M  +12   -12   tests/TestGeoDataTrack.cpp

http://commits.kde.org/marble/a9cfdf1d2ef329d7d870a60a0b7ce4da1d5f02bf

diff --git a/src/lib/geodata/data/GeoDataExtendedData.cpp \
b/src/lib/geodata/data/GeoDataExtendedData.cpp index 17a1fe2..4437216 100644
--- a/src/lib/geodata/data/GeoDataExtendedData.cpp
+++ b/src/lib/geodata/data/GeoDataExtendedData.cpp
@@ -85,13 +85,14 @@ bool GeoDataExtendedData::contains( const QString &key ) const
     return d->hash.contains( key );
 }
 
-void GeoDataExtendedData::setSimpleArrayData( const QString& key, const \
GeoDataSimpleArrayData& values ) +void GeoDataExtendedData::setSimpleArrayData( const \
QString& key, GeoDataSimpleArrayData *values )  {
     d->arrayHash[ key ] = values;
 }
 
-GeoDataSimpleArrayData& GeoDataExtendedData::simpleArrayData( const QString& key )
+GeoDataSimpleArrayData* GeoDataExtendedData::simpleArrayData( const QString& key ) \
const  {
+    if ( !d->arrayHash.contains( key ) ) return 0;
     return d->arrayHash[ key ];
 }
 
diff --git a/src/lib/geodata/data/GeoDataExtendedData.h \
b/src/lib/geodata/data/GeoDataExtendedData.h index b534544..d318fa6 100644
--- a/src/lib/geodata/data/GeoDataExtendedData.h
+++ b/src/lib/geodata/data/GeoDataExtendedData.h
@@ -92,12 +92,12 @@ class GEODATA_EXPORT GeoDataExtendedData : public GeoDataObject
     /**
      * @brief set SimpleArrayData for given @p key
      */
-    void setSimpleArrayData( const QString& key, const GeoDataSimpleArrayData& \
values ); +    void setSimpleArrayData( const QString& key, GeoDataSimpleArrayData* \
values );  
     /**
      * @brief return SimpleArrayData for given @p key as a modifiable reference
      */
-    GeoDataSimpleArrayData& simpleArrayData( const QString& key );
+    GeoDataSimpleArrayData* simpleArrayData( const QString& key ) const;
 
 
     /**
diff --git a/src/lib/geodata/data/GeoDataExtendedData_p.h \
b/src/lib/geodata/data/GeoDataExtendedData_p.h index d52fe7e..9646e10 100644
--- a/src/lib/geodata/data/GeoDataExtendedData_p.h
+++ b/src/lib/geodata/data/GeoDataExtendedData_p.h
@@ -32,7 +32,7 @@ class GeoDataExtendedDataPrivate
     }
 
     QHash< QString, GeoDataData > hash;
-    QHash< QString, GeoDataSimpleArrayData > arrayHash;
+    QHash< QString, GeoDataSimpleArrayData* > arrayHash;
 
 };
 
diff --git a/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp \
b/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp index \
                4fd8224..bb71d3c 100644
--- a/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp
+++ b/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp
@@ -43,14 +43,14 @@ GeoNode* KmlSimpleArrayDataTagHandler::parse( GeoParser& parser ) \
const  GeoStackItem parentItem = parser.parentElement();
 
     if ( parentItem.is<GeoDataExtendedData>() ) {
-        GeoDataSimpleArrayData arrayData;
+        GeoDataSimpleArrayData *arrayData = new GeoDataSimpleArrayData();
         QString name = parser.attribute( "name" ).trimmed();
         parentItem.nodeAs<GeoDataExtendedData>()->setSimpleArrayData( name, \
arrayData );  #ifdef DEBUG_TAGS
         mDebug() << "Parsed <" << kmlTag_SimpleArrayData << ">"
                  << " parent item name: " << parentItem.qualifiedName().first;
 #endif // DEBUG_TAGS
-        return &parentItem.nodeAs<GeoDataExtendedData>()->simpleArrayData( name );
+        return arrayData;
     }
 
     return 0;
diff --git a/tests/TestGeoDataTrack.cpp b/tests/TestGeoDataTrack.cpp
index a00b3bb..c6bf16f 100644
--- a/tests/TestGeoDataTrack.cpp
+++ b/tests/TestGeoDataTrack.cpp
@@ -258,22 +258,22 @@ void TestGeoDataTrack::extendedDataParseTest()
     QCOMPARE( track->size(), 7 );
 
     {
-        GeoDataSimpleArrayData cadence = track->extendedData().simpleArrayData( \
                "cadence" );
-        QCOMPARE( cadence.size(), 7 );
-        QCOMPARE( cadence.valueAt( 0 ), QVariant( "86" ) );
-        QCOMPARE( cadence.valueAt( 6 ), QVariant( "113" ) );
+        GeoDataSimpleArrayData *cadence = track->extendedData().simpleArrayData( \
"cadence" ); +        QCOMPARE( cadence->size(), 7 );
+        QCOMPARE( cadence->valueAt( 0 ), QVariant( "86" ) );
+        QCOMPARE( cadence->valueAt( 6 ), QVariant( "113" ) );
     }
     {
-        GeoDataSimpleArrayData hr = track->extendedData().simpleArrayData( \
                "heartrate" );
-        QCOMPARE( hr.size(), 7 );
-        QCOMPARE( hr.valueAt( 0 ), QVariant( "181" ) );
-        QCOMPARE( hr.valueAt( 6 ), QVariant( "173" ) );
+        GeoDataSimpleArrayData *hr = track->extendedData().simpleArrayData( \
"heartrate" ); +        QCOMPARE( hr->size(), 7 );
+        QCOMPARE( hr->valueAt( 0 ), QVariant( "181" ) );
+        QCOMPARE( hr->valueAt( 6 ), QVariant( "173" ) );
     }
     {
-        GeoDataSimpleArrayData power = track->extendedData().simpleArrayData( \
                "power" );
-        QCOMPARE( power.size(), 7 );
-        QCOMPARE( power.valueAt( 0 ), QVariant( "327.0" ) );
-        QCOMPARE( power.valueAt( 6 ), QVariant( "183.0" ) );
+        GeoDataSimpleArrayData *power = track->extendedData().simpleArrayData( \
"power" ); +        QCOMPARE( power->size(), 7 );
+        QCOMPARE( power->valueAt( 0 ), QVariant( "327.0" ) );
+        QCOMPARE( power->valueAt( 6 ), QVariant( "183.0" ) );
     }
 
     delete dataDocument;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic