Excecuting TIdFTP.Get() results in an access violation in D5. See attached call stack. The call to Get is Get('cashmondat.zip', 'cashmondat.zip', True, false).
TIdTextEncoding.GetByteCount(TIdWideChars, Integer, Integer) is being passed an invalid ACharCount parameter value. The corrupted value would have to be coming from the call to Length(AChars) in TIdTextEncoding.GetByteCount(TIdWideChars). TIdWideChars is an array of WideChar in D5, and the call stack shows valid contents for the array in the AChars parameter of GetByteCount().
Stepping inside the CPU window into:
Result := GetByteCount(@AChars[ACharIndex], ACharCount);
call dword ptr [ebx] uses a wrong address.
Previous calls that worked ok used EAX=73EB8, now it uses 6DDAFF instead. This results to the wrong value in EBX.
Excecuting
TIdFTP.Get()results in an access violation in D5. See attached call stack. The call to Get isGet('cashmondat.zip', 'cashmondat.zip', True, false).TIdTextEncoding.GetByteCount(TIdWideChars, Integer, Integer)is being passed an invalidACharCountparameter value. The corrupted value would have to be coming from the call toLength(AChars)inTIdTextEncoding.GetByteCount(TIdWideChars).TIdWideCharsis anarray of WideCharin D5, and the call stack shows valid contents for the array in theACharsparameter ofGetByteCount().Stepping inside the CPU window into:
Result := GetByteCount(@AChars[ACharIndex], ACharCount);call dword ptr [ebx]uses a wrong address.Previous calls that worked ok used
EAX=73EB8, now it uses6DDAFFinstead. This results to the wrong value inEBX.