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
long int m_maxConnections;
long int m_maxConnections;
wxLogMessage("%d connection(s) to exit",m_maxConnections);
}
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"))
}
if (pParser.Found("t"))
m_eventWorkersFailed = 0;
m_maxEventWorkers = 0;
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);