X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/67547666c93ec8b13239e0d371e8c5c3873a59b9..33b494d643e42a2e2963987cbc3637f4593ea43a:/samples/html/virtual/virtual.cpp diff --git a/samples/html/virtual/virtual.cpp b/samples/html/virtual/virtual.cpp index 8672b7b277..a34298dc02 100644 --- a/samples/html/virtual/virtual.cpp +++ b/samples/html/virtual/virtual.cpp @@ -54,7 +54,7 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) { wxFSFile *f; wxInputStream *str; - char *buf = (char*)malloc(1024); + static char buf[1024]; sprintf(buf, "

You're in Node %s

" "Where do you want to go?

" @@ -64,10 +64,14 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) "
", location.GetData(), location.GetData(), location.GetData(), location.GetData()); - // WARNING: wxMemoryInputStream will not free buf. - // There is a memory leak here. + // NB: There's a terrible hack involved: we fill 'buf' with new data every + // time this method is called and return new wxMemoryInputStream pointing to it. + // This won't work as soon as there are 2+ myVFS files opened. Fortunately, + // this won't happen because wxHTML keeps only one "page" file opened at the + // time. str = new wxMemoryInputStream(buf, strlen(buf)); f = new wxFSFile(str, location, "text/html", wxEmptyString, wxDateTime::Today()); + return f; }