Add optional length output parameter and also change the return type to "char
*" from "wxChar *" to which it apparently was blindly changed just to make
this code compile even though this function never returned any strings.
Closes #11214.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61977
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Returns NULL or newly-allocated memory, so use delete[] to clean up.
#ifdef __WXMSW__
extern WXDLLIMPEXP_CORE const wxChar* wxUserResourceStr;
// Returns NULL or newly-allocated memory, so use delete[] to clean up.
#ifdef __WXMSW__
extern WXDLLIMPEXP_CORE const wxChar* wxUserResourceStr;
- WXDLLIMPEXP_CORE wxChar* wxLoadUserResource(const wxString& resourceName, const wxString& resourceType = wxUserResourceStr);
+ WXDLLIMPEXP_CORE char* wxLoadUserResource(const wxString& resourceName, const wxString& resourceType = wxUserResourceStr, int* pLen = NULL);
#endif // MSW
// ----------------------------------------------------------------------------
#endif // MSW
// ----------------------------------------------------------------------------
// Returns NULL or newly-allocated memory, so use delete[] to clean up.
#ifndef __WXMICROWIN__
// Returns NULL or newly-allocated memory, so use delete[] to clean up.
#ifndef __WXMICROWIN__
-wxChar *wxLoadUserResource(const wxString& resourceName, const wxString& resourceType)
+char *wxLoadUserResource(const wxString& resourceName, const wxString& resourceType, int* pLen /* = NULL */)
{
HRSRC hResource = ::FindResource(wxGetInstance(),
resourceName.wx_str(),
{
HRSRC hResource = ::FindResource(wxGetInstance(),
resourceName.wx_str(),
if ( hData == 0 )
return NULL;
if ( hData == 0 )
return NULL;
- wxChar *theText = (wxChar *)::LockResource(hData);
+ void *theText = ::LockResource(hData);
if ( !theText )
return NULL;
// Not all compilers put a zero at the end of the resource (e.g. BC++ doesn't).
// so we need to find the length of the resource.
if ( !theText )
return NULL;
// Not all compilers put a zero at the end of the resource (e.g. BC++ doesn't).
// so we need to find the length of the resource.
- int len = ::SizeofResource(wxGetInstance(), hResource) + 1;
- wxChar *s = new wxChar[len];
- wxStrlcpy(s, theText, len);
+ int len = ::SizeofResource(wxGetInstance(), hResource);
+ char *s = new char[len + 1];
+ memcpy(s, theText, len);
+ s[len] = '\0'; // NUL-terminate in case the resource itself wasn't
// Obsolete in WIN32
#ifndef __WIN32__
// Obsolete in WIN32
#ifndef __WIN32__
// No need??
// GlobalFree(hData);
// No need??
// GlobalFree(hData);
+ if (pLen)
+ *pLen = len;
+
return s;
}
#endif // __WXMICROWIN__
return s;
}
#endif // __WXMICROWIN__