Administrators Jon Posted May 23, 2011 Administrators Share 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 Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/ Link to comment Share on other sites More sharing options...
jvanegmond Posted May 23, 2011 Share 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 Link to comment Share on other sites More sharing options...
Administrators Jon Posted May 23, 2011 Author Administrators Share 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 Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/ Link to comment Share on other sites More sharing options...
Valik Posted May 23, 2011 Share 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 Link to comment Share on other sites More sharing options...
Richard Robertson Posted May 23, 2011 Share 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"? Link to comment Share on other sites More sharing options...
Administrators Jon Posted May 23, 2011 Author Administrators Share Posted May 23, 2011 The modifying bit. Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/ Link to comment Share on other sites More sharing options...
Administrators Jon Posted May 23, 2011 Author Administrators Share Posted May 23, 2011 LPCTSTR szTemp = _tcstok((LPTSTR)szText, _T("\r\n") ); Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/ Link to comment Share on other sites More sharing options...
Valik Posted May 23, 2011 Share 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? Link to comment Share on other sites More sharing options...
jvanegmond Posted May 24, 2011 Share 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 Link to comment Share on other sites More sharing options...
funkey Posted May 24, 2011 Share 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. Link to comment Share on other sites More sharing options...
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