From 477a1a88c6b7f5e5a78a2bbc4a6fe7781b2a0525 Mon Sep 17 00:00:00 2001
From: Petr Mrázek <peterix@gmail.com>
Date: Wed, 30 Sep 2015 22:52:55 +0200
Subject: GH-1262 fix relative paths for java binaries

---
 application/pages/global/JavaPage.cpp | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

(limited to 'application/pages/global/JavaPage.cpp')

diff --git a/application/pages/global/JavaPage.cpp b/application/pages/global/JavaPage.cpp
index 9b35d1f3..18882ad9 100644
--- a/application/pages/global/JavaPage.cpp
+++ b/application/pages/global/JavaPage.cpp
@@ -105,13 +105,24 @@ void JavaPage::on_javaDetectBtn_clicked()
 		ui->javaPathTextBox->setText(java->path);
 	}
 }
+
 void JavaPage::on_javaBrowseBtn_clicked()
 {
-	QString dir = QFileDialog::getOpenFileName(this, tr("Find Java executable"));
-	if (!dir.isNull())
+	QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"));
+	QString cooked_path = NormalizePath(raw_path);
+
+	// do not allow current dir - it's dirty. Do not allow dirs that don't exist
+	if(cooked_path.isEmpty())
 	{
-		ui->javaPathTextBox->setText(dir);
+		return;
+	}
+
+	QFileInfo javaInfo(cooked_path);;
+	if(!javaInfo.exists() || !javaInfo.isExecutable())
+	{
+		return;
 	}
+	ui->javaPathTextBox->setText(cooked_path);
 }
 
 void JavaPage::on_javaTestBtn_clicked()
-- 
cgit