You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by fa...@apache.org on 2008/05/15 14:14:47 UTC
svn commit: r656615 - in /stdcxx/trunk: etc/config/windows/projects.js
etc/config/windows/run_locale_utils.wsf tests/src/driver.cpp util/charmap.cpp
Author: faridz
Date: Thu May 15 05:14:47 2008
New Revision: 656615
URL: http://svn.apache.org/viewvc?rev=656615&view=rev
Log:
2008-05-15 Farid Zaripov <fa...@epam.com>
Merged from branches/4.2.x.
2008-05-15 Farid Zaripov <fa...@epam.com>
* etc/config/windows/run_locale_utils.wsf (check_locale_m): Skip empty lines.
2008-05-14 Martin Sebor <se...@roguewave.com>
* util/charmap.cpp (utf8_decode): Explicitly initialized a local
variable to silence gcc warning: variable may be used uninitialized.
2008-05-14 Farid Zaripov <fa...@epam.com>
* util/charmap.cpp (convert_sym_to_ucs): Fixed bug with
skipping the first digit in symbolic name.
2008-05-13 Farid Zaripov <fa...@epam.com>
* util/charmap.cpp (convert_to_ucs) [_MSC_VER]: Process return code
of MultiByteToWideChar() and fall back to convert_sym_to_ucs() if
the conversion table for the requested codepage is not installed.
2008-05-12 Farid Zaripov <fa...@epam.com>
* tests/src/driver.cpp (_rw_opt_no_popups) [_WIN32]: New function for handling
--no-popups option (disables Windows and MSVC CRT popup windows).
(_rw_opt_debug_heap) [_MSC_VER && _DEBUG]: New function for handling --debug-heap
option (enables the intensive heap memory checking).
(_rw_setopts_windows)[_WIN32]: New function for installing handlers for --no-popups
and --debug-heap options.
(rw_vtest) [_WIN32]: Call _rw_setopts_windows().
* etc/config/windows/projects.js (CreateProjectDefs): Added --no-popups option
when running tests using exec utility.
Modified:
stdcxx/trunk/etc/config/windows/projects.js
stdcxx/trunk/etc/config/windows/run_locale_utils.wsf
stdcxx/trunk/tests/src/driver.cpp
stdcxx/trunk/util/charmap.cpp
Modified: stdcxx/trunk/etc/config/windows/projects.js
URL: http://svn.apache.org/viewvc/stdcxx/trunk/etc/config/windows/projects.js?rev=656615&r1=656614&r2=656615&view=diff
==============================================================================
--- stdcxx/trunk/etc/config/windows/projects.js (original)
+++ stdcxx/trunk/etc/config/windows/projects.js Thu May 15 05:14:47 2008
@@ -334,7 +334,7 @@
" /PRJDIR:\"" + runtestsDef.VCProjDir + "\"" +
" /CONFIG:\"%SOLUTION%\"" +
" /LOGFILE:\"runtests.log\"" +
- " /RUNFLAGS:\"--compat -x \'--compat -O -\' -t " + EXEC_TIMEOUT + "\"";
+ " /RUNFLAGS:\"--compat -x \'--no-popups --compat -O -\' -t " + EXEC_TIMEOUT + "\"";
runtestsDef.CustomBuildOut = "$(OutDir)\\runtests.log";
runtestsDef.CustomBuildDeps = "%FILES%";
//runtestsDef.PrjDeps.push(alltestsDef);
Modified: stdcxx/trunk/etc/config/windows/run_locale_utils.wsf
URL: http://svn.apache.org/viewvc/stdcxx/trunk/etc/config/windows/run_locale_utils.wsf?rev=656615&r1=656614&r2=656615&view=diff
==============================================================================
--- stdcxx/trunk/etc/config/windows/run_locale_utils.wsf (original)
+++ stdcxx/trunk/etc/config/windows/run_locale_utils.wsf Thu May 15 05:14:47 2008
@@ -243,6 +243,9 @@
var line = aout[i].replace("\r", "").replace("\n", "");
+ if (0 == line.length)
+ continue;
+
if (0 > line.search(new RegExp(".cm")))
{
DebugOutLine(" incorrect.");
Modified: stdcxx/trunk/tests/src/driver.cpp
URL: http://svn.apache.org/viewvc/stdcxx/trunk/tests/src/driver.cpp?rev=656615&r1=656614&r2=656615&view=diff
==============================================================================
--- stdcxx/trunk/tests/src/driver.cpp (original)
+++ stdcxx/trunk/tests/src/driver.cpp Thu May 15 05:14:47 2008
@@ -45,9 +45,13 @@
#include <stdlib.h> // for free
#include <string.h> // for strchr, strcpy
+#ifdef _WIN32
+# include <windows.h> // for SetErrorMode()
+#endif // _WIN32
+
#ifdef _MSC_VER
# include <crtdbg.h> // for _CrtSetReportMode(), _CrtSetDbgFlag()
-#endif
+#endif // _MSC_VER
#if !defined (_WIN32) && !defined (_WIN64)
# include <unistd.h> // for isatty()
@@ -492,12 +496,6 @@
// set mode: enable the option
opt_verbose = 1;
-#ifdef _MSC_VER
- _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF
- | _CRTDBG_CHECK_ALWAYS_DF
- | _CRTDBG_LEAK_CHECK_DF);
-#endif
-
return 0;
}
@@ -547,12 +545,6 @@
// set mode: enable the option
opt_compat = 1;
-#ifdef _MSC_VER
- _CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_DEBUG);
- _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_DEBUG);
- _CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
-#endif
-
return 0;
}
@@ -930,6 +922,128 @@
return 0;
}
+
+#ifdef _WIN32
+
+static int
+_rw_opt_no_popups (int argc, char *argv[])
+{
+ static int opt_no_popups;
+
+ if (0 == argc) {
+ // query mode: return the value of the option
+ return opt_no_popups;
+ }
+
+ if (1 == argc && argv && 0 == argv [0]) {
+ // help mode: set argv[0] to the text of the help message
+
+ static const char helpstr[] = {
+ "Prevents the program from using message box popup window's for\n"
+ "error messages.\n"
+ };
+
+ argv [0] = _RWSTD_CONST_CAST (char*, helpstr);
+
+ return 0;
+ }
+
+ // set mode: enable the option
+ opt_no_popups = 1;
+
+ SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
+
+# ifdef _MSC_VER
+ _CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
+ _CrtSetReportFile (_CRT_WARN, _CRTDBG_FILE_STDERR);
+ _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
+ _CrtSetReportFile (_CRT_ERROR, _CRTDBG_FILE_STDERR);
+ _CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
+ _CrtSetReportFile (_CRT_ASSERT, _CRTDBG_FILE_STDERR);
+# endif // _MSC_VER
+
+ return 0;
+}
+
+#endif // _WIN32
+
+
+#if defined (_MSC_VER) && defined (_DEBUG)
+
+static int
+_rw_opt_debug_heap (int argc, char *argv[])
+{
+ static int opt_debug_heap;
+
+ if (0 == argc) {
+ // query mode: return the value of the option
+ return opt_debug_heap;
+ }
+
+ if (1 == argc && argv && 0 == argv [0]) {
+ // help mode: set argv[0] to the text of the help message
+
+ static const char helpstr[] = {
+ "Enables the heap consistency checking on every memory allocation\n"
+ "and deallocation request.\n"
+ };
+
+ argv [0] = _RWSTD_CONST_CAST (char*, helpstr);
+
+ return 0;
+ }
+
+ // set mode: enable the option
+ opt_debug_heap = 1;
+
+ _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF
+ | _CRTDBG_CHECK_ALWAYS_DF
+ | _CRTDBG_LEAK_CHECK_DF);
+
+ return 0;
+}
+
+#endif // _MSC_VER && _DEBUG
+
+
+#ifdef _WIN32
+
+static int
+_rw_setopts_windows ()
+{
+ int nopts =
+ rw_setopts ("|-no-popups ",
+ _rw_opt_no_popups,
+ 0 /* detect missing handlers */);
+
+ if (1 > nopts) {
+ rw_fprintf (rw_stderr,
+ "%s:%d: rw_setopts() failed\n", __FILE__, __LINE__);
+ abort ();
+ return 1;
+ }
+
+# if defined (_MSC_VER) && defined (_DEBUG)
+
+ nopts =
+ rw_setopts ("|-debug-heap ",
+ _rw_opt_debug_heap,
+ 0 /* detect missing handlers */);
+
+ if (1 > nopts) {
+ rw_fprintf (rw_stderr,
+ "%s:%d: rw_setopts() failed\n", __FILE__, __LINE__);
+ abort ();
+ return 1;
+ }
+
+# endif // _MSC_VER && _DEBUG
+
+ return 0;
+}
+
+#endif // _WIN32
+
/************************************************************************/
_TEST_EXPORT int
@@ -995,6 +1109,10 @@
_rw_setopts_lines ();
+#ifdef _WIN32
+ _rw_setopts_windows ();
+#endif // _WIN32
+
int status = rw_runopts (argc, argv);
if (status)
Modified: stdcxx/trunk/util/charmap.cpp
URL: http://svn.apache.org/viewvc/stdcxx/trunk/util/charmap.cpp?rev=656615&r1=656614&r2=656615&view=diff
==============================================================================
--- stdcxx/trunk/util/charmap.cpp (original)
+++ stdcxx/trunk/util/charmap.cpp Thu May 15 05:14:47 2008
@@ -179,7 +179,7 @@
const unsigned char* const ch_end =
_RWSTD_REINTERPRET_CAST (const unsigned char*, to);
- size_t num_bytes;
+ size_t num_bytes = 0;
wchar_t ret = 0;
@@ -649,7 +649,7 @@
sym.c_str ());
}
- const unsigned long val = std::strtoul (&*++it, (char**)0, 16);
+ const unsigned long val = std::strtoul (&*it, (char**)0, 16);
if (_RWSTD_WCHAR_MAX <= val)
issue_diag (E_UCS, true, 0,
@@ -690,18 +690,24 @@
if (0 != codepage_) {
wchar_t ret[2] = {0};
- MultiByteToWideChar (codepage_, 0, encoding.c_str(), -1, ret, 2);
- if (ret[1] != 0)
+ const int res = MultiByteToWideChar (codepage_, 0,
+ encoding.c_str(), -1,
+ ret, 2);
+ if (!res && ERROR_INVALID_PARAMETER == GetLastError ()) {
+ // the required codepage conversion table is not installed
+ wc = convert_sym_to_ucs (sym_name);
+ return true;
+ }
+
+ if (!res || ret[1] != 0)
return false;
wc = ret[0];
return true;
- } else {
- wc = convert_sym_to_ucs (sym_name);
- return true;
}
- return false;
+ wc = convert_sym_to_ucs (sym_name);
+ return true;
#endif // _MSC_VER
}