Fix failure to load DCPs from SMB shares (#2123).
authorCarl Hetherington <cth@carlh.net>
Sat, 13 Nov 2021 22:42:46 +0000 (23:42 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 13 Nov 2021 22:52:48 +0000 (23:52 +0100)
src/lib/cross_windows.cc

index 23adc23b16e74eab926b1f44d5586cef91181627..49eec3c28ff01b19a18c427f16521eea869a67e8 100644 (file)
@@ -255,14 +255,17 @@ fix_long_path (boost::filesystem::path long_path)
 {
        using namespace boost::filesystem;
 
-       path fixed = "\\\\?\\";
-       if (boost::algorithm::starts_with(long_path.string(), fixed.string())) {
+       if (boost::algorithm::starts_with(long_path.string(), "\\\\")) {
+               /* This could mean it starts with \\ (i.e. a SMB path) or \\?\ (a long path)
+                * or a variety of other things... anyway, we'll leave it alone.
+                */
                return long_path;
        }
 
        /* We have to make the path canonical but we can't call canonical() on the long path
         * as it will fail.  So we'll sort of do it ourselves (possibly badly).
         */
+       path fixed = "\\\\?\\";
        if (long_path.is_absolute()) {
                fixed += long_path.make_preferred();
        } else {