From 8e280f34545f517cf1aa21e4ddb0a0b60ea7a161 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 18 Apr 2018 09:22:55 +0100 Subject: [PATCH] Removed some erroneous casts from ReferenceCountedObjectPtr that allowed base classes to be implicitly converted to derived classes --- modules/juce_box2d/box2d/Common/b2Timer.cpp | 2 +- .../memory/juce_ReferenceCountedObject.h | 34 +++++++++---------- .../native/juce_mac_NSViewComponent.mm | 23 +++++++------ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/modules/juce_box2d/box2d/Common/b2Timer.cpp b/modules/juce_box2d/box2d/Common/b2Timer.cpp index d833ee652f..12533219bc 100644 --- a/modules/juce_box2d/box2d/Common/b2Timer.cpp +++ b/modules/juce_box2d/box2d/Common/b2Timer.cpp @@ -18,7 +18,7 @@ #include "b2Timer.h" -b2Timer::b2Timer() +b2Timer::b2Timer() { Reset(); } diff --git a/modules/juce_core/memory/juce_ReferenceCountedObject.h b/modules/juce_core/memory/juce_ReferenceCountedObject.h index 37986db994..5efd086be1 100644 --- a/modules/juce_core/memory/juce_ReferenceCountedObject.h +++ b/modules/juce_core/memory/juce_ReferenceCountedObject.h @@ -237,12 +237,12 @@ private: @tags{Core} */ -template +template class ReferenceCountedObjectPtr { public: /** The class being referenced by this pointer. */ - typedef ReferenceCountedObjectClass ReferencedType; + typedef ObjectType ReferencedType; //============================================================================== /** Creates a pointer to a null object. */ @@ -274,7 +274,7 @@ public: */ template ReferenceCountedObjectPtr (const ReferenceCountedObjectPtr& other) noexcept - : referencedObject (static_cast (other.get())) + : referencedObject (other.get()) { incIfNotNull (referencedObject); } @@ -295,7 +295,7 @@ public: template ReferenceCountedObjectPtr& operator= (const ReferenceCountedObjectPtr& other) { - return operator= (static_cast (other.get())); + return operator= (other.get()); } /** Changes this pointer to point at a different object. @@ -303,7 +303,7 @@ public: The reference count of the old object is decremented, and it might be deleted if it hits zero. The new object's count is incremented. */ - ReferenceCountedObjectPtr& operator= (ReferencedType* const newObject) + ReferenceCountedObjectPtr& operator= (ReferencedType* newObject) { if (referencedObject != newObject) { @@ -382,43 +382,43 @@ private: //============================================================================== /** Compares two ReferenceCountedObjectPtrs. */ -template -bool operator== (const ReferenceCountedObjectPtr& object1, ReferenceCountedObjectClass* const object2) noexcept +template +bool operator== (const ReferenceCountedObjectPtr& object1, ObjectType* const object2) noexcept { return object1.get() == object2; } /** Compares two ReferenceCountedObjectPtrs. */ -template -bool operator== (const ReferenceCountedObjectPtr& object1, const ReferenceCountedObjectPtr& object2) noexcept +template +bool operator== (const ReferenceCountedObjectPtr& object1, const ReferenceCountedObjectPtr& object2) noexcept { return object1.get() == object2.get(); } /** Compares two ReferenceCountedObjectPtrs. */ -template -bool operator== (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr& object2) noexcept +template +bool operator== (ObjectType* object1, const ReferenceCountedObjectPtr& object2) noexcept { return object1 == object2.get(); } /** Compares two ReferenceCountedObjectPtrs. */ -template -bool operator!= (const ReferenceCountedObjectPtr& object1, const ReferenceCountedObjectClass* object2) noexcept +template +bool operator!= (const ReferenceCountedObjectPtr& object1, const ObjectType* object2) noexcept { return object1.get() != object2; } /** Compares two ReferenceCountedObjectPtrs. */ -template -bool operator!= (const ReferenceCountedObjectPtr& object1, const ReferenceCountedObjectPtr& object2) noexcept +template +bool operator!= (const ReferenceCountedObjectPtr& object1, const ReferenceCountedObjectPtr& object2) noexcept { return object1.get() != object2.get(); } /** Compares two ReferenceCountedObjectPtrs. */ -template -bool operator!= (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr& object2) noexcept +template +bool operator!= (ObjectType* object1, const ReferenceCountedObjectPtr& object2) noexcept { return object1 != object2.get(); } diff --git a/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm b/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm index 47dc7e87e3..ce43a60aca 100644 --- a/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm +++ b/modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm @@ -82,7 +82,7 @@ private: private: static void frameChanged (id self, SEL, NSNotification*) { - if (NSViewResizeWatcher* const target = getIvar (self, "target")) + if (auto* target = getIvar (self, "target")) target->viewResized(); } @@ -98,7 +98,7 @@ class NSViewAttachment : public ReferenceCountedObject, private NSViewResizeWatcher { public: - NSViewAttachment (NSView* const v, Component& comp) + NSViewAttachment (NSView* v, Component& comp) : ComponentMovementWatcher (&comp), view (v), owner (comp), currentPeer (nullptr) @@ -134,9 +134,9 @@ public: void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) override { - if (ComponentPeer* const peer = owner.getTopLevelComponent()->getPeer()) + if (auto* peer = owner.getTopLevelComponent()->getPeer()) { - NSRect r = makeNSRect (peer->getAreaCoveredBy (owner)); + auto r = makeNSRect (peer->getAreaCoveredBy (owner)); r.origin.y = [[view superview] frame].size.height - (r.origin.y + r.size.height); [view setFrame: r]; } @@ -144,7 +144,7 @@ public: void componentPeerChanged() override { - ComponentPeer* const peer = owner.getPeer(); + auto* peer = owner.getPeer(); if (currentPeer != peer) { @@ -152,7 +152,7 @@ public: if (peer != nullptr) { - NSView* const peerView = (NSView*) peer->getNativeHandle(); + auto peerView = (NSView*) peer->getNativeHandle(); [peerView addSubview: view]; componentMovedOrResized (false, false); } @@ -182,7 +182,8 @@ public: NSView* const view; - typedef ReferenceCountedObjectPtr Ptr; + using Ptr = ReferenceCountedObjectPtr; + private: Component& owner; ComponentPeer* currentPeer; @@ -201,11 +202,11 @@ private: NSViewComponent::NSViewComponent() {} NSViewComponent::~NSViewComponent() {} -void NSViewComponent::setView (void* const view) +void NSViewComponent::setView (void* view) { if (view != getView()) { - NSViewAttachment::Ptr old = attachment; + auto old = attachment; attachment = nullptr; @@ -226,7 +227,7 @@ void NSViewComponent::resizeToFitView() { if (attachment != nullptr) { - NSRect r = [static_cast (attachment.get())->view frame]; + auto r = [static_cast (attachment.get())->view frame]; setBounds (Rectangle ((int) r.size.width, (int) r.size.height)); } } @@ -239,7 +240,7 @@ void NSViewComponent::alphaChanged() (static_cast (attachment.get()))->updateAlpha(); } -ReferenceCountedObject* NSViewComponent::attachViewToComponent (Component& comp, void* const view) +ReferenceCountedObject* NSViewComponent::attachViewToComponent (Component& comp, void* view) { return new NSViewAttachment ((NSView*) view, comp); }