]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/helpdata.cpp
fixed (rare but fatal) bug in wxWindowDisabler
[wxWidgets.git] / src / html / helpdata.cpp
index 0c34284d53e00f33c87018b44511513251ba8e6f..cb5eb0e862144830bebb3a1007ec82566daba95a 100644 (file)
@@ -93,7 +93,7 @@ class HP_TagHandler : public wxHtmlTagHandler
         wxHtmlBookRecord *m_Book;
 
     public:
-        HP_TagHandler(wxHtmlBookRecord *b) : wxHtmlTagHandler() {m_Book = b; m_Items = NULL; m_ItemsCnt = 0; m_Name = m_Page = wxEmptyString; m_Level = 0; }
+        HP_TagHandler(wxHtmlBookRecord *b) : wxHtmlTagHandler() {m_Book = b; m_Items = NULL; m_ItemsCnt = 0; m_Name = m_Page = wxEmptyString; m_Level = 0; m_ID = -1; }
         wxString GetSupportedTags() { return wxT("UL,OBJECT,PARAM"); }
         bool HandleTag(const wxHtmlTag& tag);
         void WriteOut(wxHtmlContentsItem*& array, int& size);
@@ -222,7 +222,7 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c
     HP_TagHandler *handler = new HP_TagHandler(book);
     parser.AddTagHandler(handler);
 
-    f = ( contentsfile.IsEmpty() ? 0 : fsys.OpenFile(contentsfile) );
+    f = ( contentsfile.IsEmpty() ? (wxFSFile*) NULL : fsys.OpenFile(contentsfile) );
     if (f) {
         sz = f -> GetStream() -> GetSize();
         buf = new char[sz + 1];
@@ -237,7 +237,7 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c
     else
         wxLogError(_("Cannot open contents file: %s"), contentsfile.mb_str());
 
-    f = ( indexfile.IsEmpty() ? 0 : fsys.OpenFile(indexfile) );
+    f = ( indexfile.IsEmpty() ? (wxFSFile*) NULL : fsys.OpenFile(indexfile) );
     if (f) {
         sz = f -> GetStream() -> GetSize();
         buf = new char[sz + 1];
@@ -249,7 +249,7 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c
         handler -> WriteOut(m_Index, m_IndexCnt);
         delete[] buf;
     }
-    else
+    else if (!indexfile.IsEmpty())
         wxLogError(_("Cannot open index file: %s"), indexfile.mb_str());
     return TRUE;
 }
@@ -394,6 +394,17 @@ void wxHtmlHelpData::SetTempDir(const wxString& path)
 }
 
 
+
+static wxString SafeFileName(const wxString& s)
+{
+    wxString res(s);
+    res.Replace(wxT("#"), wxT("_"));
+    res.Replace(wxT(":"), wxT("_"));
+    res.Replace(wxT("\\"), wxT("_"));
+    res.Replace(wxT("/"), wxT("_"));
+    return res;
+}
+
 bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
                                   wxFontEncoding encoding,
                                   const wxString& title, const wxString& contfile,
@@ -446,7 +457,7 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
             if (m_TempPath != wxEmptyString) 
             {
                 wxFileOutputStream *outs = new wxFileOutputStream(m_TempPath + 
-                                                  wxFileNameFromPath(bookfile.GetLocation()) + wxT(".cached"));
+                                                  SafeFileName(wxFileNameFromPath(bookfile.GetLocation())) + wxT(".cached"));
                 SaveCachedBook(bookr, outs);
                 delete outs;
             }