Administrators Jon Posted May 23, 2011 Administrators Posted May 23, 2011 (edited) Is this one of the worst bugs ever or what? #1844 It took me a while to see what the bug was saying...eeeeek. Edit: IIRC SplashTextOn was one of the very early pieces of code. But still.... Edited May 23, 2011 by Jon
jvanegmond Posted May 23, 2011 Posted May 23, 2011 If the variant class still has the operators overloaded, I can see why someone could make an easy mistake like that. github.com/jvanegmond
Administrators Jon Posted May 23, 2011 Author Administrators Posted May 23, 2011 I've not looked at the code yet but it's almost certainly someone casting away a string's const-ness. I'm pretty sure it wasn't me as well so I get to be preachy about it too
Valik Posted May 23, 2011 Posted May 23, 2011 (edited) If it's casting away const it's doing so using the C cast method: Find all "const_cast", Subfolders, Find Results 1, "Entire Solution" C:\Data\My Programs\C++\Autoit\autoit\src\script_inet.cpp(336): // const_cast is used here because the function expects LPVOID. The casts are safe, though. C:\Data\My Programs\C++\Autoit\autoit\src\script_inet.cpp(337): InternetSetOption(hInet, INTERNET_OPTION_PROXY_USERNAME, const_cast<LPTSTR>(sProxyUser.c_str()), static_cast<DWORD>(sProxyUser.length() + 1) ); C:\Data\My Programs\C++\Autoit\autoit\src\script_inet.cpp(338): InternetSetOption(hInet, INTERNET_OPTION_PROXY_PASSWORD, const_cast<LPTSTR>(sProxyPass.c_str()), static_cast<DWORD>(sProxyPass.length() + 1)); C:\Data\My Programs\C++\Autoit\autoit\src\CreateProcessSimple.cpp(206): ProfileInfo.lpUserName = const_cast<LPWSTR>(lpUsername); C:\Data\My Programs\C++\Autoit\autoit\src\script_inet.cpp(336): // const_cast is used here because the function expects LPVOID. The casts are safe, though. C:\Data\My Programs\C++\Autoit\autoit\src\script_inet.cpp(337): InternetSetOption(hInet, INTERNET_OPTION_PROXY_USERNAME, const_cast<LPTSTR>(sProxyUser.c_str()), static_cast<DWORD>(sProxyUser.length() + 1) ); C:\Data\My Programs\C++\Autoit\autoit\src\script_inet.cpp(338): InternetSetOption(hInet, INTERNET_OPTION_PROXY_PASSWORD, const_cast<LPTSTR>(sProxyPass.c_str()), static_cast<DWORD>(sProxyPass.length() + 1)); C:\Data\My Programs\C++\Autoit\autoit\src\CreateProcessSimple.cpp(206): ProfileInfo.lpUserName = const_cast<LPWSTR>(lpUsername); Matching lines: 8 Matching files: 4 Total files searched: 294 I wrote all those const_cast and all of them are correct. My code is const-correct, the C API we are using is not, thus I must cast away const. Edited May 23, 2011 by Valik
Richard Robertson Posted May 23, 2011 Posted May 23, 2011 Is that worst as in the bug report being difficult or worst as in "why is the splash modifying the variable"?
Administrators Jon Posted May 23, 2011 Author Administrators Posted May 23, 2011 LPCTSTR szTemp = _tcstok((LPTSTR)szText, _T("\r\n") );
Valik Posted May 23, 2011 Posted May 23, 2011 Ugh. _tcstok() modifies the string, that's why it doesn't take a fucking constant. Sigh. Wonder how many more stupid lines like that are in the code?
jvanegmond Posted May 24, 2011 Posted May 24, 2011 (edited) $input = "Line one" & @CRLF & "Line two" $result = StringGetFirstLine($input) MsgBox(0, "", $result) Func StringGetFirstLine($str) SplashTextOn("", $str, -1, -1, -1, -1, 32 + 1) SplashOff() Return $str EndFunc Amidoingitrite? Edited May 24, 2011 by Manadar github.com/jvanegmond
funkey Posted May 24, 2011 Posted May 24, 2011 Funny function Mandar! Func StringGetFirstLine($str) SplashTextOn("", $str, -10, -10, 0, 0, 32 + 1) SplashOff() Return $str EndFunc Now it is perfect! Programming today is a race between software engineers striving tobuild bigger and better idiot-proof programs, and the Universetrying to produce bigger and better idiots.So far, the Universe is winning.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now