From 904c0d667c7a270a35b5f941f580a9b4cff05b6d Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Sun, 26 Jul 2020 17:46:08 +0300
Subject: [PATCH] Fix for overlay memory overrun

---
 applications/gui2/src/views/addsource.cpp | 8 ++++----
 applications/gui2/src/views/addsource.hpp | 2 +-
 components/renderers/cpp/src/overlay.cpp  | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/applications/gui2/src/views/addsource.cpp b/applications/gui2/src/views/addsource.cpp
index 0fe514d7d..13b77f005 100644
--- a/applications/gui2/src/views/addsource.cpp
+++ b/applications/gui2/src/views/addsource.cpp
@@ -112,7 +112,7 @@ AddSourceWindow::~AddSourceWindow() {
 
 }
 
-nanogui::Button *AddSourceWindow::_addButton(const std::string &s, nanogui::Widget *parent) {
+nanogui::Button *AddSourceWindow::_addButton(const std::string &s, nanogui::Widget *parent, bool hide) {
 	using namespace nanogui;
 
 	ftl::URI uri(s);
@@ -137,9 +137,9 @@ nanogui::Button *AddSourceWindow::_addButton(const std::string &s, nanogui::Widg
 	button->setFontSize(18);
 	button->setTooltip(s);
 
-	button->setCallback([this, uri = s]() {
+	button->setCallback([this, uri = s, hide]() {
 		ctrl_->add(uri);
-		close();
+		if (hide) close();
 	});
 
 	return button;
@@ -205,7 +205,7 @@ void AddSourceWindow::rebuild() {
 
 	auto hostsrcs = ctrl_->getHosts();
 	for (auto &s : hostsrcs) {
-		_addButton(s, tab_items_[3]);
+		_addButton(s, tab_items_[3], false);
 	}
 
 	auto streamsrcs = ctrl_->getNetSources();
diff --git a/applications/gui2/src/views/addsource.hpp b/applications/gui2/src/views/addsource.hpp
index da075fbab..7e6ca3193 100644
--- a/applications/gui2/src/views/addsource.hpp
+++ b/applications/gui2/src/views/addsource.hpp
@@ -25,7 +25,7 @@ private:
 	void close();
 	void rebuild();
 
-	nanogui::Button *_addButton(const std::string &s, nanogui::Widget *parent);
+	nanogui::Button *_addButton(const std::string &s, nanogui::Widget *parent, bool hide=true);
 
 	ftl::Handle new_source_handle_;
 	MUTEX mutex_;
diff --git a/components/renderers/cpp/src/overlay.cpp b/components/renderers/cpp/src/overlay.cpp
index 64dfaa2fa..ef755170e 100644
--- a/components/renderers/cpp/src/overlay.cpp
+++ b/components/renderers/cpp/src/overlay.cpp
@@ -166,8 +166,8 @@ void Overlay::_createShapes() {
 	shapes_[Shape::XZPLANE] = {88, 2*3, 94, 40*2};
 	shapes_[Shape::AXIS] = {0, 0, 82, 2*3};
 
-	oShader.uploadAttrib("vertex", sizeof(float3)*shape_verts_.size(), 3, sizeof(float), GL_FLOAT, false, shape_verts_.data());
-	oShader.uploadAttrib ("indices", sizeof(int)*shape_tri_indices_.size(), 1, sizeof(int), GL_UNSIGNED_INT, true, shape_tri_indices_.data());
+	oShader.uploadAttrib("vertex", 3*shape_verts_.size(), 3, sizeof(float), GL_FLOAT, false, shape_verts_.data());
+	oShader.uploadAttrib ("indices", 1*shape_tri_indices_.size(), 1, sizeof(int), GL_UNSIGNED_INT, true, shape_tri_indices_.data());
 }
 
 void Overlay::_drawFilledShape(Shape shape, const Eigen::Matrix4d &pose, float scale, uchar4 c) {
-- 
GitLab