On 11/13/2013 09:28 AM, Wayne Stambaugh wrote:
> Fix committed in r4463.
> 
> ** Changed in: kicad
>        Status: New => Fix Committed
> 

tool_manager.cpp:

line 142 is using concatonation against a format string, this is a bug.

If you want formatting, we need wxString::Format() or the new std::string 
StrPrintf() or
similar.

If the format string is not going to be translated, then there are savings by 
going down
to an 8 bit string.  On linux, wxT() creates a 32 bit string, which takes up 4 
times the
memory of an 8 bit string.


Further consideration has us anticipating a transition to wx 3.x on all 
platforms, at
which point we can remove all wxT() instances, supposedly.  That also will be a 
transition
to 8 bit constant strings, one we have to wait for.

So there are two paths forward, both sensible, one you have to wait for.

The deciding factor for me is that aTool->GetName() returns

   const std::string&

so we start with an 8 bit string.

So I offer the attached patch.







=== modified file 'common/tool/tool_manager.cpp'
--- common/tool/tool_manager.cpp	2013-11-13 14:52:06 +0000
+++ common/tool/tool_manager.cpp	2013-11-13 16:42:35 +0000
@@ -139,8 +139,9 @@
     {
         if( !static_cast<TOOL_INTERACTIVE*>( aTool )->Init() )
         {
-            DisplayError( NULL, wxT( "Initialization of the %s tool failed" ) +
-                                     wxString( aTool->GetName().c_str(), wxConvUTF8 ) );
+            std::string msg = StrPrintf( "Initialization of the %s tool failed", aTool->GetName().c_str() );
+
+            DisplayError( NULL, wxString::FromUTF8( msg.c_str() ) );
 
             // Unregister the tool
             m_toolState.erase( aTool );

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to