From 2cbfa061b44c7460adf3f06d09b4fbf304ed3a87 Mon Sep 17 00:00:00 2001 From: Ryan Norton Date: Wed, 1 Dec 2004 23:55:42 +0000 Subject: [PATCH] Correct mistakes in wxStripExtension - correct wxString::npos. Spurred by 1073642 filefn.cpp StripExtension(wxString &) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/string.h | 10 +--------- src/common/filefn.cpp | 17 ++++++++--------- src/common/string.cpp | 9 ++------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/include/wx/string.h b/include/wx/string.h index bdd38c93a1..bd343a081d 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -80,16 +80,8 @@ class WXDLLIMPEXP_BASE wxString; // constants // ---------------------------------------------------------------------------- -#if defined(__VISAGECPP__) && __IBMCPP__ >= 400 -// must define this static for VA or else you get multiply defined symbols everywhere -extern const unsigned int wxSTRING_MAXLEN; - -#else // maximum possible length for a string means "take all string" everywhere -// (as sizeof(StringData) is unknown here, we subtract 100) -const unsigned int wxSTRING_MAXLEN = UINT_MAX - 100; - -#endif +#define wxSTRING_MAXLEN wxStringBase::npos // ---------------------------------------------------------------------------- // global data diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index c33c44c174..0a2241edd8 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -361,17 +361,16 @@ void wxStripExtension(wxChar *buffer) void wxStripExtension(wxString& buffer) { - size_t len = buffer.Length(); - size_t i = len-1; - while (i > 0) - { - if (buffer.GetChar(i) == wxT('.')) + //RN: Be careful about the handling the case where + //buffer.Length() == 0 + for(size_t i = buffer.Length() - 1; i != wxString::npos; --i) { - buffer = buffer.Left(i); - break; + if (buffer.GetChar(i) == wxT('.')) + { + buffer = buffer.Left(i); + break; + } } - i --; - } } // Destructive removal of /./ and /../ stuff diff --git a/src/common/string.cpp b/src/common/string.cpp index 316e042182..6b21ca1b09 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -56,14 +56,9 @@ // static class variables definition // --------------------------------------------------------------------------- -#if defined(__VISAGECPP__) && __IBMCPP__ >= 400 -// must define this static for VA or else you get multiply defined symbols -// everywhere -const unsigned int wxSTRING_MAXLEN = UINT_MAX - 100; -#endif // Visual Age - #if !wxUSE_STL - const size_t wxStringBase::npos = wxSTRING_MAXLEN; + //According to STL _must_ be a -1 size_t + const size_t wxStringBase::npos = (size_t) -1; #endif // ---------------------------------------------------------------------------- -- 2.45.2