Jump to content

Recommended Posts

  • Administrators
Posted (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 by Jon


 

  • Administrators
Posted

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 :unsure:


 

Posted (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 by Valik
  • Administrators
Posted

LPCTSTR szTemp = _tcstok((LPTSTR)szText, _T("\r\n") );


 

Posted

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?

Posted

Funny function Mandar! :huh2:

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 to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots.
So far, the Universe is winning.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...