diff options
Diffstat (limited to 'ACE')
-rw-r--r-- | ACE/ace/Configuration.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/ACE/ace/Configuration.cpp b/ACE/ace/Configuration.cpp index 10b0ad2b05b..ee492ccefef 100644 --- a/ACE/ace/Configuration.cpp +++ b/ACE/ace/Configuration.cpp @@ -1537,9 +1537,12 @@ ACE_Configuration_Heap::open_section (const ACE_Configuration_Section_Key& base, (separator = ACE_OS::strchr (sub_section, ACE_TEXT ('\\'))) != 0; ) { - ACE_TString simple_section (sub_section, separator - sub_section); - int ret_val = - open_simple_section (result, simple_section.c_str (), create, result); + // Create a substring from the current location until the new found separator + // Because ACE_TString works with the character length we need to keep in mind + // the size of a single character + ACE_TString tsub_section (sub_section); + ACE_TString const simple_section = tsub_section.substring(0, (separator - sub_section) / sizeof (ACE_TCHAR)); + int const ret_val = open_simple_section (result, simple_section.c_str(), create, result); if (ret_val) return ret_val; sub_section = separator + 1; |