Modified nesting to ensure that 'vst_search_path()' shouldn't return NULL if the...
authorJohn Emmas <johne53@tiscali.co.uk>
Sun, 9 Mar 2014 11:48:09 +0000 (11:48 +0000)
committerJohn Emmas <johne53@tiscali.co.uk>
Sun, 9 Mar 2014 11:48:09 +0000 (11:48 +0000)
libs/ardour/vst_search_path.cc

index 6dea1b70a7bbeff7dab58e32146f36832529505c..c727b9b9ab5c4a6fd415ea2455ee5672ce251280 100644 (file)
@@ -42,78 +42,81 @@ vst_search_path ()
 
        if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_CURRENT_USER, "Software\\VST", 0, KEY_READ, &hKey)) {
                // Look for the user's VST Registry entry
-               if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize)) {
+               if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize))
                        p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0);
-               }
+
                RegCloseKey (hKey);
-               
-               if (p == 0) {
-                       if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\VST", 0, KEY_READ, &hKey)) {
-                               // Look for a global VST Registry entry
-                               if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize))
-                                       p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0);
-                               
-                               RegCloseKey (hKey);
-                       }
-                       
-                       if (p == 0) {
-                               char *pVSTx86 = 0;
-                               char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86);
-                               
-                               if (pProgFilesX86) {
-                                       // Look for a VST folder under C:\Program Files (x86)
-                                       if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", 0)) {
-                                               if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS))
-                                                       if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR))
-                                                               p = g_build_filename (pVSTx86, 0);
-                                               
-                                               g_free (pVSTx86);
-                                       }
-                                       
-                                       g_free (pProgFilesX86);
-                               }
+       }
+
+       if (p == 0) {
+               if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\VST", 0, KEY_READ, &hKey))
+               {
+                       // Look for a global VST Registry entry
+                       if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize))
+                               p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0);
+
+                       RegCloseKey (hKey);
+               }
+       }
+
+       if (p == 0) {
+               char *pVSTx86 = 0;
+               char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86);
+
+               if (pProgFilesX86) {
+                       // Look for a VST folder under C:\Program Files (x86)
+                       if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", 0))
+                       {
+                               if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS))
+                                       if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR))
+                                               p = g_build_filename (pVSTx86, 0);
+
+                               g_free (pVSTx86);
                        }
 
-                       if (p == 0) {
-                               // Look for a VST folder under C:\Program Files
-                               char *pVST = 0;
-                               char *pProgFiles = PBD::get_win_special_folder (CSIDL_PROGRAM_FILES);
-                               
-                               if (pProgFiles) {
-                                       if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", 0)) {
-                                               if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
-                                                       if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
-                                                               p = g_build_filename (pVST, 0);
-                                               g_free (pVST);
-                                       }
-                                       
-                                       g_free (pProgFiles);
+                       g_free (pProgFilesX86);
+               }
+
+               if (p == 0) {
+                       // Look for a VST folder under C:\Program Files
+                       char *pVST = 0;
+                       char *pProgFiles = PBD::get_win_special_folder (CSIDL_PROGRAM_FILES);
+
+                       if (pProgFiles) {
+                               if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", 0)) {
+                                       if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
+                                               if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
+                                                       p = g_build_filename (pVST, 0);
+
+                                       g_free (pVST);
                                }
+
+                               g_free (pProgFiles);
                        }
                }
-               
-               if (p == 0) {
-                       // If all else failed, assume the plugins are under "My Documents"
-                       user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
-                       if (user_home) {
+       }
+
+       if (p == 0) {
+               // If all else failed, assume the plugins are under "My Documents"
+               user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
+               if (user_home) {
+                       p = g_build_filename (user_home, "Plugins", "VST", 0);
+               } else {
+                       user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
+                       if (user_home)
                                p = g_build_filename (user_home, "Plugins", "VST", 0);
-                       } else {
-                               user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
-                               if (user_home)
-                                       p = g_build_filename (user_home, "Plugins", "VST", 0);
-                       }
+               }
+       } else {
+               // Concatenate the registry path with the user's personal path
+               user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
+
+               if (user_home) {
+                       p = g_build_path (";", p, g_build_filename(user_home, "Plugins", "VST", 0), 0);
                } else {
-                       // Concatenate the registry path with the user's personal path
+                       user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
 
-                       user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
-                       
                        if (user_home) {
-                               p = g_build_path (";", p, g_build_filename(user_home, "Plugins", "VST", 0), 0);
-                       } else {
-                               user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
-                               if (user_home) {
-                                       p = g_build_path (";", p, g_build_filename (user_home, "Plugins", "VST", 0), 0);
-                               }
+                               p = g_build_path (";", p, g_build_filename (user_home, "Plugins", "VST", 0), 0);
                        }
                }
        }