]> git.saurik.com Git - wxWidgets.git/commitdiff
Changed GetLong/ShortPath to allocate memory dynamically
authorJulian Smart <julian@anthemion.co.uk>
Wed, 21 Mar 2001 22:25:32 +0000 (22:25 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Wed, 21 Mar 2001 22:25:32 +0000 (22:25 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/filename.cpp

index 87da62de5cb000bf7128bdb0c30274e959671955..5e4f6beaada7a7ec019096310e131be50c3d238d 100644 (file)
@@ -493,22 +493,23 @@ wxString wxFileName::GetShortPath() const
 {
 #if defined(__WXMSW__) && defined(__WIN32__)
     wxString path(GetFullPath());
-
-    wxChar outBuf[MAX_PATH];
-
-    // TODO: can't work out how to determine if the function failed
-    // (positive value if either it succeeded or the buffer was too small)
-
-    int bufSz = ::GetShortPathName((const wxChar*) path, outBuf, MAX_PATH*sizeof(wxChar));
-
-    if (bufSz == 0)
+    wxString pathOut;
+    DWORD sz = ::GetShortPathName(path, NULL, 0);
+    bool ok = sz != 0;
+    if ( ok )
     {
-        return wxEmptyString;
+        ok = ::GetShortPathName
+               (
+                path,
+                pathOut.GetWriteBuf(sz),
+                sz
+               ) != 0;
+        pathOut.UngetWriteBuf();
     }
+    if (ok)
+        return pathOut;
     else
-    {
-        return wxString(outBuf);
-    }
+        return path;
 #else
     return GetFullPath();
 #endif
@@ -519,22 +520,23 @@ wxString wxFileName::GetLongPath() const
 {
 #if defined(__WXMSW__) && defined(__WIN32__)
     wxString path(GetFullPath());
-
-    wxChar outBuf[MAX_PATH];
-
-    // TODO: can't work out how to determine if the function failed
-    // (positive value if either it succeeded or the buffer was too small)
-
-    int bufSz = ::GetLongPathName((const wxChar*) path, outBuf, MAX_PATH*sizeof(wxChar));
-
-    if (bufSz == 0)
+    wxString pathOut;
+    DWORD sz = ::GetLongPathName(path, NULL, 0);
+    bool ok = sz != 0;
+    if ( ok )
     {
-        return wxEmptyString;
+        ok = ::GetLongPathName
+               (
+                path,
+                pathOut.GetWriteBuf(sz),
+                sz
+               ) != 0;
+        pathOut.UngetWriteBuf();
     }
+    if (ok)
+        return pathOut;
     else
-    {
-        return wxString(outBuf);
-    }
+        return path;
 #else
     return GetFullPath();
 #endif