* Fix AV errors when taking pointers of empty strings.

git-svn-id: trunk@10302 -
This commit is contained in:
yury 2008-02-11 17:34:40 +00:00
parent 518f21a99e
commit d0aa4a7e2f
2 changed files with 9 additions and 10 deletions

View File

@ -375,7 +375,7 @@ begin
SetLength(Result, Info.DataSize-1) SetLength(Result, Info.DataSize-1)
else else
SetLength(Result, Info.DataSize); SetLength(Result, Info.DataSize);
GetData(Name,@Result[1],Info.DataSize,Info.RegData); GetData(Name,PChar(Result),Info.DataSize,Info.RegData);
end end
else else
result:=''; result:='';
@ -422,7 +422,7 @@ end;
procedure TRegistry.WriteExpandString(const Name, Value: string); procedure TRegistry.WriteExpandString(const Name, Value: string);
begin begin
PutData(Name, @Value[1], Length(Value),rdExpandString); PutData(Name, PChar(Value), Length(Value),rdExpandString);
end; end;
procedure TRegistry.WriteFloat(const Name: string; Value: Double); procedure TRegistry.WriteFloat(const Name: string; Value: Double);
@ -438,7 +438,7 @@ end;
procedure TRegistry.WriteString(const Name, Value: string); procedure TRegistry.WriteString(const Name, Value: string);
begin begin
PutData(Name, @Value[1], Length(Value), rdString); PutData(Name, PChar(Value), Length(Value), rdString);
end; end;
procedure TRegistry.MoveKey(const OldName, NewName: string; Delete: Boolean); procedure TRegistry.MoveKey(const OldName, NewName: string; Delete: Boolean);

View File

@ -15,10 +15,9 @@ end;
Function PrepKey(Const S : String) : pChar; Function PrepKey(Const S : String) : pChar;
begin begin
If (S[1]<>'\') then Result:=PChar(S);
Result:=@S[1] If Result^='\' then
else Inc(Result);
Result:=@S[2];
end; end;
Function RelativeKey(Const S : String) : Boolean; Function RelativeKey(Const S : String) : Boolean;
@ -71,7 +70,7 @@ Var
RD : DWord; RD : DWord;
begin begin
P := @Name[1]; P := PChar(Name);
If RegQueryValueExA(fCurrentKey,P,Nil, If RegQueryValueExA(fCurrentKey,P,Nil,
@RD,Buffer,lpdword(@BufSize))<>ERROR_SUCCESS Then @RD,Buffer,lpdword(@BufSize))<>ERROR_SUCCESS Then
Result:=-1 Result:=-1
@ -97,7 +96,7 @@ Var
P: PChar; P: PChar;
begin begin
P:=@ValueName[1]; P:=PChar(ValueName);
With Value do With Value do
Result:=RegQueryValueExA(fCurrentKey,P,Nil,lpdword(@RegData),Nil,lpdword(@DataSize))=ERROR_SUCCESS; Result:=RegQueryValueExA(fCurrentKey,P,Nil,lpdword(@RegData),Nil,lpdword(@DataSize))=ERROR_SUCCESS;
If Not Result Then If Not Result Then
@ -340,7 +339,7 @@ begin
rdInteger : RegDataType:=REG_DWORD; rdInteger : RegDataType:=REG_DWORD;
rdBinary : RegDataType:=REG_BINARY; rdBinary : RegDataType:=REG_BINARY;
end; end;
P:=@Name[1]; P:=PChar(Name);
Result:=RegSetValueExA(fCurrentKey,P,0,RegDataType,Buffer,BufSize)=ERROR_SUCCESS; Result:=RegSetValueExA(fCurrentKey,P,0,RegDataType,Buffer,BufSize)=ERROR_SUCCESS;
end; end;