Make variable containing port number an ushort in the sockets sample.

A port number is an unsigned short, not long, so don't make it long just
because wxCmdLineParser doesn't provide a convenient way to get the value of
an unsigned short option (it would be nice if it did...).

This fixes the problem with using "%d" format specifier with a long variable
as this resulted in an assert under LP64 systems.

See #14311.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-05-16 15:10:05 +00:00
parent c4239f1920
commit f919ae3477

View File

@ -142,7 +142,7 @@ private:
long int m_maxConnections;
long m_port;
unsigned short m_port;
wxTimer mTimer;
};
@ -282,9 +282,18 @@ Server::OnCmdLineParsed(wxCmdLineParser& pParser)
wxLogMessage("%d connection(s) to exit",m_maxConnections);
}
if (pParser.Found("p",&m_port))
long port;
if (pParser.Found("p", &port))
{
wxLogMessage("%d connection(s) to exit",m_maxConnections);
if ( port <= 0 || port > USHRT_MAX )
{
wxLogError("Invalid port number %ld, must be in 0..%u range.",
port, USHRT_MAX);
return false;
}
m_port = static_cast<unsigned short>(port);
wxLogMessage("Will listen on port %u", m_port);
}
if (pParser.Found("t"))
@ -331,7 +340,7 @@ bool Server::OnInit()
m_eventWorkersFailed = 0;
m_maxEventWorkers = 0;
wxLogMessage("Server listening at port %d, waiting for connections", m_port);
wxLogMessage("Server listening at port %u, waiting for connections", m_port);
return true;
}