#include <iostream>
#include <string>
using namespace std;
std::string transform_url(std::string url)
{
url += "aaa";
return url;
}
const char * get_scheme_from_url(const std::string & url)
{
return url.c_str();
}
std::string get_scheme_from_url(std::string && url) = delete;
const char* get_scheme(const std::string& url) {
auto&& new_url = transform_url(url); // WTF
return get_scheme_from_url(new_url); // still works, lol
}
int main() {
// your code goes here
cout << get_scheme("123") << endl; // uses freed memory
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RkOjpzdHJpbmcgdHJhbnNmb3JtX3VybChzdGQ6OnN0cmluZyB1cmwpCnsKCXVybCArPSAiYWFhIjsKCXJldHVybiB1cmw7Cn0KCmNvbnN0IGNoYXIgKiBnZXRfc2NoZW1lX2Zyb21fdXJsKGNvbnN0IHN0ZDo6c3RyaW5nICYgdXJsKQp7CglyZXR1cm4gdXJsLmNfc3RyKCk7Cn0KCnN0ZDo6c3RyaW5nIGdldF9zY2hlbWVfZnJvbV91cmwoc3RkOjpzdHJpbmcgJiYgdXJsKSA9IGRlbGV0ZTsKCmNvbnN0IGNoYXIqIGdldF9zY2hlbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCkgewogICAgYXV0byYmIG5ld191cmwgPSB0cmFuc2Zvcm1fdXJsKHVybCk7IC8vIFdURgogICAgcmV0dXJuIGdldF9zY2hlbWVfZnJvbV91cmwobmV3X3VybCk7IC8vIHN0aWxsIHdvcmtzLCBsb2wKfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgljb3V0IDw8IGdldF9zY2hlbWUoIjEyMyIpIDw8IGVuZGw7IC8vIHVzZXMgZnJlZWQgbWVtb3J5CglyZXR1cm4gMDsKfQ==