Merge to XFA: Use IPDF_DataAvail interface to hide CPDF_DataAvail.
[pdfium.git] / core / src / fpdfapi / fpdf_parser / fpdf_parser_fdf.cpp
index 36cc9db..e431c6a 100644 (file)
@@ -111,7 +111,8 @@ FX_BOOL CFDF_Document::WriteBuf(CFX_ByteTextBuf& buf) const
 }
 CFX_WideString CFDF_Document::GetWin32Path() const
 {
-    CPDF_Object* pFileSpec = m_pRootDict->GetDict(FX_BSTRC("FDF"))->GetElementValue(FX_BSTRC("F"));
+    CPDF_Dictionary* pDict = m_pRootDict ? m_pRootDict->GetDict(FX_BSTRC("FDF")) : NULL;
+    CPDF_Object* pFileSpec = pDict ? pDict->GetElementValue(FX_BSTRC("F")) : NULL;
     if (pFileSpec == NULL) {
         return CFX_WideString();
     }
@@ -174,9 +175,9 @@ void FPDF_FileSpec_SetWin32Path(CPDF_Object* pFileSpec, const CFX_WideString& fi
         if (filepath[2] != '\\') {
             result += '/';
         }
-        result += ChangeSlash((FX_LPCWSTR)filepath + 2);
+        result += ChangeSlash(filepath.c_str() + 2);
     } else if (filepath.GetLength() > 1 && filepath[0] == '\\' && filepath[1] == '\\') {
-        result = ChangeSlash((FX_LPCWSTR)filepath + 1);
+        result = ChangeSlash(filepath.c_str() + 1);
     } else {
         result = ChangeSlash(filepath);
     }
@@ -203,7 +204,10 @@ CFX_WideString     FPDF_FileSpec_GetWin32Path(const CPDF_Object* pFileSpec)
         if (wsFileName.IsEmpty() && pDict->KeyExist(FX_BSTRC("DOS"))) {
             wsFileName = CFX_WideString::FromLocal(pDict->GetString(FX_BSTRC("DOS")));
         }
-    } else {
+    }
+    else if (!pFileSpec)
+        wsFileName = CFX_WideString();
+    else {
         wsFileName = CFX_WideString::FromLocal(pFileSpec->GetString());
     }
     if (wsFileName[0] != '/') {
@@ -213,7 +217,7 @@ CFX_WideString      FPDF_FileSpec_GetWin32Path(const CPDF_Object* pFileSpec)
         CFX_WideString result;
         result += wsFileName[1];
         result += ':';
-        result += ChangeSlash(((FX_LPCWSTR)wsFileName) + 2);
+        result += ChangeSlash(wsFileName.c_str() + 2);
         return result;
     } else {
         CFX_WideString result;