void remove_openid_vars(params_t& params) { map<string,string>::iterator iter, iter_next; for(iter = params.begin(); iter != params.end(); ) { iter_next = iter; ++iter_next; string param_key(iter->first); // if starts with openid. or modauthopenid. (for the nonce) or openid_identifier (the login) remove it if((param_key.substr(0, 7) == "openid." || param_key.substr(0, 14) == "modauthopenid." || param_key == "openid_identifier")) { params.erase(iter); // invalidates iter, but its successor iter_next is still valid } iter = iter_next; } };
void remove_openid_vars(params_t& params) { map<string,string>::iterator iter; for(iter = params.begin(); iter != params.end(); iter++) { string param_key(iter->first); // if starts with openid. or modauthopenid. (for the nonce) or openid_identifier (the login) remove it if((param_key.substr(0, 7) == "openid." || param_key.substr(0, 14) == "modauthopenid." || param_key == "openid_identifier")) { params.erase(param_key); // stupid map iterator screws up if we just continue the iteration... // so recursion to the rescue - we'll delete them one at a time remove_openid_vars(params); return; } } };