// the implementation of all the functions below is exactly the same so factor
// it out
-#ifdef __WATCOMC__
- #define STR2INTLINK _WCRTLINK
-#else
- #define STR2INTLINK
-#endif
-
-template <typename T>
+template <typename T, typename F>
bool wxStringToIntType(const wxChar *start,
T *val,
int base,
- T STR2INTLINK (*func)(const wxChar *, wxChar **, int))
+ F func)
{
wxCHECK_MSG( val, false, _T("NULL output pointer") );
wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") );
{
// only if old buffer was not big enough
if ( nSize > m_nSize ) {
- Free();
- wxDELETEA(m_pItems);
- m_pItems = new wxChar *[nSize];
+ wxChar **pNew = new wxChar *[nSize];
+ if ( !pNew )
+ return;
+
+ memcpy(pNew, m_pItems, m_nCount*sizeof(wxChar *));
+ delete [] m_pItems;
+
+ m_pItems = pNew;
m_nSize = nSize;
}
-
- m_nCount = 0;
}
// minimizes the memory usage by freeing unused memory