[haiku-commits] haiku: hrev47522 - src/kits/tracker

  • From: jscipione@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 19 Jul 2014 00:09:31 +0200 (CEST)

hrev47522 adds 13 changesets to branch 'master'
old head: 4deecac06145277bb0e0f650be7725880c780f44
new head: b8bcb08800361b34369c555a186ad22d0f408dc4
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=b8bcb08+%5E4deecac

----------------------------------------------------------------------------

565cd80: Tracker: whitespace fix, spaces to tab

0db0308: Tracker: style fixes to PoseView.cpp
  
  Compare with NULL explictly

20e3467: Tracker: fix dereference after NULL checks
  
  CID600503, CID600504, CID600505

dc3cfca: Tracker: fix unused pointers
  
  CID610474, CID610475

62de0e0: Tracker: fix unchecked return values
  
  Check that LockLooper() succeeds
  
  CID611190, CID611194, CID602477

d308d1f: Tracker: fix unchecked dynamic_casts
  
  CID603130, CID603131, CID603132

ba24adb: Tracker: fix 2 unbounded copies
  
  CID609045

1933335: Tracker: fix 2 uninitialized scalers
  
  CID610119

5969c5d: Tracker: Fix use after free
  
  CID510586

a892df2: Tracker: Fix several unchecked return values
  
  CID611191, CID611192, CID611193

190fda6: Tracker: Check that LockLooper() succeeds
  
  CID602486

1e22816: Tracker: Initialize view and low colors
  
  CID610137 and CID610138

b8bcb08: Tracker: Fix integer overflow
  
  CID1108329

                                     [ John Scipione <jscipione@xxxxxxxxx> ]

----------------------------------------------------------------------------

3 files changed, 83 insertions(+), 63 deletions(-)
src/kits/tracker/PoseView.cpp                | 129 +++++++++++++----------
src/kits/tracker/Utilities.cpp               |  11 +-
src/kits/tracker/VirtualDirectoryManager.cpp |   6 +-

############################################################################

Commit:      565cd805b445db9d6a926ddd33249d4ac8afc736
URL:         http://cgit.haiku-os.org/haiku/commit/?id=565cd80
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:53:38 2014 UTC

Tracker: whitespace fix, spaces to tab

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/Utilities.cpp b/src/kits/tracker/Utilities.cpp
index eb11210..27a4377 100644
--- a/src/kits/tracker/Utilities.cpp
+++ b/src/kits/tracker/Utilities.cpp
@@ -704,7 +704,7 @@ FlickerFreeStringView::Draw(BRect)
        offscreen->SetLowColor(fLowColor);
 
        BFont font;
-    GetFont(&font);
+       GetFont(&font);
        offscreen->SetFont(&font);
 
        offscreen->Sync();

############################################################################

Commit:      0db0308b08efa3b95e1ee849c7759541c26f9c28
URL:         http://cgit.haiku-os.org/haiku/commit/?id=0db0308
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:30:12 2014 UTC

Tracker: style fixes to PoseView.cpp

Compare with NULL explictly

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 7d74ef2..ed14a54 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -1321,17 +1321,17 @@ BPoseView::AddPosesTask(void* castToParams)
        thread_id threadID = find_thread(NULL);
 
        BPoseView* view = dynamic_cast<BPoseView*>(lock.Handler());
-       ASSERT(view);
+       ASSERT(view != NULL);
 
        //BWindow* window = dynamic_cast<BWindow*>(lock.Looper());
-       ASSERT(dynamic_cast<BWindow*>(lock.Looper()));
+       ASSERT(dynamic_cast<BWindow*>(lock.Looper()) != NULL);
 
        // allocate the iterator we will use for adding poses; this
        // can be a directory or any other collection of entry_refs, such
        // as results of a query; subclasses override this to provide
        // other than standard directory iterations
        EntryListBase* container = view->InitDirentIterator(&ref);
-       if (!container) {
+       if (container == NULL) {
                view->HideBarberPole();
                return B_ERROR;
        }
@@ -9596,7 +9596,7 @@ BPoseView::UpdateDropTarget(BPoint mouseLoc, const 
BMessage* dragMessage,
                targetModel = targetPose->TargetModel();
 
        Model tmpTarget;
-       if (targetModel && targetModel->IsSymLink()
+       if (targetModel != NULL && targetModel->IsSymLink()
                && tmpTarget.SetTo(targetPose->TargetModel()->EntryRef(), true, 
true)
                        == B_OK) {
                targetModel = &tmpTarget;

############################################################################

Commit:      20e3467eae2e5b867500645738d389b7bd8dc0e4
URL:         http://cgit.haiku-os.org/haiku/commit/?id=20e3467
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:11:57 2014 UTC

Tracker: fix dereference after NULL checks

CID600503, CID600504, CID600505

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index ed14a54..8bd49aa 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -4416,7 +4416,7 @@ BPoseView::HandleDropCommon(BMessage* message, Model* 
targetModel,
        if (srcWindow == NULL) {
                // drag was from another app
 
-               if (targetModel == NULL)
+               if (targetModel == NULL && poseView != NULL)
                        targetModel = poseView->TargetModel();
 
                // figure out if we dropped a file onto a directory and set
@@ -4425,7 +4425,7 @@ BPoseView::HandleDropCommon(BMessage* message, Model* 
targetModel,
                if (targetModel != NULL && targetModel->IsDirectory())
                        targetDirectory.SetTo(targetModel->EntryRef());
 
-               if (targetModel->IsRoot()) {
+               if (targetModel != NULL && targetModel->IsRoot()) {
                        // don't drop anything into the root disk
                        return false;
                }
@@ -9604,7 +9604,8 @@ BPoseView::UpdateDropTarget(BPoint mouseLoc, const 
BMessage* dragMessage,
 
        bool ignoreTypes = (modifiers() & B_CONTROL_KEY) != 0;
        if (targetPose != NULL) {
-               if (CanHandleDragSelection(targetModel, dragMessage, 
ignoreTypes)) {
+               if (targetModel != NULL
+                       && CanHandleDragSelection(targetModel, dragMessage, 
ignoreTypes)) {
                        // new target is valid, select it
                        HiliteDropTarget(true);
                } else {

############################################################################

Commit:      dc3cfca45bc8a4cb314ace17e6a143c07267e79d
URL:         http://cgit.haiku-os.org/haiku/commit/?id=dc3cfca
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 21:40:11 2014 UTC

Tracker: fix unused pointers

CID610474, CID610475

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 8bd49aa..1cf5ead 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -7600,14 +7600,13 @@ BPoseView::MakeDragBitmap(BRect dragRect, BPoint 
clickedPoint,
        BRect bounds(Bounds());
 
        PoseList* poseList = CurrentPoseList();
-       BPose* pose = poseList->ItemAt(clickedPoseIndex);
        if (ViewMode() == kListMode) {
                int32 count = poseList->CountItems();
                int32 startIndex = (int32)(bounds.top / fListElemHeight);
                BPoint loc(0, startIndex * fListElemHeight);
 
                for (int32 index = startIndex; index < count; index++) {
-                       pose = poseList->ItemAt(index);
+                       BPose* pose = poseList->ItemAt(index);
                        if (pose->IsSelected()) {
                                BRect poseRect(pose->CalcRect(loc, this, true));
                                if (poseRect.Intersects(inner)) {
@@ -7627,7 +7626,7 @@ BPoseView::MakeDragBitmap(BRect dragRect, BPoint 
clickedPoint,
                int32 count = fVSPoseList->CountItems();
 
                for (int32 index = startIndex; index < count; index++) {
-                       pose = fVSPoseList->ItemAt(index);
+                       BPose* pose = fVSPoseList->ItemAt(index);
                        if (pose != NULL && pose->IsSelected()) {
                                BRect poseRect(pose->CalcRect(this));
                                if (!poseRect.Intersects(inner))
@@ -9487,13 +9486,12 @@ BPoseView::ResizeColumn(BColumn* column, float newSize,
        column->SetWidth(newSize);
 
        float offset = kColumnStart;
-       BColumn* last = fColumnList->FirstItem();
 
        int32 count = fColumnList->CountItems();
        for (int32 index = 0; index < count; index++) {
                column = fColumnList->ItemAt(index);
                column->SetOffset(offset);
-               last = column;
+               BColumn* last = column;
                offset = last->Offset() + last->Width() + 
kTitleColumnExtraMargin;
        }
 
@@ -9547,13 +9545,12 @@ BPoseView::MoveColumnTo(BColumn* src, BColumn* dest)
        fColumnList->AddItem(src, index);
 
        float offset = kColumnStart;
-       BColumn* last = fColumnList->FirstItem();
        int32 count = fColumnList->CountItems();
 
        for (int32 index = 0; index < count; index++) {
                BColumn* column = fColumnList->ItemAt(index);
                column->SetOffset(offset);
-               last = column;
+               BColumn* last = column;
                offset = last->Offset() + last->Width() + 
kTitleColumnExtraMargin
                        - kRoomForLine / 2;
        }

############################################################################

Commit:      62de0e04be70156488d3ae1e17314845a73494cb
URL:         http://cgit.haiku-os.org/haiku/commit/?id=62de0e0
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 21:42:25 2014 UTC

Tracker: fix unchecked return values

Check that LockLooper() succeeds

CID611190, CID611194, CID602477

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 1cf5ead..3227281 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -2145,19 +2145,20 @@ BPoseView::MessageReceived(BMessage* message)
                {
                        AddPosesResult* currentPoses;
                        entry_ref ref;
-                       message->FindPointer("currentPoses",
-                               reinterpret_cast<void**>(&currentPoses));
-                       message->FindRef("ref", &ref);
-
-                       // check if CreatePoses should be called (abort if dir 
has been
-                       // switched under normal circumstances, ignore in 
several special
-                       // cases
-                       if (AddPosesThreadValid(&ref)) {
-                               CreatePoses(currentPoses->fModels, 
currentPoses->fPoseInfos,
-                                       currentPoses->fCount, NULL, true, 0, 0, 
true);
-                               currentPoses->ReleaseModels();
+                       if (message->FindPointer("currentPoses",
+                                       
reinterpret_cast<void**>(&currentPoses)) == B_OK
+                               && message->FindRef("ref", &ref) == B_OK) {
+                               // check if CreatePoses should be called
+                               // (abort if dir has been switched under normal
+                               // circumstances, ignore in several special 
cases)
+                               if (AddPosesThreadValid(&ref)) {
+                                       CreatePoses(currentPoses->fModels,
+                                               currentPoses->fPoseInfos,
+                                               currentPoses->fCount, NULL, 
true, 0, 0, true);
+                                       currentPoses->ReleaseModels();
+                               }
+                               delete currentPoses;
                        }
-                       delete currentPoses;
                        break;
                }
 
@@ -4047,7 +4048,8 @@ BPoseView::EachItemInDraggedSelection(const BMessage* 
message,
        void* passThru)
 {
        BContainerWindow* srcWindow;
-       message->FindPointer("src_window", (void**)&srcWindow);
+       if (message->FindPointer("src_window", (void**)&srcWindow) != B_OK)
+               return false;
 
        AutoLock<BWindow> lock(srcWindow);
        if (!lock)
@@ -10094,8 +10096,7 @@ BPoseView::StartWatchDateFormatChange()
                BMessenger tracker(kTrackerSignature);
                BHandler::StartWatching(tracker, kDateFormatChanged);
 #if !defined(HAIKU_TARGET_PLATFORM_HAIKU) && 
!defined(HAIKU_TARGET_PLATFORM_DANO)
-       } else {
-               be_app->LockLooper();
+       } else if (be_app->LockLooper()) {
                be_app->StartWatching(this, kDateFormatChanged);
                be_app->UnlockLooper();
        }
@@ -10111,8 +10112,7 @@ BPoseView::StopWatchDateFormatChange()
        if (IsFilePanel()) {
                BMessenger tracker(kTrackerSignature);
                BHandler::StopWatching(tracker, kDateFormatChanged);
-       } else {
-               be_app->LockLooper();
+       } else if (be_app->LockLooper()) {
                be_app->StopWatching(this, kDateFormatChanged);
                be_app->UnlockLooper();
        }

############################################################################

Commit:      d308d1fa8244387db2f38596cbcb5408b5fb9ac8
URL:         http://cgit.haiku-os.org/haiku/commit/?id=d308d1f
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:16:49 2014 UTC

Tracker: fix unchecked dynamic_casts

CID603130, CID603131, CID603132

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 3227281..1426257 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -5207,11 +5207,13 @@ public:
 
        virtual bool CanAccumulate(const AccumulatingFunctionObject* functor) 
const
        {
-               return dynamic_cast<const MetaMimeChangedAccumulator*>(functor)
-                       && dynamic_cast<const 
MetaMimeChangedAccumulator*>(functor)->
-                               fType == fType
-                       && dynamic_cast<const 
MetaMimeChangedAccumulator*>(functor)->
-                               fPreferredApp == fPreferredApp;
+               const MetaMimeChangedAccumulator* accumulator
+                       = dynamic_cast<const 
MetaMimeChangedAccumulator*>(functor);
+               if (accumulator == NULL)
+                       return false;
+
+               return accumulator && accumulator->fType == fType
+                       && accumulator->fPreferredApp == fPreferredApp;
        }
 
        virtual void Accumulate(AccumulatingFunctionObject* DEBUG_ONLY(functor))
@@ -8250,7 +8252,9 @@ BPoseView::UnmountSelectedVolumes()
                if (model->IsVolume()) {
                        BVolume volume(model->NodeRef()->device);
                        if (volume != boot) {
-                               
dynamic_cast<TTracker*>(be_app)->SaveAllPoseLocations();
+                               TTracker* tracker = 
dynamic_cast<TTracker*>(be_app);
+                               if (tracker != NULL)
+                                       tracker->SaveAllPoseLocations();
 
                                BMessage message(kUnmountVolume);
                                message.AddInt32("device_id", volume.Device());

############################################################################

Commit:      ba24adb2723ef9151a6786e9d56f34a2450edf30
URL:         http://cgit.haiku-os.org/haiku/commit/?id=ba24adb
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:19:39 2014 UTC

Tracker: fix 2 unbounded copies

CID609045

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 1426257..34dbbcb 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -6792,7 +6792,8 @@ BPoseView::FindNextMatch(int32* matchingIndex, bool 
reverse)
                        if (sMatchString.ICompare(pose->TargetModel()->Name()) 
> 0) {
                                if (strcasecmp(pose->TargetModel()->Name(), 
bestSoFar) >= 0
                                        || !bestSoFar[0]) {
-                                       strcpy(bestSoFar, 
pose->TargetModel()->Name());
+                                       strlcpy(bestSoFar, 
pose->TargetModel()->Name(),
+                                               sizeof(bestSoFar));
                                        poseToSelect = pose;
                                        *matchingIndex = index;
                                }
@@ -6800,7 +6801,8 @@ BPoseView::FindNextMatch(int32* matchingIndex, bool 
reverse)
                } else if (sMatchString.ICompare(pose->TargetModel()->Name()) < 
0) {
                        if (strcasecmp(pose->TargetModel()->Name(), bestSoFar) 
<= 0
                                || !bestSoFar[0]) {
-                               strcpy(bestSoFar, pose->TargetModel()->Name());
+                               strlcpy(bestSoFar, pose->TargetModel()->Name(),
+                                       sizeof(bestSoFar));
                                poseToSelect = pose;
                                *matchingIndex = index;
                        }

############################################################################

Commit:      1933335b06d9fb1644d0ecfc1e2f7b6753ac6814
URL:         http://cgit.haiku-os.org/haiku/commit/?id=1933335
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:20:30 2014 UTC

Tracker: fix 2 uninitialized scalers

CID610119

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 34dbbcb..40f26e1 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -231,6 +231,8 @@ BPoseView::BPoseView(Model* model, BRect bounds, uint32 
viewMode,
        fViewState(new BViewState),
        fStateNeedsSaving(false),
        fCountView(NULL),
+       fListElemHeight(0.0f),
+       fIconPoseHeight(0.0f),
        fDropTarget(NULL),
        fAlreadySelectedDropTarget(NULL),
        fSelectionHandler(be_app),

############################################################################

Commit:      5969c5d77930d3d4466df7691bed69f4ce12bfc0
URL:         http://cgit.haiku-os.org/haiku/commit/?id=5969c5d
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:22:31 2014 UTC

Tracker: Fix use after free

CID510586

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 40f26e1..2522393 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -8752,9 +8752,10 @@ BPoseView::AddRemovePoseFromSelection(BPose* pose, int32 
index, bool select)
        if (select)
                fSelectionList->AddItem(pose);
        else {
-               fSelectionList->RemoveItem(pose);
+               fSelectionList->RemoveItem(pose, false);
                if (fSelectionPivotPose == pose)
                        fSelectionPivotPose = NULL;
+
                if (fRealPivotPose == pose)
                        fRealPivotPose = NULL;
        }

############################################################################

Commit:      a892df239f1f45d79fa37eb3c560c9d0e1253272
URL:         http://cgit.haiku-os.org/haiku/commit/?id=a892df2
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:28:00 2014 UTC

Tracker: Fix several unchecked return values

CID611191, CID611192, CID611193

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp
index 2522393..16ed536 100644
--- a/src/kits/tracker/PoseView.cpp
+++ b/src/kits/tracker/PoseView.cpp
@@ -4146,17 +4146,18 @@ BPoseView::CanCopyOrMoveForeignDrag(const Model* 
targetModel,
 
 
 bool
-BPoseView::CanHandleDragSelection(const Model* target, const BMessage* 
dragMessage,
-       bool ignoreTypes)
+BPoseView::CanHandleDragSelection(const Model* target,
+       const BMessage* dragMessage, bool ignoreTypes)
 {
        if (ignoreTypes)
                return target->IsDropTarget();
 
-       ASSERT(dragMessage);
+       ASSERT(dragMessage != NULL);
 
        BContainerWindow* srcWindow;
-       dragMessage->FindPointer("src_window", (void**)&srcWindow);
-       if (!srcWindow) {
+       status_t result = dragMessage->FindPointer("src_window", 
(void**)&srcWindow);
+
+       if (result != B_OK || srcWindow == NULL) {
                // handle a foreign drag
                bool canCopy;
                bool canMove;
@@ -4188,14 +4189,18 @@ BPoseView::CanHandleDragSelection(const Model* target, 
const BMessage* dragMessa
                if (target->IsDirectory()
                        && (dragMessage->HasData(kBitmapMimeType, 
B_MESSAGE_TYPE)
                                || dragMessage->HasData(kLargeIconType, 
B_MESSAGE_TYPE)
-                               || dragMessage->HasData(kMiniIconType, 
B_MESSAGE_TYPE)))
+                               || dragMessage->HasData(kMiniIconType, 
B_MESSAGE_TYPE))) {
                        return true;
+               }
 
                // TODO: check for a drag message full of refs, feed a list of 
their
                // types to target->IsDropTargetForList(mimeTypeList);
                return false;
        }
 
+       if (result != B_OK)
+               return false;
+
        AutoLock<BWindow> lock(srcWindow);
        if (!lock)
                return false;
@@ -4416,8 +4421,8 @@ BPoseView::HandleDropCommon(BMessage* message, Model* 
targetModel,
 
        // look for srcWindow to determine whether drag was initiated in tracker
        BContainerWindow* srcWindow = NULL;
-       message->FindPointer("src_window", (void**)&srcWindow);
-       if (srcWindow == NULL) {
+       status_t result = message->FindPointer("src_window", 
(void**)&srcWindow);
+       if (result != B_OK || srcWindow == NULL) {
                // drag was from another app
 
                if (targetModel == NULL && poseView != NULL)
@@ -4780,17 +4785,19 @@ BPoseView::HandleDropCommon(BMessage* message, Model* 
targetModel,
                return false;
        }
 
+       if (result != B_OK)
+               return false;
+
        if (srcWindow == containerWindow) {
                // drag started in this window
                containerWindow->Activate();
                containerWindow->UpdateIfNeeded();
                poseView->ResetPosePlacementHint();
-       }
 
-       if (srcWindow == containerWindow
-               && DragSelectionContains(targetPose, message)) {
-               // drop on self
-               targetModel = NULL;
+               if (DragSelectionContains(targetPose, message)) {
+                       // drop on self
+                       targetModel = NULL;
+               }
        }
 
        bool wasHandled = false;
@@ -4858,10 +4865,11 @@ BPoseView::LaunchAppWithSelection(Model* appModel, 
const BMessage* dragMessage,
 
        // add Tracker token so that refs received recipients can script us
        BContainerWindow* srcWindow;
-       dragMessage->FindPointer("src_window", (void**)&srcWindow);
-       if (srcWindow)
-               params.refsMessage->AddMessenger("TrackerViewToken", BMessenger(
-                       srcWindow->PoseView()));
+       if (dragMessage->FindPointer("src_window", (void**)&srcWindow) == B_OK
+               && srcWindow != NULL) {
+               params.refsMessage->AddMessenger("TrackerViewToken",
+                       BMessenger(srcWindow->PoseView()));
+       }
 
        EachItemInDraggedSelection(dragMessage, AddOneToLaunchMessage, 0, 
&params);
        if (params.refsMessage->HasRef("refs"))

############################################################################

Commit:      190fda60a64e907e0784948a02d3737d714474fb
URL:         http://cgit.haiku-os.org/haiku/commit/?id=190fda6
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:31:27 2014 UTC

Tracker: Check that LockLooper() succeeds

CID602486

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/Utilities.cpp b/src/kits/tracker/Utilities.cpp
index 27a4377..133fb7d 100644
--- a/src/kits/tracker/Utilities.cpp
+++ b/src/kits/tracker/Utilities.cpp
@@ -227,9 +227,8 @@ PeriodicUpdatePoses::DoPeriodicUpdate(bool forceRedraw)
        int32 count = fPoseList.CountItems();
        for (int32 index = 0; index < count; index++) {
                periodic_pose* periodic = fPoseList.ItemAt(index);
-               if (periodic->callback(periodic->pose, periodic->cookie)
-                       || forceRedraw) {
-                       periodic->pose_view->LockLooper();
+               if ((periodic->callback(periodic->pose, periodic->cookie)
+                       || forceRedraw) && periodic->pose_view->LockLooper()) {
                        periodic->pose_view->UpdateIcon(periodic->pose);
                        periodic->pose_view->UnlockLooper();
                }

############################################################################

Commit:      1e228168eccc69050fbca173b851e40622adf70c
URL:         http://cgit.haiku-os.org/haiku/commit/?id=1e22816
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:38:31 2014 UTC

Tracker: Initialize view and low colors

CID610137 and CID610138

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/Utilities.cpp b/src/kits/tracker/Utilities.cpp
index 133fb7d..4e38416 100644
--- a/src/kits/tracker/Utilities.cpp
+++ b/src/kits/tracker/Utilities.cpp
@@ -663,6 +663,8 @@ FlickerFreeStringView::FlickerFreeStringView(BRect bounds, 
const char* name,
        :
        BStringView(bounds, name, text, resizingMode, flags),
        fBitmap(NULL),
+       fViewColor(ViewColor()),
+       fLowColor(LowColor()),
        fOriginalBitmap(NULL)
 {
 }
@@ -673,6 +675,8 @@ FlickerFreeStringView::FlickerFreeStringView(BRect bounds, 
const char* name,
        :
        BStringView(bounds, name, text, resizingMode, flags),
        fBitmap(NULL),
+       fViewColor(ViewColor()),
+       fLowColor(LowColor()),
        fOriginalBitmap(inBitmap)
 {
 }

############################################################################

Revision:    hrev47522
Commit:      b8bcb08800361b34369c555a186ad22d0f408dc4
URL:         http://cgit.haiku-os.org/haiku/commit/?id=b8bcb08
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jul 18 20:40:05 2014 UTC

Tracker: Fix integer overflow

CID1108329

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/VirtualDirectoryManager.cpp 
b/src/kits/tracker/VirtualDirectoryManager.cpp
index 9737a7d..f2f1d41 100644
--- a/src/kits/tracker/VirtualDirectoryManager.cpp
+++ b/src/kits/tracker/VirtualDirectoryManager.cpp
@@ -224,11 +224,13 @@ public:
                if (error != B_OK)
                        return error;
 
-               bigtime_t fileTime = st.st_mtim.tv_sec * 1000000
-                       + st.st_mtim.tv_nsec / 1000;
+               bigtime_t fileTime = st.st_mtim.tv_sec;
+               fileTime *= 1000000;
+               fileTime += st.st_mtim.tv_nsec / 1000;
                if (fileTime == fFileTime) {
                        if (_changed != NULL)
                                *_changed = false;
+
                        return B_OK;
                }
 


Other related posts:

  • » [haiku-commits] haiku: hrev47522 - src/kits/tracker - jscipione