#97, upstream fix, properties values containing escaped double quotes

This commit is contained in:
Basile Burg 2016-09-27 17:43:14 +02:00
parent a6e8f00f2b
commit 346c4d0e2f
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
1 changed files with 21 additions and 4 deletions

View File

@ -42,7 +42,7 @@ type
TSetGprEvent = procedure(reg: TCpuRegister; val: TCpuRegValue) of object; TSetGprEvent = procedure(reg: TCpuRegister; val: TCpuRegValue) of object;
// Makes a category for the general purpose registers in a project inspector // Makes a category for the general purpose registers in a object inspector
TInspectableGPR = class(TPersistent) TInspectableGPR = class(TPersistent)
private private
fRegisters: array[TCpuRegister] of TCpuRegValue; fRegisters: array[TCpuRegister] of TCpuRegValue;
@ -83,7 +83,7 @@ type
procedure setInspectableRegister(index: TCpuRegister; value: PtrUInt); procedure setInspectableRegister(index: TCpuRegister; value: PtrUInt);
end; end;
// Makes a category for the floating point coprocessor registers in a project inspector // Makes a category for the floating point coprocessor registers in a object inspector
TInspectableFPR = class(TPersistent) TInspectableFPR = class(TPersistent)
private private
fRegisters: array[TFpuRegister] of double; fRegisters: array[TFpuRegister] of double;
@ -100,7 +100,7 @@ type
procedure setInspectableRegister(index: TFpuRegister; value: double); procedure setInspectableRegister(index: TFpuRegister; value: double);
end; end;
// Makes a category for the SSE registers in a project inspector // Makes a category for the SSE registers in a object inspector
TInspectableSSER = class(TPersistent) TInspectableSSER = class(TPersistent)
// interpretation is a problem: // interpretation is a problem:
// 4 int ? 2 double ? 4 single ? ... // 4 int ? 2 double ? 4 single ? ...
@ -894,7 +894,24 @@ procedure parseGdbout(const str: string; var json: TJSONObject);
end; end;
'"': '"':
begin begin
node.Strings[idt] := r^.popFront^.takeUntil('"').yield; v := '';
r^.popFront;
while true do
begin
v += r^.takeUntil(['"','\']).yield;
if r^.front = '\' then
begin
v += '\';
r^.popFront;
if r^.front = '"' then
begin
r^.popFront;
v += '"';
end;
end else
break;
end;
node.Strings[idt] := v;
r^.popFront; r^.popFront;
end; end;
'{': '{':