Use the character based overload for std::string::find.

std::string::find has a character based overload as can be seen here
(4th oveload): http://www.cplusplus.com/reference/string/string/find/

Use that instead of constantly allocating temporary strings.
This commit is contained in:
Alin Rus 2018-01-11 21:40:51 +01:00
parent 1d2eaba300
commit a73aab7cd8
5 changed files with 15 additions and 15 deletions

View File

@ -305,8 +305,8 @@ static void MutateTxAddOutPubKey(CMutableTransaction& tx, const std::string& str
bool bScriptHash = false; bool bScriptHash = false;
if (vStrInputParts.size() == 3) { if (vStrInputParts.size() == 3) {
std::string flags = vStrInputParts[2]; std::string flags = vStrInputParts[2];
bSegWit = (flags.find("W") != std::string::npos); bSegWit = (flags.find('W') != std::string::npos);
bScriptHash = (flags.find("S") != std::string::npos); bScriptHash = (flags.find('S') != std::string::npos);
} }
if (bSegWit) { if (bSegWit) {
@ -367,8 +367,8 @@ static void MutateTxAddOutMultiSig(CMutableTransaction& tx, const std::string& s
bool bScriptHash = false; bool bScriptHash = false;
if (vStrInputParts.size() == numkeys + 4) { if (vStrInputParts.size() == numkeys + 4) {
std::string flags = vStrInputParts.back(); std::string flags = vStrInputParts.back();
bSegWit = (flags.find("W") != std::string::npos); bSegWit = (flags.find('W') != std::string::npos);
bScriptHash = (flags.find("S") != std::string::npos); bScriptHash = (flags.find('S') != std::string::npos);
} }
else if (vStrInputParts.size() > numkeys + 4) { else if (vStrInputParts.size() > numkeys + 4) {
// Validate that there were no more parameters passed // Validate that there were no more parameters passed
@ -447,8 +447,8 @@ static void MutateTxAddOutScript(CMutableTransaction& tx, const std::string& str
bool bScriptHash = false; bool bScriptHash = false;
if (vStrInputParts.size() == 3) { if (vStrInputParts.size() == 3) {
std::string flags = vStrInputParts.back(); std::string flags = vStrInputParts.back();
bSegWit = (flags.find("W") != std::string::npos); bSegWit = (flags.find('W') != std::string::npos);
bScriptHash = (flags.find("S") != std::string::npos); bScriptHash = (flags.find('S') != std::string::npos);
} }
if (scriptPubKey.size() > MAX_SCRIPT_SIZE) { if (scriptPubKey.size() > MAX_SCRIPT_SIZE) {

View File

@ -85,11 +85,11 @@ static void JSONErrorReply(HTTPRequest* req, const UniValue& objError, const Uni
//entries from config file. //entries from config file.
static bool multiUserAuthorized(std::string strUserPass) static bool multiUserAuthorized(std::string strUserPass)
{ {
if (strUserPass.find(":") == std::string::npos) { if (strUserPass.find(':') == std::string::npos) {
return false; return false;
} }
std::string strUser = strUserPass.substr(0, strUserPass.find(":")); std::string strUser = strUserPass.substr(0, strUserPass.find(':'));
std::string strPass = strUserPass.substr(strUserPass.find(":") + 1); std::string strPass = strUserPass.substr(strUserPass.find(':') + 1);
for (const std::string& strRPCAuth : gArgs.GetArgs("-rpcauth")) { for (const std::string& strRPCAuth : gArgs.GetArgs("-rpcauth")) {
//Search for multi-user login/pass "rpcauth" from config //Search for multi-user login/pass "rpcauth" from config
@ -132,8 +132,8 @@ static bool RPCAuthorized(const std::string& strAuth, std::string& strAuthUserna
boost::trim(strUserPass64); boost::trim(strUserPass64);
std::string strUserPass = DecodeBase64(strUserPass64); std::string strUserPass = DecodeBase64(strUserPass64);
if (strUserPass.find(":") != std::string::npos) if (strUserPass.find(':') != std::string::npos)
strAuthUsernameOut = strUserPass.substr(0, strUserPass.find(":")); strAuthUsernameOut = strUserPass.substr(0, strUserPass.find(':'));
//Check if authorized under single-user field //Check if authorized under single-user field
if (TimingResistantEqual(strUserPass, strRPCUserColonPass)) { if (TimingResistantEqual(strUserPass, strRPCUserColonPass)) {

View File

@ -423,8 +423,8 @@ static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart)
{ {
uint256 txid; uint256 txid;
int32_t nOutput; int32_t nOutput;
std::string strTxid = uriParts[i].substr(0, uriParts[i].find("-")); std::string strTxid = uriParts[i].substr(0, uriParts[i].find('-'));
std::string strOutput = uriParts[i].substr(uriParts[i].find("-")+1); std::string strOutput = uriParts[i].substr(uriParts[i].find('-')+1);
if (!ParseInt32(strOutput, &nOutput) || !IsHex(strTxid)) if (!ParseInt32(strOutput, &nOutput) || !IsHex(strTxid))
return RESTERR(req, HTTP_BAD_REQUEST, "Parse error"); return RESTERR(req, HTTP_BAD_REQUEST, "Parse error");

View File

@ -213,7 +213,7 @@ UniValue RPCConvertNamedValues(const std::string &strMethod, const std::vector<s
UniValue params(UniValue::VOBJ); UniValue params(UniValue::VOBJ);
for (const std::string &s: strParams) { for (const std::string &s: strParams) {
size_t pos = s.find("="); size_t pos = s.find('=');
if (pos == std::string::npos) { if (pos == std::string::npos) {
throw(std::runtime_error("No '=' in named argument '"+s+"', this needs to be present for every argument (even if it is empty)")); throw(std::runtime_error("No '=' in named argument '"+s+"', this needs to be present for every argument (even if it is empty)"));
} }

View File

@ -516,7 +516,7 @@ UniValue setban(const JSONRPCRequest& request)
CNetAddr netAddr; CNetAddr netAddr;
bool isSubnet = false; bool isSubnet = false;
if (request.params[0].get_str().find("/") != std::string::npos) if (request.params[0].get_str().find('/') != std::string::npos)
isSubnet = true; isSubnet = true;
if (!isSubnet) { if (!isSubnet) {