(ItemView) Fix Klocwork reported issue 04/32604/1 accepted/tizen/mobile/20141222.135816 accepted/tizen/tv/20141222.125620 accepted/tizen/wearable/20141222.134841 submit/tizen_mobile/20141222.110445 submit/tizen_tv/20141222.110455 submit/tizen_wearable/20141222.110450
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Fri, 19 Dec 2014 11:56:52 +0000 (11:56 +0000)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Fri, 19 Dec 2014 11:56:56 +0000 (11:56 +0000)
[Problem]  Reverse_iter is dereferenced before we check if it's valid.
[Solution] Check if it's valid before we use it.

Change-Id: I96bdd0c30d35faf8c9a31507925218ed4b372a23

base/dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp

index 345a247..708d98f 100644 (file)
@@ -724,16 +724,20 @@ void ItemView::InsertItem( Item newItem, float durationSeconds )
       displacedActor = temp;
 
       iter->second.RemoveConstraints();
-      mActiveLayout->ApplyConstraints(iter->second, iter->first, durationSeconds, mScrollPositionObject, Self() );
+      mActiveLayout->ApplyConstraints( iter->second, iter->first, durationSeconds, mScrollPositionObject, Self() );
     }
 
     // Create last item
-    ItemId lastId = mItemPool.rbegin()->first;
-    Item lastItem( lastId + 1, displacedActor );
-    mItemPool.insert( lastItem );
+    ItemPool::reverse_iterator lastIter = mItemPool.rbegin();
+    if ( lastIter != mItemPool.rend() )
+    {
+      ItemId lastId = lastIter->first;
+      Item lastItem( lastId + 1, displacedActor );
+      mItemPool.insert( lastItem );
 
-    lastItem.second.RemoveConstraints();
-    mActiveLayout->ApplyConstraints(lastItem.second, lastItem.first, durationSeconds, mScrollPositionObject, Self() );
+      lastItem.second.RemoveConstraints();
+      mActiveLayout->ApplyConstraints( lastItem.second, lastItem.first, durationSeconds, mScrollPositionObject, Self() );
+    }
   }
 
   CalculateDomainSize(Self().GetCurrentSize());