diff options
| author | George Hazan <george.hazan@gmail.com> | 2024-06-03 14:32:00 +0300 | 
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2024-06-03 14:32:00 +0300 | 
| commit | 9b2c5d67f7f00eed319116d99895510e5d5c922e (patch) | |
| tree | 6007bb7a1580c91132737b427cf8c5674b97f0df | |
| parent | 2e63945f14636054f435aca9e9d4dd2c032f36e6 (diff) | |
fixes #4447 (ICQ: некоторые картинки не грузятся)
| -rw-r--r-- | protocols/ICQ-WIM/src/server.cpp | 14 | ||||
| -rw-r--r-- | protocols/ICQ-WIM/src/utils.cpp | 13 | 
2 files changed, 13 insertions, 14 deletions
| diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index 54a1d7d52e..c2ef85ff90 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -175,14 +175,8 @@ IcqFileInfo *CIcqProto::RetrieveFileInfo(MCONTACT hContact, const CMStringW &wsz  bool CIcqProto::CheckFile(MCONTACT hContact, CMStringW &wszText, IcqFileInfo *&pFileInfo)
  {
 -	bool bRet;
  	CMStringW wszUrl;
 -	int idx = wszText.Find(' ');
 -	if (idx == -1)
 -		bRet = fileText2url(wszText, &wszUrl);
 -	else
 -		bRet = fileText2url(wszText.Mid(0, idx), &wszUrl);
 -	if (!bRet)
 +	if (!fileText2url(wszText, &wszUrl))
  		return false;
  	pFileInfo = nullptr;
 @@ -192,9 +186,9 @@ bool CIcqProto::CheckFile(MCONTACT hContact, CMStringW &wszText, IcqFileInfo *&p  	if (!pFileInfo)
  		return false;
 -	if (idx != -1) {
 -		pFileInfo->szOrigUrl = wszText.Mid(0, idx);
 -		wszText.Delete(0, idx + 1);
 +	if (wszUrl != wszText) {
 +		pFileInfo->szOrigUrl = wszUrl;
 +		wszText.Delete(0, wszUrl.GetLength() + 1);
  	}
  	else {
  		pFileInfo->szOrigUrl = wszText;
 diff --git a/protocols/ICQ-WIM/src/utils.cpp b/protocols/ICQ-WIM/src/utils.cpp index e11b1bb17c..2c36c3fb86 100644 --- a/protocols/ICQ-WIM/src/utils.cpp +++ b/protocols/ICQ-WIM/src/utils.cpp @@ -271,16 +271,21 @@ bool fileText2url(const CMStringW &wszText, CMStringW *res)  	if (!mir_wstrncmp(wszText, L"https://files.icq.net/get/", 26)) {
  		if (res)
  			*res = wszText.Mid(26);
 -		return true;
  	}
 -
 -	if (!mir_wstrncmp(wszText, L"http://files.icq.net/get/", 25)) {
 +	else if (!mir_wstrncmp(wszText, L"http://files.icq.net/get/", 25)) {
  		if (res)
  			*res = wszText.Mid(25);
  		return true;
  	}
 +	else return false;
 +
 +	if (res) {
 +		int idx = res->FindOneOf(L" \r\n\t");
 +		if (idx != -1)
 +			*res = res->Mid(0, idx);
 +	}
 -	return false;
 +	return true;
  }
  /////////////////////////////////////////////////////////////////////////////////////////
 | 
