Browse Source

Merge pull request #117 from czbming/official

Memory leak, pointer dereference, and wrong return value fixes
dwimsey 11 years ago
parent
commit
093261f7d8

+ 2 - 2
Include/Rocket/Core/Variant.inl

@@ -75,11 +75,11 @@ bool Variant::GetInto(T& value) const
 		break;
 
 		case SCRIPTINTERFACE:
-			return TypeConverter< ScriptInterface*, T >::Convert((ScriptInterface*)data, value);			
+			return TypeConverter< ScriptInterface*, T >::Convert(*(ScriptInterface**)data, value);			
 		break;
 
 		case VOIDPTR:
-			return TypeConverter< void*, T >::Convert((void*)data, value);
+			return TypeConverter< void*, T >::Convert(*(void**)data, value);
 		break;
 
 		case NONE:

+ 1 - 1
Samples/basic/drag/src/DragListener.cpp

@@ -42,7 +42,7 @@ void DragListener::ProcessEvent(Rocket::Core::Event& event)
 	{
 		Rocket::Core::Element* dest_container = event.GetCurrentElement();
 		Rocket::Core::Element* dest_element = event.GetTargetElement();
-		Rocket::Core::Element* drag_element = *static_cast< Rocket::Core::Element** >(event.GetParameter< void* >("drag_element", NULL));
+		Rocket::Core::Element* drag_element = static_cast< Rocket::Core::Element* >(event.GetParameter< void* >("drag_element", NULL));
 
 		if (dest_container == dest_element)
 		{

+ 3 - 1
Source/Controls/ElementTabSet.cpp

@@ -47,14 +47,16 @@ void ElementTabSet::SetTab(int tab_index, const Rocket::Core::String& rml)
 	Core::Element* element = Core::Factory::InstanceElement(NULL, "*", "tab", Rocket::Core::XMLAttributes());
 	Core::Factory::InstanceElementText(element, rml);
 	SetTab(tab_index, element);
+	element->RemoveReference();
 }
 
 // Sets the specifed tab index's tab panel RML.
 void ElementTabSet::SetPanel(int tab_index, const Rocket::Core::String& rml)
 {
-	Core::Element* element = Core::Factory::InstanceElement(NULL, "*", "tab", Rocket::Core::XMLAttributes());
+	Core::Element* element = Core::Factory::InstanceElement(NULL, "*", "panel", Rocket::Core::XMLAttributes());
 	Core::Factory::InstanceElementText(element, rml);
 	SetPanel(tab_index, element);
+	element->RemoveReference();
 }
 
 // Set the specifed tab index's title element.

+ 1 - 1
Source/Core/Element.cpp

@@ -783,7 +783,7 @@ float Element::GetClientHeight()
 // Returns the element from which all offset calculations are currently computed.
 Element* Element::GetOffsetParent()
 {
-	return parent;
+	return offset_parent;
 }
 
 // Gets the distance from this element's left border to its offset parent's left border.