[Winmerge-svn] SF.net SVN: winmerge:[6215] trunk
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <sdo...@us...> - 2008-12-21 12:16:24
|
Revision: 6215 http://winmerge.svn.sourceforge.net/winmerge/?rev=6215&view=rev Author: sdottaka Date: 2008-12-21 12:16:20 +0000 (Sun, 21 Dec 2008) Log Message: ----------- BUG: [2372000] Ampersand in folder names ruins the project file Modified Paths: -------------- trunk/Docs/Users/ChangeLog.txt trunk/Src/ProjectFile.cpp Modified: trunk/Docs/Users/ChangeLog.txt =================================================================== --- trunk/Docs/Users/ChangeLog.txt 2008-12-21 11:38:20 UTC (rev 6214) +++ trunk/Docs/Users/ChangeLog.txt 2008-12-21 12:16:20 UTC (rev 6215) @@ -3,6 +3,10 @@ to Subversion revision numbers (rXXXXX). To open the tracker item, go to URL: http://winmerge.org/tracker/[tracker-id] +WinMerge 2.13.1.1 + Bugfix: Cound not open project file that contains an ampersand + character in folder names (#2372000) + WinMerge 2.12.x (R2_12) branch created (r6202) WinMerge 2.11.1.8 - 2008-12-19 (r6200) Modified: trunk/Src/ProjectFile.cpp =================================================================== --- trunk/Src/ProjectFile.cpp 2008-12-21 11:38:20 UTC (rev 6214) +++ trunk/Src/ProjectFile.cpp 2008-12-21 12:16:20 UTC (rev 6215) @@ -288,6 +288,20 @@ } /** + * @brief Covert characters that are unsafe for use in XML + * @param [in] str The string to be converted + * @return The converted string + */ +static String EscapeXML(const String &str) +{ + String escapedStr = str; + string_replace(escapedStr, _T("&"), _T("&")); + string_replace(escapedStr, _T("<"), _T("<")); + string_replace(escapedStr, _T(">"), _T(">")); + return escapedStr; +} + +/** * @brief Add paths data to the XML tree. * This function adds our paths data to the XML tree. * @param [in] parent Parent element for paths data. @@ -300,29 +314,23 @@ if (!m_leftFile.IsEmpty()) { - LPCTSTR path; element = scew_element_add(parent, Left_element_name); - path = m_leftFile.GetBuffer(MAX_PATH); - scew_element_set_contents(element, T2UTF8(path)); - m_leftFile.ReleaseBuffer(); + String path = m_leftFile; + scew_element_set_contents(element, T2UTF8(EscapeXML(path).c_str())); } if (!m_rightFile.IsEmpty()) { - LPCTSTR path; element = scew_element_add(parent, Right_element_name); - path = m_rightFile.GetBuffer(MAX_PATH); - scew_element_set_contents(element, T2UTF8(path)); - m_rightFile.ReleaseBuffer(); + String path = m_rightFile; + scew_element_set_contents(element, T2UTF8(EscapeXML(path).c_str())); } if (!m_filter.IsEmpty()) { - LPCTSTR filter; element = scew_element_add(parent, Filter_element_name); - filter = m_filter.GetBuffer(MAX_PATH); - scew_element_set_contents(element, T2UTF8(filter)); - m_filter.ReleaseBuffer(); + String filter = m_filter; + scew_element_set_contents(element, T2UTF8(EscapeXML(filter).c_str())); } element = scew_element_add(parent, Subfolders_element_name); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |