Hand-apply 0ca0ab9f23ac0238643a6d148148385388f71c00 from master;
authorCarl Hetherington <cth@carlh.net>
Wed, 3 Dec 2014 09:33:34 +0000 (09:33 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 3 Dec 2014 09:33:34 +0000 (09:33 +0000)
potential use-after-free.

TO_PORT
src/wx/content_panel.cc

diff --git a/TO_PORT b/TO_PORT
index b7a52640d7da187e21e03eb46bb5dff68cdfaab8..b682332a8486dbb57fb0df2476a50e33e4eaa9d6 100644 (file)
--- a/TO_PORT
+++ b/TO_PORT
@@ -1,3 +1,2 @@
-d8bfb59816e39406beb7c815e0424c480ae74e32
 cd0b7dd044d5b5b1c05118a58c58458edb80bf61
 d609c88438d8110569cc940ea2e1bc78c0bb5acc
index 9a40a50749c80b9b96459d1737269a9d912db3e7..2932ee7c58bca7cd6da585f47b7fb5bb435f6a63 100644 (file)
@@ -258,6 +258,7 @@ ContentPanel::add_folder_clicked ()
 {
        wxDirDialog* d = new wxDirDialog (_panel, _("Choose a folder"), wxT (""), wxDD_DIR_MUST_EXIST);
        int const r = d->ShowModal ();
+       boost::filesystem::path const path (wx_to_std (d->GetPath ()));
        d->Destroy ();
        
        if (r != wxID_OK) {
@@ -267,10 +268,10 @@ ContentPanel::add_folder_clicked ()
        shared_ptr<Content> content;
        
        try {
-               content.reset (new ImageContent (_film, boost::filesystem::path (wx_to_std (d->GetPath ()))));
+               content.reset (new ImageContent (_film, path));
        } catch (...) {
                try {
-                       content.reset (new DCPContent (_film, boost::filesystem::path (wx_to_std (d->GetPath ()))));
+                       content.reset (new DCPContent (_film, path));
                } catch (...) {
                        error_dialog (_panel, _("Could not find any images nor a DCP in that folder"));
                        return;